SVC(支持向量分类),带有分类(字符串)数据作为标签

时间:2016-07-26 08:33:50

标签: python machine-learning scikit-learn svm

我使用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包含代表三个不同类别的字符串值,例如ABC

所以问题是:如果标记数据表示字符串形式的类别,我如何使用SVC(支持向量分类)。对我来说,一个直观的解决方案似乎只是将每个字符串转换为数字。例如,A = 0B = 1等等。但这真的是最好的解决方案吗?

2 个答案:

答案 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'。