在我目前的方法中,我有
from scipy.sparse import csr_matrix
from sklearn.cluster import AgglomerativeClustering
import pandas as pd
s = pd.DataFrame([[0.8, 0. , 3. ],
[1. , 1. , 2. ],
[0.3, 3. , 4. ]], columns=['dist', 'v1', 'v2'])
sparseD = csr_matrix((1-s['dist'], (s['v1'].values, s['v2'].values)), shape=(N, N))
agg = AgglomerativeClustering(n_clusters=None, affinity='precomputed', linkage='complete', distance_threshold=.25)
agg.fit_predict(sparseD)
最后一行升起
TypeError: cannot take a sparse matrix.
如果我强制转换数据toarray
,则代码可以工作并产生预期的输出,但是会占用大量内存,并且速度很慢:实际数据大小为61K x 61K。
我想知道是否还有另一个库(或scikit API)可以在预先计算的稀疏距离矩阵上进行相同的链接聚类-如果没有给定(element1,element2)对的入口,则该API不链接它们,其他所有内容都一样。