【Python-ML】SKlearn库集成学习器Bagging
生活随笔
收集整理的這篇文章主要介紹了
【Python-ML】SKlearn库集成学习器Bagging
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
# -*- coding: utf-8 -*-
'''
Created on 2018年1月19日@author: Jason.F
@summary: Bagging,通過bootstrap樣本構建集成分類器,樣本有放回抽樣。降低模型方差,防止過擬合。
'''
import pandas as pd
import numpy as np
from sklearn.preprocessing import LabelEncoder
from sklearn.cross_validation import train_test_split
from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.metrics import accuracy_score
import matplotlib.pyplot as plt#導入數據和數據處理
df_wine = pd.read_csv('https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data',header=None)
df_wine.columns=['Class label','Alcohol','Malic acid','Ash','Alcalinity of ash','Magnesium','Total phenols','Flavanoids','Nonflavanoid phenols','Proanthocyanins','Color intensity','Hue','OD280/OD315 of diluted wines','Proline']
print ('class labels:',np.unique(df_wine['Class label']))
df_wine=df_wine[df_wine['Class label']!=1]#選擇2和3類別
y=df_wine['Class label'].values
X=df_wine[['Alcohol','Hue']].values #選擇Alcohol和 Hue兩個特征
le=LabelEncoder()
y=le.fit_transform(y)
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.40,random_state=1)
#引用BaggingClassifier訓練
tree=DecisionTreeClassifier(criterion='entropy',max_depth=None)#構建基學習器
bag=BaggingClassifier(base_estimator=tree,n_estimators=500,max_samples=1.0,max_features=1.0,bootstrap=True,bootstrap_features=False,n_jobs=1,random_state=1)
#評分,比較baggin集成器和單顆未剪枝決策樹的性能差異
#單顆樹評估
tree=tree.fit(X_train,y_train)
y_train_pred=tree.predict(X_train)
y_test_pred=tree.predict(X_test)
tree_train=accuracy_score(y_train, y_train_pred)
tree_test=accuracy_score(y_test, y_test_pred)
print ('Decision tree train/test accuracies %.3f/%.3f'%(tree_train,tree_test))#未剪枝,過擬合
#集成器評估
bag=bag.fit(X_train,y_train)
y_train_pred=bag.predict(X_train)
y_test_pred=bag.predict(X_test)
bag_train=accuracy_score(y_train, y_train_pred)
bag_test=accuracy_score(y_test, y_test_pred)
print ('Bagging train/test accuracies %.3f/%.3f'%(bag_train,bag_test))
#可視化決策區域
x_min = X_train[:,0].min()-1
x_max = X_train[:,0].max()+1
y_min = X_train[:,1].min()-1
y_max = X_train[:,1].max()+1
xx,yy =np.meshgrid(np.arange(x_min,x_max,0.1),np.arange(y_min,y_max,0.1))
f,axarr= plt.subplots(nrows=1,ncols=2,sharex='col',sharey='row',figsize=(8,3))
for idx,clf,tt in zip([0,1],[tree,bag],['Decision Tree','Bagging']):clf.fit(X_train,y_train)Z=clf.predict(np.c_[xx.ravel(),yy.ravel()])Z=Z.reshape(xx.shape)axarr[idx].contourf(xx,yy,Z,alpha=0.3)axarr[idx].scatter(X_train[y_train==0,0],X_train[y_train==0,1],c='blue',marker='^')axarr[idx].scatter(X_train[y_train==1,0],X_train[y_train==1,1],c='red',marker='o')axarr[idx].set_title(tt)
axarr[0].set_ylabel('Alcohol',fontsize=12)
plt.text(10.2,-1.2,s='Hue',ha='center',va='center',fontsize=12)
plt.show()
結果:
('class labels:', array([1, 2, 3], dtype=int64)) Decision tree train/test accuracies 1.000/0.854 Bagging train/test accuracies 1.000/0.896總結
以上是生活随笔為你收集整理的【Python-ML】SKlearn库集成学习器Bagging的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【Python-ML】集成多数投票分类器
- 下一篇: 【Python-ML】SKlearn库集