0

我試圖顯示一個非常稀疏矩陣與預計算距離值tsne但我有麻煩它。sklearn tsne用稀疏矩陣

它歸結爲:

row = np.array([0, 2, 2, 0, 1, 2]) 
col = np.array([0, 0, 1, 2, 2, 2]) 
distances = np.array([.1, .2, .3, .4, .5, .6]) 
X = csc_matrix((distances, (row, col)), shape=(3, 3)) 
Y = TSNE(metric='precomputed').fit_transform(X) 

不過,我得到這個錯誤:

TypeError: A sparse matrix was passed, but dense data is required for method="barnes_hut". Use X.toarray() to convert to a dense numpy array if the array is small enough for it to fit in memory. Otherwise consider dimensionality reduction techniques (e.g. TruncatedSVD)

我不想執行TruncatedSVD因爲我已經計算出的距離。

如果我改變method='exact',我得到另一個錯誤(這有點可疑):

NotImplementedError: >= and <= don't work with 0.

注:我的距離矩陣是100K左右X 100K大約1M非零值。

任何想法?

回答

0

我想這應該解決您的問題:

X = csr_matrix((distances, (row, col)), shape=(3, 3)).todense() 

如果你真的換貨csc_matrix

+0

的csr_matrix而是我認爲這是明顯的,我需要稀疏矩陣.. todense產生一個的MemoryError。 –