2016-11-14 3 views
3

У меня есть файл CSV в следующем формате:Как создать рейтинг csr_matrix в scipy?

userId movieId rating timestamp 
1  31  2.5 1260759144 
2  10  4  835355493 
3  1197 5  1298932770 
4  10  4  949810645 

Я хочу построить разреженную матрицу с рядами как USERID и столбцов, как movieID. Я сохранил все данные в качестве словаря с именем «column», где столбец ['user'] содержит идентификаторы пользователей, столбец ['movie'] имеет идентификаторы фильмов, а столбцы ['рейтинги'] имеют рейтинги следующим образом:

f = open('ratings.csv','rb') 
reader = csv.reader(f) 
headers = ['user','movie','rating','timestamp'] 
column = {} 
for h in headers: 
    column[h] = [] 
for row in reader: 
    for h, v in zip(headers, row): 
     column[h].append(float(v)) 

Когда я называю разреженную матрицу-функцию, как:

mat = scipy.sparse.csr_matrix((column['rating'],(column['user'],column['movie']))) 

Я получаю "TypeError: недопустимую форму"

Пожалуйста, помогите

ответ

1
scipy.sparse.csr_matrix([column['rating'],column['user'],column['movie']]) 

У вас был кортеж, состоящий из 1xn-мерного списка и двумерный список, который не будет работать.

P.S .: Для чтения данных вы должны попробовать Pandas :-) (http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_csv.html). Минимальный пример:

import pandas as pd 

# Setup a dataframe from the CSV and make it sparse 
df = pd.read_csv('ratings.csv') 
df = df.to_sparse(fill_value=0) 
print(df.head()) 
+0

Это не создает разреженную матрицу для строки, как пользователей, столбцов в качестве фильмов и [строки, столбца] в качестве оценки? Как мы можем создать разреженную матрицу с пользователем в виде строк, фильмов в виде столбца и рейтинга в качестве значения в [строке, столбце]? – shane

+0

Исходная команда «mat = scipy.sparse.csr_matrix ((столбец ['rating'], (столбец ['user'], column ['movie'])))" был правильным, за исключением столбца ['user'], столбец ['rating'] и столбец ['movie'] должны были быть преобразованы в массив перед использованием функции. – Alice

Смежные вопросы