我有一个大的(100K×30K)和svmlight格式的(非常)稀疏数据集,我按如下方式加载:
import numpy as npfrom scipy.cluster.vq import kmeans2from scipy.spatial.distance import pdist,squareformfrom sklearn.datasets import load_svmlight_fileX,Y = load_svmlight_file("somefile_svm.txt")
它返回一个稀疏的scipy数组X.
我只需要计算所有训练点的成对距离
D = pdist(X)
不幸的是,scipy.spatial.distance中的距离计算实现仅适用于密集矩阵.由于数据集的大小,使用pdist作为不可行
D = pdist(X.todense())
任何有关此问题的稀疏矩阵距离计算实现或变通方法的指针都将非常受欢迎.
非常感谢
最佳答案在scikit-learn中,有一个sklearn.metrics.euclIDean_distances函数,适用于稀疏矩阵和密集numpy数组.见reference documentation.然而,稀疏矩阵尚未实现非欧几里德距离.
总结以上是内存溢出为你收集整理的python / scikit-learn中距离计算的稀疏实现全部内容,希望文章能够帮你解决python / scikit-learn中距离计算的稀疏实现所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)