Python 如何在scipy中创建评级csr_矩阵?

Python 如何在scipy中创建评级csr_矩阵?,python,scipy,sparse-matrix,Python,Scipy,Sparse Matrix,我有一个以下格式的csv文件: 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']包含用户ID,

我有一个以下格式的csv文件:

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']包含用户ID,列['movie']包含电影ID,列['ratings']包含以下分级:

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:无效形状”

请帮忙

scipy.sparse.csr_matrix([column['rating'],column['user'],column['movie']])
您有一个元组,由1xn维列表和2xn维列表组成,这两个列表将不起作用

附言:为了读取数据,你应该试试熊猫:-)()。最简单的例子:

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())
按此方式检查:

df = pd.read_csv('f:\\train.csv', usecols=[0, 1, 2], names=['userId ', 
                   'movieID', 'ratings'], skiprows=1)
from scipy.sparse import csr_matrix
utility_csr = csr_matrix((df.ratings, (df.userId , df.movieID)))

这不会为行作为用户、列作为电影和[行,列]作为评级创建稀疏矩阵?我们如何创建一个稀疏矩阵,其中用户为行,电影为列,评级为[row,column]处的值?原始命令“mat=scipy.sparse.csr_matrix((column['rating'],(column['user']、column['movie'])是正确的,但列['user']、列['rating']和列['movie]除外在使用函数之前要转换为数组。