非整数类标签 Scikit-Learn

Posted

技术标签:

【中文标题】非整数类标签 Scikit-Learn【英文标题】:Non-Integer Class Labels Scikit-Learn 【发布时间】:2012-10-29 07:20:24 【问题描述】:

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 中插入字符串会起作用。有什么想法吗?

【问题讨论】:

【参考方案1】:

直接将字符串作为类传递是我的待办事项,但 SVM 尚不支持它。 目前,我们有LabelEncoder 可以为您记账。

[edit]这应该可以立即使用[/edit]

【讨论】:

【参考方案2】:

最新版本的 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]

【讨论】:

以上是关于非整数类标签 Scikit-Learn的主要内容,如果未能解决你的问题,请参考以下文章

第5次作业+105032014158+余超勇

为啥同步安全整数?

sklearn svm 非整数输出

监督学习与非监督学习

朴素贝叶斯 - 没有类标签 0 的样本

静态常量(非整数)成员初始化语法背后的基本原理?