【发布时间】:2019-02-02 23:03:10
【问题描述】:
我正在处理一个多类问题(4 个类),我正在尝试使用 Python 中的 scikit-learn 来解决它。
我看到我有三个选择:
-
我只是实例化一个分类器,然后我适合训练并通过测试评估;
classifier = sv.LinearSVC(random_state=123) classifier.fit(Xtrain, ytrain) classifier.score(Xtest, ytest) -
我将实例化的分类器“封装”在 OneVsRest 对象中,生成一个用于训练和测试的新分类器;
classifier = OneVsRestClassifier(svm.LinearSVC(random_state=123)) classifier.fit(Xtrain, ytrain) classifier.score(Xtest, ytest) -
我将实例化的分类器“封装”在 OneVsOne 对象中,生成一个用于训练和测试的新分类器。
classifier = OneVsOneClassifier(svm.LinearSVC(random_state=123)) classifier.fit(Xtrain, ytrain) classifier.score(Xtest, ytest)
我了解 OneVsRest 和 OneVsOne 之间的区别,但我无法理解在第一种情况下我在做什么,我没有明确选择这两个选项中的任何一个。在这种情况下 scikit-learn 会做什么?它是否隐式使用 OneVsRest?
任何关于此事的澄清将不胜感激。
最好, 先生
编辑: 为了清楚起见,我对 SVM 的情况并不特别感兴趣。例如,RandomForest 呢?
【问题讨论】:
-
请格式化您的代码
-
你是对的。我做了很多次,不知何故代码格式化不起作用,所以我最终放弃了。
-
在 scikit-learn 文档中有基本解释:Multiclass and multilabel algorithms
标签: python machine-learning scikit-learn multiclass-classification