将大约500万个非零元素的10,000 x 40,000个CSR矩阵转储到/ dev / null大约需要6分钟。有更快的替代方案吗?
将其转换为另一种稀疏格式无济于事。
答案 0 :(得分:2)
current implementation在0.14中非常天真。您可以尝试使用line_profiler对其进行分析,以找到主要瓶颈。
如果你找到一种更快的方法来实现它(可选择使用cython作为加载器),那么请随意打开拉取请求。
答案 1 :(得分:2)
如果您升级到scikit-learn(或复制粘贴this file到您的安装中)的前沿开发版本,您将获得比以前快十倍的dump_svmlight_file
。
答案 2 :(得分:0)
以下在60秒内运行,其中6个在循环之外。它利用了COO矩阵基本上已经是正确格式的事实。
def dump_svmlight_file_sparse(X, y, f, zero_based=True):
X = X.sorted_indices().tocoo()
if not zero_based:
X.col += 1
y = y.astype(int).astype(str)
col = X.col.astype(str)
dat = X.data.astype(str)
last_row = 0
f.write(y[0])
for i in xrange(len(X.data)):
while last_row < X.row[i]:
last_row += 1
f.write('\n'+y[last_row])
f.write(' '+col[i]+':'+dat[i])
f.write('\n')