Akh*_*der 2 python recommendation-engine dataframe python-3.x pandas
这是我的代码:
data=pd.get_dummies(data['movie_id']).groupby(data['user_id']).apply(max)
df=pd.DataFrame(data)
replace=df.replace(0,np.NaN)
t=replace.fillna(-1)
sparse=sp.csr_matrix(t.values)
Run Code Online (Sandbox Code Playgroud)
我的数据由两列组成,即 movie_id 和 user_id。
user_id movie_id
5 1000
6 1007
Run Code Online (Sandbox Code Playgroud)
我想将数据转换为稀疏矩阵。我首先创建了一个交互矩阵,其中行表示 user_id,列表示 movie_id,其中正交互为 +1,负交互为 -1。然后我使用 scipy 将其转换为稀疏矩阵。我的结果如下所示:
(0,0)-1
(0,1) -1
(0,2)1
但我真正想要的是这样的:
(1000,0)-1
(1000,1)1
(1007,0)-1
任何帮助,将不胜感激。
如果您同时拥有行索引和列索引(在您的情况下分别为movie_id和user_id),建议使用 COO 格式进行创建。
您可以将其转换为稀疏格式,如下所示:
import scipy
sparse_mat = scipy.sparse.coo_matrix((t.values, (df.movie_id, df.user_id)))
Run Code Online (Sandbox Code Playgroud)
重要的是,请注意构造函数如何通过将电影 ID 和用户 ID 作为数据参数传递来给出稀疏矩阵的隐式形状。
此外,您可以将此矩阵转换为您想要的任何其他稀疏格式,例如 CSR。