在这个答案中,我假设您正在尝试将 CSV 转换为LibSVM、LIBLINEAR或scikit-learn
可以加载的文件。
您可以使用csv2libsvm
作为 Ruby gem 的一部分提供的vector_embed
:
$ gem install vector_embed
Successfully installed vector_embed-0.1.0
1 gem installed
你需要 Ruby 1.9+...
$ ruby -v
ruby 1.9.3p374 (2013-01-15 revision 38858) [x86_64-darwin12.2.0]
如果您没有 Ruby 1.9,使用 安装很容易,rvm
不需要(或推荐使用)root:
$ curl -#L https://get.rvm.io | bash -s stable
$ rvm install 1.9.3
成功运行gem install vector_embed
后,请确保您的第一列名为“label”:
$ cat example.csv
label,color,someOtherValue
1.2,red,55.6
1.9,blue,20.5
3.2,red,16.5
$ csv2libsvm example.csv > example.libsvm
$ cat example.libsvm
1.2 1139043:55.6 1997960:1
1.9 1089740:1 1139043:20.5
3.2 1139043:16.5 1997960:1
请注意,它同时处理分类数据和连续数据,并且它使用MurmurHash版本 3 来生成特征名称(“colorIsBlue”对应于 1089740,“colorIsRed”对应于 1997960……尽管 Ruby 代码实际上是在散列类似“color\ 0红色”)。
如果您使用的是支持向量机,请务必按照他们在“支持向量机分类的实用指南”中的建议来扩展您的数据。
最后,假设您正在使用scikit-learn
svmlight/libsvm 加载程序:
>>> from sklearn.datasets import load_svmlight_file
>>> X_train, y_train = load_svmlight_file("/path/to/example.libsvm")