以分类(字符串)数据作为标签的 SVC(支持向量分类)

bet*_*eta 5 python machine-learning svm scikit-learn

scikit-learn用来实现一个简单的监督学习算法。本质上,我遵循此处的教程(但使用我自己的数据)。

我尝试拟合模型:

clf = svm.SVC(gamma=0.001, C=100.)
clf.fit(features_training,labels_training)
Run Code Online (Sandbox Code Playgroud)

但是在第二行,我收到一个错误: ValueError: could not convert string to float: 'A'

该错误是预期的,因为label_training包含代表三个不同类别的字符串值,例如ABC

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

Fur*_*rge 3

看看http://scikit-learn.org/stable/modules/preprocessing.html#encoding-categorical-features section 4.3.4 Encoding categorical features.

特别是使用OneHotEncoder。这会将分类值转换为 SVM 可以使用的格式。