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

直接将字符串作为类传递是我的待办事项,但 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 回答