我使用scikit-learn
来实现一个简单的监督学习算法。本质上,我遵循了这里的教程(但使用了我自己的数据)。
我尝试拟合模型:
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
等。但这真的是最佳解决方案吗?
回答:
请查看http://scikit-learn.org/stable/modules/preprocessing.html#encoding-categorical-features 第4.3.4节 编码类别特征
。
特别是,查看使用OneHotEncoder。这将把类别值转换为SVM可以使用的格式。