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

turn categorical data to numeric and save to libsvm format python

我有一个看起来像这样的 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)

有没有办法将数据框或 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

预处理数据后,您可以提取矩阵并使用 scikit-learns 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 -> libsvm(没有 scikit-learn)转换,请检查 phraugs csv2libsvm.py

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