数据建模——模型融合
在建模预测过程中,使用单模型的得到的预测准确率及auc值可能不是很高,这时候我们可以使用模型融合的办法,将多个模型进行融合,从而提升模型效果,本篇使用的方法为投票法策略。
除此之外,模型融合的办法还有平均法以及学习法/Stacking
一、软投票与硬投票
软投票:用各自分类器的概率值进行加权平均
硬投票:使用预测分类概率高的,少数服从多数
二、使用步骤
1.软投票
代码如下(示例):
from sklearn.ensemble import RandomForestClassifier, VotingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
log_clf = LogisticRegression(random_state=42)
rnd_clf = RandomForestClassifier(random_state=42)
svm_clf = SVC(probability = True,random_state=42)
voting_clf = VotingClassifier(estimators =[('lr',log_clf),('rf',rnd_clf),('svc',svm_clf)],voting='soft')
voting_clf.fit(X_train,y_train)
from sklearn.metrics import accuracy_score
for clf in (log_clf,rnd_clf,svm_clf,voting_clf):
clf.fit(X_train,y_train)
y_pred = clf.predict(X_test)
print (clf.__class__.__name__,accuracy_score(y_test,y_pred)) # 分类器名称、准确率
2.硬投票
代码如下(示例):
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import VotingClassifier # 投票分类器
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
log_clf = LogisticRegression(random_state=42)
rnd_clf = DecisionTreeClassifier(random_state=42)
svm_clf = SVC(random_state=42)
# 投票 参数估计
voting_clf = VotingClassifier(estimators =[('lr',log_clf),('rf',rnd_clf),('svc',svm_clf)],voting='hard')
voting_clf.fit(X_train,y_train)
from sklearn.metrics import accuracy_score # 导入准确率
for clf in (log_clf,rnd_clf,svm_clf,voting_clf):
clf.fit(X_train,y_train)
y_pred = clf.predict(X_test)
print (clf.__class__.__name__,accuracy_score(y_test,y_pred))
总结
提示:这里对文章进行总结:
对于模型融合过程中,使用的各个分类器的参数均为默认参数,如实际效果不好,可使用手动调参。