Sklearn之Ensemble 估计器

分类器统计每个子分类器的预测类别数,再用「多数投票」原则得到最终预测。

回归器计算每个子回归器的预测平均值。

最常用的 Ensemble 估计器排列如下:

  • AdaBoostClassifier: 逐步提升分类器

  • AdaBoostRegressor: 逐步提升回归器

  • BaggingClassifier: 装袋分类器

  • BaggingRegressor: 装袋回归器

  • GradientBoostingClassifier: 梯度提升分类器

  • GradientBoostingRegressor: 梯度提升回归器

  • RandomForestClassifier: 随机森林分类器

  • RandomForestRegressor: 随机森林回归器

  • VotingClassifier: 投票分类器

  • VotingRegressor: 投票回归器

 

1、含同质估计器 RandomForestClassifier 

2、含异质估计器 VotingClassifier 

RandomForestClassifier 测试:

from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn import metrics
from sklearn.ensemble import RandomForestClassifier

iris = load_iris()#加载数据
X_train, X_test, y_train, y_test= train_test_split( iris['data'], iris['target'], test_size=0.2 )#按照80:20的比例切分数据

RF = RandomForestClassifier( n_estimators=4, max_depth=5 )#有4颗树组成,每棵树最大深度为5
RF.fit( X_train, y_train )#拟合

print( RF.n_estimators )#元估计器有多少估计器(随即森林有多少树)

print ( "RF - Accuracy (Train):  %.4g" % metrics.accuracy_score(y_train, RF.predict(X_train)) )
print ( "RF - Accuracy (Test):  %.4g" % metrics.accuracy_score(y_test, RF.predict(X_test)))

测试结果:

F:\开发工具\pythonProject\tools\venv\Scripts\python.exe F:/开发工具/pythonProject/tools/python的sklear学习/sklearndudu.py
4
RF - Accuracy (Train):  0.975
RF - Accuracy (Test):  0.9667

Process finished with exit code 0

VotingClassifier 测试:

from sklearn.linear_model import  LogisticRegression #逻辑回归分类器
from sklearn.naive_bayes import GaussianNB #高斯贝叶斯分类器
from sklearn.ensemble import RandomForestClassifier #随机森林分类器
from sklearn.ensemble import  VotingClassifier #投片分类器
from sklearn.model_selection import train_test_split #拆分数据类
from sklearn.datasets import load_iris #加载数据
from sklearn import metrics#metrics 来计算各种性能指标
iris = load_iris()#加载数据
X_train, X_test, y_train, y_test= train_test_split( iris['data'], iris['target'], test_size=0.2 )#按照80:20的比例拆分数据

LR=LogisticRegression(solver="lbfgs",multi_class="multinomial")#逻辑回归分类器
RF=RandomForestClassifier(n_estimators=5)#随即森林分类
GNB=GaussianNB()#高斯贝叶斯

Ensemble=VotingClassifier(estimators=[("lr",LR),("rf",RF),("gnb",GNB)],voting="hard")#里面装在三个分类器

Ensemble.fit(X_train,y_train)#拟合训练数据

print( len(Ensemble.estimators_) )#元估计器的个数
#分别查看各个数据分类器的拟合
LR.fit( X_train, y_train )
RF.fit( X_train, y_train )
GNB.fit( X_train, y_train )

#分别查看预测得分情况
print("LR:",metrics.accuracy_score(y_train,LR.predict(X_train)))
print("RF:",metrics.accuracy_score(y_train,RF.predict(X_train)))
print("GNB:",metrics.accuracy_score(y_train,GNB.predict(X_train)))
print("Ensemble:",metrics.accuracy_score(y_train,Ensemble.predict(X_train)))

print("-----------------------------------------------------------------\n")
#测试数据的拟合预测情况
print("LR:",metrics.accuracy_score(y_test,LR.predict(X_test)))
print("RF:",metrics.accuracy_score(y_test,RF.predict(X_test)))
print("GNB:",metrics.accuracy_score(y_test,GNB.predict(X_test)))
print("Ensemble:",metrics.accuracy_score(y_test,Ensemble.predict(X_test)))

测试结果:

F:\开发工具\pythonProject\tools\venv\Scripts\python.exe F:/开发工具/pythonProject/tools/python的sklear学习/sklearnfff.py
3
LR: 0.9916666666666667
RF: 1.0
GNB: 0.95
Ensemble: 0.9833333333333333
-----------------------------------------------------------------

LR: 0.9
RF: 0.9333333333333333
GNB: 0.9333333333333333
Ensemble: 0.9

Process finished with exit code 0

 

  • 3
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
sklearn中的贝叶斯估计方法包括伯努利朴素贝叶斯和高斯朴素贝叶斯。伯努利朴素贝叶斯适用于处理二项分布,更关注的是"存在与否"的特征,而不是具体出现的次数或频率。在文本分类的情况下,伯努利朴素贝叶斯可以使用单词出现向量来训练分类,特别适用于短文档的数据集。 另一种方法是高斯朴素贝叶斯,它假设特征的概率分布符合高斯分布。通过绘制高斯朴素贝叶斯算法的学习曲线与其他分类算法(如分类树、随机森林和支持向量机)的学习曲线进行对比,可以探索高斯朴素贝叶斯算法在拟合上的性质。使用sklearn中的learning_curve类,可以执行交叉验证并获得不同样本量下的训练和测试准确度。 在sklearn中,可以使用以下方法导入需要的包和模块,并进行贝叶斯估计: ```python import numpy as np import matplotlib.pyplot as plt from sklearn.naive_bayes import BernoulliNB, GaussianNB from sklearn.svm import SVC from sklearn.ensemble import RandomForestClassifier as RFC from sklearn.tree import DecisionTreeClassifier as DTC from sklearn.linear_model import LogisticRegression as LR from sklearn.datasets import load_digits from sklearn.model_selection import learning_curve, ShuffleSplit from time import time from datetime import datetime ``` 其中,BernoulliNB和GaussianNB分别是伯努利朴素贝叶斯和高斯朴素贝叶斯的类,并可以通过指定参数来进行模型的训练和预测。 希望这些信息对你有所帮助!如果还有其他问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值