在 scikit-learn python 中结合两个不同的分类器结果

tk_*_*tk_ 1 python classification time-series prediction scikit-learn

我得到了如下数据集:-

patient id-1
Run Code Online (Sandbox Code Playgroud)

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
Run Code Online (Sandbox Code Playgroud)

(1=坏(真),0=好(假))

对于心率模式

>>>est = AdaBoostClassifier()
>>>est.fit(X_train,y_train)
>>>predictions = est.predict(X_test)
>>>r2_score(y_test,predictions)
0.46999999999999997
Run Code Online (Sandbox Code Playgroud)

对于其余数据

>>>est = RandomForestClassifier(verbose=2)
>>>est.fit(X_train,y_train)
>>>predictions = est.predict(X_test)
>>>r2_score(y_test,predictions)
0.9
Run Code Online (Sandbox Code Playgroud)

我只有 264 个测试数据用于训练和测试。通过在 sklearn 中使用 AdaBoostClassifier()仅挖掘心率模式,我获得了 0.46999999999999997 的准确度。对于其余的数据集,我使用 RandomForestClassifier(verbose=2) 分别获得了 0.9 的准确度。

现在我需要将这两个结果组合成单个预测结果。由于心率是一个时间序列,我无法立即将这两个结果结合起来。连接这两个结果的最佳方式是什么?

Pap*_*gui 7

您还可以使用 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)
Run Code Online (Sandbox Code Playgroud)

vote='soft' 将所有模型预测相加后将标签预测为具有最大概率的标签。vote='hard' 预测遵循多数投票规则的标签,即模型预测的模式。

在此处查看更多信息http://scikit-learn.org/stable/modules/ensemble.html#voting-classifier 和此处http://scikit-learn.org/stable/modules/ generated/sklearn.ensemble.VotingClassifier.html


ogr*_*sel 5

要组合输出类分配概率的两个分类器的分类(通过该predict_proba方法),您可以平均(可能具有一些权重)概率并取argmax平均预测类概率以进行最终预测。

注意:predict_proba输出的其他列的顺序取决于classes_分类器的属性。