python - 如何在 scipy 中创建评级 csr_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”的字典,其中 column['user'] 包含用户 ID,column['movie'] 包含电影 ID,column['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'])))

我收到“类型错误:无效形状”

请帮忙

最佳答案

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

你有一个由 1xn 维列表和 2xn 维列表组成的元组,这将不起作用。

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())

关于python - 如何在 scipy 中创建评级 csr_matrix?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40587251/

相关文章:

python - 为什么 python 整数缓存范围 [-5, 256] 不能在所有平台上以类似的方式工作?

python - 使用 numpy 数组的维度作为 if 语句 python

python - 将2个不等长的列表映射到字典

Python:如何优化函数参数?

sparse-matrix - Bigtable中稀疏表的稀疏和目的是什么?

python - pysparse安装ubuntu

python - python中稀疏矩阵的矩阵幂

python - pytest.raises 失败 : DID NOT RAISE with try/except

python - 在 C 中解析一个字符串并将其保存到一个结构数组中

python - 使用非标准化数据在 Scipy 中进行 Kolmogorov-Smirnov 测试