【问题标题】:sklearn tsne with sparse matrix具有稀疏矩阵的 sklearn tsne
【发布时间】:2017-07-21 08:58:47
【问题描述】:

我正在尝试在具有预先计算的距离值的非常稀疏的矩阵上显示 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:传递了稀疏矩阵,但需要密集数据 方法="barnes_hut"。使用 X.toarray() 转换为密集的 numpy 数组 如果数组足够小以适合内存。否则 考虑降维技术(例如,TruncatedSVD)

我不想执行 TruncatedSVD,因为我已经计算了距离。

如果我更改method='exact',我会收到另一个错误(这有点可疑):

NotImplementedError:>= 和

注意:我的距离矩阵约为 100k x 100k,大约有 1M 个非零值。

有什么想法吗?

【问题讨论】:

    标签: python scikit-learn sparse-matrix dimensionality-reduction


    【解决方案1】:

    我认为这应该可以解决您的问题:

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

    如果你真的用 csr_matrix 而不是 csc_matrix

    【讨论】:

    • 我认为很明显我需要稀疏矩阵.. todense 会产生 MemoryError。
    猜你喜欢
    • 2016-07-31
    • 2019-07-04
    • 1970-01-01
    • 2018-01-06
    • 2017-02-12
    • 1970-01-01
    • 2018-01-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多