集成算法
投票法
1.少数服从多数
2.多模型一致(硬投票)
3.更高把握(置信度)原则,以最高执行度的模型预测结果为准
4.把握程度汇总进行投票(软投票)
基于多个优化模型的投票分类器
from sklearn.ensemble import VotingClassifier # 导入投票分类器
from sklearn.datasets import load_iris # 导入训练数据集
iris=load_iris()
构建若干基础模型
# 构建若干基础模型
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
clf1=LogisticRegression()
clf2=GaussianNB()
clf3=SVC(kernel='rbf')
建立投票分类器(hard)
#实例化
vote_clf=VotingClassifier(estimators=[('lr',clf1),('GNB',clf2),('SVM',clf3)],voting='hard')
# 训练投票分类器
vote_clf.fit(iris.data,iris.target)
# 预测
vote_clf.predict(iris.data)
建立投票分类器(soft)
# 建立投票分类器(soft)
clf1=LogisticRegression()
clf2=GaussianNB()
clf3=SVC(kernel='rbf',probability=True)
vote_clf2=VotingClassifier(estimators=[('lr',clf1),('GNB',clf2),('SVM',clf3)],voting='soft') #实例化
vote_clf2=vote_clf2.fit(iris.data,iris.target)# 训练
vote_clf2.predict(iris.data)# 预测
# 预测输出概率值
vote_clf2.predict_proba(iris.data)
array([[9.86641908e-01, 1.06874777e-02, 2.67061395e-03],
[9.80580511e-01, 1.64122717e-02, 3.00721706e-03],
[9.88225368e-01, 9.17685191e-03, 2.59777978e-03],
[9.81921847e-01, 1.49389403e-02, 3.13921237e-03],
。。。。。。。
例如,第一行,0.9866最大,所以为第一类
硬投票不能查看概率值
投票分类器与网格搜索的联合使用
from sklearn.model_selection import GridSearchCV # 导入网格搜索
from sklearn.ensemble import VotingClassifier# 导入投票分类器
# 构建若干基础模型
from sklearn.linear_model import LogisticRegression
from sklearn.naive_bayes import GaussianNB
from sklearn.svm import SVC
clf1=LogisticRegression()
clf2=GaussianNB()
clf3=SVC(probability=True)
# probability默认为false ,所以设置为true ,方便后续查看概率值
probability默认为false ,所以设置为true ,方便后续查看概率值
#实例化
vote_clf2=VotingClassifier(estimators=[('lr',clf1),('GNB',clf2),('SVM',clf3)],voting='soft')
# 设置参数搜索范围
params={'lr__C':[0.1,1,10],
'SVM__C':[0.01,0.1,1,10],
'SVM_kernel':['linear','rbf']}
注意:SVM__C,lr__C’这里是两个横线,小心报错
params={‘lr__C’:[0.1,1,10],‘SVM__C’:[0.01,0.1,1,10], ‘SVM_kernel’:[‘linear’,‘rbf’]}一共会搜索 24次:342
#在网格搜索中直接调用投票分类器
grid=GridSearchCV(estimator=vote_clf,param_grid=params,cv=8)