この回答では、CSVをLibSVM、LIBLINEAR、またはscikit-learn
ロード可能なファイルに変換しようとしていると想定しています。
csv2libsvm
Rubygemの一部として提供されているを使用できますvector_embed
。
$ gem install vector_embed
Successfully installed vector_embed-0.1.0
1 gem installed
Ruby1.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
したら、最初の列が「ラベル」と呼ばれていることを確認します。
$ 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赤」)。
svmを使用している場合は、「SVM分類の実用ガイド」で推奨されているようにデータをスケーリングしてください。
scikit-learn
最後に、のsvmlight/libsvmローダーを使用しているとしましょう。
>>> from sklearn.datasets import load_svmlight_file
>>> X_train, y_train = load_svmlight_file("/path/to/example.libsvm")