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 的准确度。
现在我需要将这两个结果组合成单个预测结果。由于心率是一个时间序列,我无法立即将这两个结果结合起来。连接这两个结果的最佳方式是什么?
您还可以使用 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
要组合输出类分配概率的两个分类器的分类(通过该predict_proba
方法),您可以平均(可能具有一些权重)概率并取argmax
平均预测类概率以进行最终预测。
注意:predict_proba
输出的其他列的顺序取决于classes_
分类器的属性。
归档时间: |
|
查看次数: |
6388 次 |
最近记录: |