集成算法--sklearn

2021/12/29 12:07:41

本文主要是介绍集成算法--sklearn,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

集成算法

投票法

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)


这篇关于集成算法--sklearn的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程