关于sklearn中SVC对象的`decision_function_shape`参数的澄清

问题

decision_function_shape参数似乎对sklearn.svm.SVC对象的输出本身没有决定性影响,仅是重塑了每个分类器得分的数组。但是,有没有办法理解在对象的基本实现中(OvO策略和decision_function_shape的默认参数ovr)数组是如何转换的?

观察

用于多类分类的SVC实现使用了一个对一个(One vs One)策略。因此,对于n个类别,我们得到n选择2个分类器。总结如下:

ovo = SVC()                                     # (n选择2)个分类器ovo_bis = SVC(decision_function_shape='ovo')    # (n选择2)个分类器ovr =  OneVsRestClassifier(SVC())               # n个分类器ovo.decision_function([one_instance])           # 返回长度为n的数组ovo_bis.decision_function([one_instance])       # 返回长度为(n选择2)的数组ovr.decision_function([one_instance])           # 返回长度为n的数组

回答:

从OvO分类器集合到OvR决策函数的转换发生在_ovr_decision_function函数中,源码在此。简而言之,每个涉及类i的OvO分类器都会对每个样本是否属于类i进行投票,这些投票会被统计,获得最多票的类获胜;为了打破平局,会纳入置信水平(OvO决策函数),再次在OvO分类器中总计,并现在调整到适用于仅打破平局的范围内。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注