Я создаю разреженную матрицу, которая отлично работает
X = csr_matrix(
(df["rating"], (item_idx, user_idx)),
shape=(M, N)
)
Но для упрощения где (примерно эквивалентно)
item_idx ~= df[item_id]
Я делаю следующее
csr_matrix(
(df["points"],
(df["user_id"], df["item_id"])])),
shape=(N, M)
)
который возвращает ошибку об индексе и размере разреженной матрицы. Обратите внимание, что эта ошибка возникает, даже если «id» сопоставлен точно с количеством уникальных имен.
ValueError: axis 0 index 99 exceeds matrix dimension 97
Может ли кто-нибудь помочь мне понять, почему здесь возвращается ошибка индекса, если изменяется только порядок значений? диапазон соответствует. Связано ли это с разреженностью?
MRE:
df = pd.DataFrame({
"user_id": np.random.randint(0, 75, 300),
"item_id": np.random.randint(0, 100, 300),
"rating": np.random.randint(0, 10, 300)
})
def mappings(df, user_id, item_id):
user_id_idx_mapping = dict(zip( df[user_id].unique(), range(df[user_id].nunique()) ))
user_idx_id_mapping = dict(zip( range(df[user_id].nunique()), df[user_id].unique() ))
item_id_idx_mapping = dict(zip( df[item_id].unique(), range(df[item_id].nunique()) ))
item_idx_id_mapping = dict(zip( range(df[item_id].nunique()), df[item_id].unique() ))
return user_id_idx_mapping, user_idx_id_mapping, item_id_idx_mapping, item_idx_id_mapping
user_id_idx_mapping, user_idx_id_mapping, item_id_idx_mapping, item_idx_id_mapping = mappings(df, "user_id", "item_id")
N = df["user_id"].nunique()
M = df["item_id"].nunique()
user_idx = [user_id_idx_mapping[int(j)] for j in df["user_id"]]
item_idx = [item_id_idx_mapping[int(l)] for l in df["item_id"]]
true = dict(zip([int(k) for k in list(df["user_id"].values)], user_idx))
X_works = csr_matrix(
(df["rating"], (item_idx, user_idx)),
shape=(M, N)
)
X_doesnt = csr_matrix(
(df["rating"], (df["item_id"], df["user_id"])),
shape=(M, N)
)
print(true)
Подробнее здесь: https://stackoverflow.com/questions/792 ... -dataframe
Почему scipy.sparse_matrix не принимает значения непосредственно из кадра данных? ⇐ Python
Программы на Python
1734444694
Anonymous
Я создаю разреженную матрицу, которая отлично работает
X = csr_matrix(
(df["rating"], (item_idx, user_idx)),
shape=(M, N)
)
Но для упрощения где (примерно эквивалентно)
item_idx ~= df[item_id]
Я делаю следующее
csr_matrix(
(df["points"],
(df["user_id"], df["item_id"])])),
shape=(N, M)
)
который возвращает ошибку об индексе и размере разреженной матрицы. Обратите внимание, что эта ошибка возникает, даже если «id» сопоставлен точно с количеством уникальных имен.
ValueError: axis 0 index 99 exceeds matrix dimension 97
Может ли кто-нибудь помочь мне понять, почему здесь возвращается ошибка индекса, если изменяется только порядок значений? диапазон соответствует. Связано ли это с разреженностью?
MRE:
df = pd.DataFrame({
"user_id": np.random.randint(0, 75, 300),
"item_id": np.random.randint(0, 100, 300),
"rating": np.random.randint(0, 10, 300)
})
def mappings(df, user_id, item_id):
user_id_idx_mapping = dict(zip( df[user_id].unique(), range(df[user_id].nunique()) ))
user_idx_id_mapping = dict(zip( range(df[user_id].nunique()), df[user_id].unique() ))
item_id_idx_mapping = dict(zip( df[item_id].unique(), range(df[item_id].nunique()) ))
item_idx_id_mapping = dict(zip( range(df[item_id].nunique()), df[item_id].unique() ))
return user_id_idx_mapping, user_idx_id_mapping, item_id_idx_mapping, item_idx_id_mapping
user_id_idx_mapping, user_idx_id_mapping, item_id_idx_mapping, item_idx_id_mapping = mappings(df, "user_id", "item_id")
N = df["user_id"].nunique()
M = df["item_id"].nunique()
user_idx = [user_id_idx_mapping[int(j)] for j in df["user_id"]]
item_idx = [item_id_idx_mapping[int(l)] for l in df["item_id"]]
true = dict(zip([int(k) for k in list(df["user_id"].values)], user_idx))
X_works = csr_matrix(
(df["rating"], (item_idx, user_idx)),
shape=(M, N)
)
X_doesnt = csr_matrix(
(df["rating"], (df["item_id"], df["user_id"])),
shape=(M, N)
)
print(true)
Подробнее здесь: [url]https://stackoverflow.com/questions/79287991/why-does-scipy-sparse-matrix-not-accept-values-directly-from-a-dataframe[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия