我使用scikit-learn
来实现一个简单的监督学习算法。本质上,我遵循教程here(但使用我自己的数据)。
我尝试适应模型:
clf = svm.SVC(gamma=0.001, C=100.)
clf.fit(features_training,labels_training)
但是在第二行,我收到一个错误:ValueError: could not convert string to float: 'A'
错误是预料到的,因为label_training
包含代表三个不同类别的字符串值,例如A
,B
,C
。
所以问题是:如果标记数据表示字符串形式的类别,我如何使用SVC(支持向量分类)。对我来说,一个直观的解决方案似乎只是将每个字符串转换为数字。例如,A = 0
,B = 1
等等。但这真的是最好的解决方案吗?
答案 0 :(得分:2)
查看http://scikit-learn.org/stable/modules/preprocessing.html#encoding-categorical-features section 4.3.4 Encoding categorical features.
请特别注意使用OneHotEncoder。这会将分类值转换为SVM可以使用的格式。
答案 1 :(得分: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]])
输出: 阵列([ 'C'], D型= '| S1')
你应该将因变量(y)作为'list'。