繁体   English   中英

将Pandas DataFrame转换为稀疏矩阵

[英]Converting Pandas DataFrame to sparse matrix

这是我的代码:

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)

我的数据由movie_id和user_id两列组成。

 user_id      movie_id

   5             1000 

   6             1007 

我想将数据转换为稀疏矩阵。 我首先创建了一个交互矩阵,其中行指示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_iduser_id ),则建议使用COO格式进行创建。

您可以将其转换为稀疏格式,如下所示:

import scipy
sparse_mat = scipy.sparse.coo_matrix((t.values, (df.movie_id, df.user_id)))

重要的是,请注意构造函数如何通过将影片ID和用户ID都作为数据参数传递而给出稀疏矩阵的隐式形状。
此外,您可以将此矩阵转换为所需的任何其他稀疏格式,例如CSR。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM