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

 

你可能感兴趣的:(【人工智能AI】)