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')
#实例化 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) 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)