[英]Pandas dataframe to sparse representation
我有一個密集的熊貓數據框。 我想從中得到一個稀疏數據幀,其中原始數據幀的每個值將是結果稀疏數據幀中1的列。
例:
原始df:
a b
0 5 3
1 2 6
稀疏df:
(0,3): 1
(0,5): 1
(1,2): 1
(1,6): 1
我不在乎是否發生碰撞或碰撞次數為1
然后,我將此df傳遞給sklearn.linear_model.LogisticRegression擬合函數(我不確定此處將接受哪種稀疏矩陣)
什么是合適的方法?
我可以手動創建它(在行中重復),但是數據幀很大,因此我試圖找到一種有效的方法。
謝謝
基於@Dark注釋:
mlb = sklearn.preprocessing.MultiLabelBinarizer(sparse_output = True)
result = mlb.fit_transform(np.array[df])
fit_transform需要可迭代的迭代: 此處解釋
比@Dark提出的解決方案快得多的解決方案是使用csr_matrix構造函數,但是在有冗余的情況下可以總結出這些,對於我的情況是可以的:
nrow = len(df.index)
ncol = len(df.columns)
indices = df.values.flatten()
data = np.full_like(indices, 1)
nelement = len(indices)
indptr = range(0, nelement+ncol, ncol)
result = csr_matrix((data, indices, indptr))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.