Python程序将numpy/列表导出为svmlight格式

5 投票
3 回答
5092 浏览
提问于 2025-04-17 13:06

有没有办法把一个Python数组导出成SVM light格式?

3 个回答

1

svmlight-loader这个模块可以把svmlight格式的文件加载到一个numpy数组里。我觉得目前还没有什么工具可以把numpy数组转换回svmlight文件,不过这个模块可能是扩展功能的一个不错起点。

5

我之前写了一个完全没有优化的脚本,也许它能帮到你!数据和标签必须放在两个不同的numpy数组里。

def save_svmlight_data(data, labels, data_filename, data_folder = ''):
    file = open(data_folder+data_filename,'w')

    for i,x in enumerate(data):
        indexes = x.nonzero()[0]
        values = x[indexes]

        label = '%i'%(labels[i])
        pairs = ['%i:%f'%(indexes[i]+1,values[i]) for i in xrange(len(indexes))]

        sep_line = [label]
        sep_line.extend(pairs)
        sep_line.append('\n')

        line = ' '.join(sep_line)

        file.write(line)
6

scikit-learn里有一个功能:

http://scikit-learn.org/stable/modules/generated/sklearn.datasets.dump_svmlight_file.html

这个功能很简单,但它可以同时处理numpy数组和稀疏矩阵(scipy.sparse)。

撰写回答