22

scikit-learn に関する簡単な SVM の質問。SVMをトレーニングすると、次のようになります

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

labels非数値型のリストになる方法はありますか? たとえば、ベクトルを「猫」または「犬」として分類したい場合、「猫」と「犬」を 1 と 2 にエンコードする何らかの外部ルックアップ テーブルを用意する必要はありません。文字列のリストを渡そうとすると...

ValueError: invalid literal for float(): cat

ですから、弦を押し込むだけではうまくいかないようlabelsです。何か案は?

4

2 に答える 2

21

文字列をクラスとして直接渡すことは私の todo にありますが、SVM ではまだサポートされていません。今のところ、ブックキーピングを行うことができるLabelEncoderがあります。

[編集]これは箱から出してすぐに動作するはずです[/編集]

于 2012-11-09T07:22:50.960 に答える
15

最近のバージョンの 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]
于 2016-07-05T18:18:21.073 に答える