4

CSVファイルからデータをインポートしてscikit-learnで使用したいと思います。数値データのカテゴリデータが混在しています。

someValue,color,someOtherValue
1.2,red,55.6
1.9,blue,20.5
3.2,red,16.5

この表現を純粋な数値表現に変換する必要があります。この表現では、カテゴリデータポイントが複数のバイナリ列に変換されます。

someValue,colorIsRed,colorIsBlue,someOtherValue
1.2,1,0,55.6
1.9,0,1,20.5
3.2,1,0,16.5

これを行うユーティリティ、またはデータを反復処理してこの表現を取得する簡単な方法はありますか?

4

2 に答える 2

4

scikit-learnは、私が知る限り、データ読み込み関数を提供していませんが、入力としてNumpy配列を優先します。Numpyのloadtxt関数とそのconvertersパラメーターを使用して、csvをロードし、各列のタイプを指定できます。ただし、2番目の列は2値化されません。

于 2012-08-01T23:40:11.303 に答える
2

この回答では、CSVをLibSVMLIBLINEAR、またはscikit-learnロード可能なファイルに変換しようとしていると想定しています。

csv2libsvmRubygemの一部として提供されているを使用できます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")
于 2013-04-02T01:46:41.380 に答える