将分类数据转换为数字并保存为libsvm格式python

时间:2016-10-04 21:28:32

标签: python csv dataframe libsvm

我有一个看起来像这样的DataFrame:

    A         B        C        D
1   String1   String2  String3  String4
2   String2   String3  String4  String5
3   String3   String4  String5  String6
.........................................

我的目标是将此DataFrame转换为libSVM格式。

到目前为止我所尝试的是以下内容:

dummy= pd.get_dummies(dataframe)
dummy.to_csv('dataframe.csv', header=False, index=False)

有没有办法将dataframe或csv文件转换为这种格式。或者有更聪明的方法来进行转型吗?

我尝试从此存储库加载要执行this的脚本,如下所示:

%load libsvm2csv.py

并正确加载脚本,但是当我运行时:

libsvm2csv.py dataframe.csv dataframe.data 0 True

libsvm2csv.py dataframe.csv dataframe.txt 0 True

我得到"SyntaxError: invalid syntax"指向dataframe.csv

1 个答案:

答案 0 :(得分:1)

预处理数据后,您可以提取矩阵并使用scikit-learnns dump_svmlight_file来创建此格式。

示例代码:

import pandas as pd
from sklearn.datasets import dump_svmlight_file

dummy = pd.get_dummies(dataframe)
mat = dummy.as_matrix()
dump_svmlight_file(mat, y, 'svm-output.libsvm')  # where is your y?

备注/备选:

你提到 libsvm2csv.py 来进行这种转换,但这只是错误的方向。它是 libsvm-format - > CSV

如果您想从 cvs - >转换,请检查phraugs csv2libsvm.py libsvm (没有scikit-learn)。

我更喜欢使用scikit-learn(与phraug相比)