3
創建一個稀疏矩陣I具有包含表示具有以下格式的稀疏矩陣數據的文本文件:如何手動在Python
0 234 345
0 236
0 345 365 465
0 12 35 379
的數據被用於分類任務,並且每個行可以被認爲是特徵矢量。每行中的第一個值代表一個標籤,其後的值代表單個功能的存在。
我正試圖用這些值創建一個稀疏矩陣(用於scikit學習機器學習任務)。我發現並閱讀了scipy.sparse documentation,但我無法理解如何用這樣的源數據遞增地構建稀疏矩陣。
到目前爲止,我發現的例子展示瞭如何獲取一個密集矩陣並將其轉換,或者如何創建一個具有設計數據的本地稀疏矩陣,但沒有任何示例幫助我在這裏。我確實找到了這個相關的SO問題(Building and updating a sparse matrix in python using scipy),但是該例子假定您知道最大的COL,ROW大小,我不這樣做,因此數據類型似乎不合適。
到目前爲止,我有以下代碼讀取文檔並解析值到的東西,似乎是合理的:
def get_sparse_matrix():
matrix = []
with open("data.dat", 'r') as f:
for i, line in enumerate(f):
row = line.strip().split()
label = row[0]
features = entry[1:]
matrix.append([(i, col) for col in features])
sparse_matrix = #magic happens here
return sparse_matrix
所以問題是,
- 什麼是適當的稀疏矩陣類型在這裏使用?
- 我正在用正確的方向使用我的代碼嗎?
任何幫助,非常感謝。
我不明白的格式,矩陣中的每個元素都需要'row','col'和'value'。 「價值」信息在哪裏?要增量創建稀疏矩陣,可以使用:http://docs.scipy.org/doc/scipy-0.14.0/reference/generated/scipy.sparse.dok_matrix.html#scipy.sparse.dok_matrix – HYRY
如果需要有一個值,那麼它可能是1或True。這說明了嗎? –
@HYRY在dok_matrix上提示提示,但是在初始化dok_matrix時不需要知道列的總數嗎?我的問題的一部分是我不能可靠地知道最大COL值是多少。我可以編寫一個腳本來查找給定數據文件的最大值,但認爲可能有一些現有的scipy稀疏矩陣數據類型,不需要我指定。 –