数据建模——模型融合

数据建模——模型融合

在建模预测过程中,使用单模型的得到的预测准确率及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)) # 分类器名称、准确率

数据建模——模型融合_第1张图片

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))

数据建模——模型融合_第2张图片


总结

提示:这里对文章进行总结:

对于模型融合过程中,使用的各个分类器的参数均为默认参数,如实际效果不好,可使用手动调参。

你可能感兴趣的:(机器学习,决策树,大数据,算法)