将两个不同的分类器组合成 scikit-learn python
Posted
技术标签:
【中文标题】将两个不同的分类器组合成 scikit-learn python【英文标题】:combine two different classifier result in scikit-learn python 【发布时间】:2014-04-21 10:26:42 【问题描述】:我得到如下数据集:-
patient id-1
Heart rate pattern-82 82 87 87 89 90 89 89 89 89
Blood pressure-110 71
Body temperature-37.2
SPO2-94
Sex-0
Age-8
Hereditary-1
Smoking-0
Alcohol Intake-0
Physical Activity-1
Diabetes-0
Blood Cholesterol-0
Obesity BMI-17.5
Status-0
(1=坏(真),0=好(假))
对于心率模式
>>>est = AdaBoostClassifier()
>>>est.fit(X_train,y_train)
>>>predictions = est.predict(X_test)
>>>r2_score(y_test,predictions)
0.46999999999999997
其余数据
>>>est = RandomForestClassifier(verbose=2)
>>>est.fit(X_train,y_train)
>>>predictions = est.predict(X_test)
>>>r2_score(y_test,predictions)
0.9
我只有 264 个用于训练和测试的测试数据。通过在 sklearn 中使用 AdaBoostClassifier() 仅挖掘 心率模式,我获得了 0.46999999999999997 的准确度。对于数据集的其余部分,我使用 RandomForestClassifier(verbose=2) 获得了 0.9 的准确度。
现在我需要将这两个结果组合成一个预测结果。由于心率是一个时间序列,我无法立即将这两个结果结合起来。连接这两个结果的最佳方法是什么?
【问题讨论】:
r2_score 是回归分数,而不是分类分数。要评估分类,请使用 f1_score、accuracy_score(仅适用于平衡类)或 roc_auc_score(仅适用于二元分类)。 @ogrisel r2 和 f1_score 有什么区别?在上述情况下,最准确和正确的是什么?我应该两个都管还是只管一个? 【参考方案1】:要结合输出类别分配概率的两个分类器的分类(通过predict_proba
方法),您可以对概率进行平均(可能带有一些权重),然后将argmax
与平均预测类别概率相比较以进行最终预测.
注意:predict_proba
输出的其他列的顺序取决于分类器的classes_
属性。
【讨论】:
你会发布一个示例代码来做到这一点吗? *我只是需要更多的说明,我是 scikit 学习的新手【参考方案2】:您还可以使用 sklearn VotingClassifier 自动执行此操作,以组合不同的机器学习分类器,并从所有分类器中预测“投票最多”的输出。
在你的例子中:
from sklearn.ensemble import VotingClassifier
est_AB = AdaBoostClassifier()
score_AB=est_AB.fit(X_train,y_train).score(X_test,y_test)
est_RF = RandomForestClassifier()
score_RF=est_RF.fit(X_train,y_train).score(X_test,y_test)
est_Ensemble = VotingClassifier(estimators=[('AB', est_AB), ('RF', est_RF)],
voting='soft',
weights=[1, 1])
score_Ensemble=est_Ensemble.fit(X_train,y_train).score(X_test,y_test)
voting='soft' 在对所有模型的预测求和后将标签预测为具有最大概率的标签。 voting='hard' 按照多数投票规则预测标签,即模型预测的模式。
在此处查看更多信息http://scikit-learn.org/stable/modules/ensemble.html#voting-classifier 在这里http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.VotingClassifier.html
【讨论】:
虽然您链接的文档可以回答问题,但最好在答案中包含相关代码并将链接作为参考 DaFois - 我编辑并添加了相应的实现以上是关于将两个不同的分类器组合成 scikit-learn python的主要内容,如果未能解决你的问题,请参考以下文章