2012-11-09 8 views
15

scikit-learnのクイックSVM質問。あなたはSVMを訓練するとき、それは非整数クラスラベルScikit-Learn

from sklearn import svm 
s = svm.SVC() 
s.fit(training_data, labels) 

のようなものだ非数値型のリストであることをlabelsための方法はありますか?例えば、 'cat'や 'dog'を1と2にエンコードする何らかの外部ルックアップテーブルを持たなくても、ベクトルを 'cat'や 'dog'として分類したい場合などです。私は文字列のリストを渡すしようとすると、私は...

ValueError: invalid literal for float(): cat

を取得するので、それだけでlabelsで文字列を無理に勧めすると動作するようには見えません。何か案は?

答えて

9

sklearnの最近のバージョンはラベルとして文字列を使用することができます。例:

from sklearn.svm import SVC 
clf = SVC() 
x = [[1,2,3], [4,5,6]] 
y = ['dog', 'cat'] 
clf.fit(x,y) 

yhat = clf.predict([[1,2,5]]) 
print yhat[0] 
18

文字列をクラスとして直接渡すことは自分のtodoにありますが、まだSVMではサポートされていません。 現時点では、本はあなたのために保管できるLabelEncoderです。

[編集]これは、ボックスの[/編集]の外に動作するようになりました

関連する問題