2016-07-26 15 views
2

私はscikit-learnを使用して、簡単な監視学習アルゴリズムを実装します。本質的に私はチュートリアルhereに従っています(しかし私自身のデータで)。カテゴリ(文字列)データをラベルとして使用するSVC(サポートベクター分類)

私はモデルに合わせてみてください:

clf = svm.SVC(gamma=0.001, C=100.) 
clf.fit(features_training,labels_training) 

しかし、二行目で、私はエラーを取得: label_trainingは、このような、3つのカテゴリーを表す文字列値が含まれているため ValueError: could not convert string to float: 'A'

エラーが期待されていますA,B,Cとなる。

質問:ラベル付きデータが文字列形式のカテゴリを表す場合、SVC(サポートベクター分類)を使用するにはどうすればよいですか。直感的な解決策は、各文字列を数字に変換するだけのようです。たとえば、A = 0,B = 1などですが、これは実際には最高の解決策ですか?

答えて

2

OneHotEncoderを使用して見て、特にhttp://scikit-learn.org/stable/modules/preprocessing.html#encoding-categorical-featuressection 4.3.4 Encoding categorical features.

を見てみましょう。これは、カテゴリ値をSVMで使用できる形式に変換します。

+1

少なくともセクションに直接リンクし、OneHotEncoderについて言及してください –

+0

しかし、新しい色を予測しようとすると、どのようにホットコードが役に立ちますか?おそらくあなたの場合、モデルを再トレーニングする必要があります。何か解決策はありますか? – gtzinos

0

あなたはこのコードを試すことができます。

from sklearn import svm 
X = [[0, 0], [1, 1],[2,3]] 
y = ['A', 'B','C'] 
clf = svm.SVC(gamma=0.001, C=100.) 
clf.fit(X, y) 
clf.predict([[2,3]]) 

出力: 配列( DTYPE = [ 'C']、 '| S1')

はあなたのように従属変数(y)を取る必要がありますが'リスト'。

関連する問題