版权声明:欢迎转载~ 转载请注明来源及作者,谢谢! https://blog.csdn.net/qq_42442369/article/details/86729971
#导入模块
import numpy as np
import matplotlib.pyplot as plt
from sklearn.ensemble import AdaBoostClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import make_gaussian_quantiles
#生成随机数据集
X1,y1 = make_gaussian_quantiles(
cov=2.0,
n_samples=500,
n_features=2,
n_classes=2,
random_state=1
)
X2,y2 = make_gaussian_quantiles(
mean=(3,3),
cov=1.5,
n_samples=400,
n_features=2,
n_classes=2,
random_state=1
)
X = np.concatenate((X1,X2))
y = np.concatenate((y1,-y2+1))
#绘制散点图,将数据可视化
plt.scatter(X[:,0],X[:,1],marker='o',c=y)
plt.show()
#建立AdaBoost分类器
# bdt = AdaBoostClassifier(
# DecisionTreeClassifier(max_depth=2,min_samples_split=20,min_samples_leaf=5),
# algorithm='SAMME',
# n_estimators=200,
# learning_rate=0.8
# )0.9133333333333333
# bdt = AdaBoostClassifier(
# DecisionTreeClassifier(max_depth=2,min_samples_split=20,min_samples_leaf=5),
# algorithm='SAMME',
# n_estimators=300,
# learning_rate=0.8
# )0.9622222222222222
# bdt = AdaBoostClassifier(
# DecisionTreeClassifier(max_depth=2,min_samples_split=20,min_samples_leaf=5),
# algorithm='SAMME',
# n_estimators=300,
# learning_rate=0.5
# )0.8944444444444445
bdt = AdaBoostClassifier(
DecisionTreeClassifier(max_depth=2,min_samples_split=20,min_samples_leaf=5),
algorithm='SAMME',
n_estimators=600,
learning_rate=0.7
)#0.9611111111111111
#训练
bdt.fit(X,y)
#生成网格图查看拟合区域
x_min,x_max = X[:,0].min()-1,X[:,0].max()+1
y_min,y_max = X[:,1].min()-1,X[:,1].max()+1
xx,yy = np.meshgrid(np.arange(x_min,x_max,0.02),np.arange(y_min,y_max,0.02))
Z = bdt.predict(np.c_[xx.ravel(),yy.ravel()])
Z = Z.reshape(xx.shape)
plt.contour(xx,yy,Z,cmap=plt.cm.Paired)
plt.scatter(X[:,0],X[:,1],marker='o',c=y)
plt.show()
#查看AdaBoost方法的分类精度
print(bdt.score(X,y))