博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
吴裕雄 python 机器学习——集成学习梯度提升决策树GradientBoostingClassifier分类模型...
阅读量:5093 次
发布时间:2019-06-13

本文共 5679 字,大约阅读时间需要 18 分钟。

import numpy as npimport matplotlib.pyplot as pltfrom sklearn import datasets,ensemblefrom sklearn.model_selection import train_test_splitdef load_data_classification():    '''    加载用于分类问题的数据集    '''    # 使用 scikit-learn 自带的 digits 数据集    digits=datasets.load_digits()     # 分层采样拆分成训练集和测试集,测试集大小为原始数据集大小的 1/4    return train_test_split(digits.data,digits.target,test_size=0.25,random_state=0,stratify=digits.target) #集成学习梯度提升决策树GradientBoostingClassifier分类模型def test_GradientBoostingClassifier(*data):    X_train,X_test,y_train,y_test=data    clf=ensemble.GradientBoostingClassifier()    clf.fit(X_train,y_train)    print("Traing Score:%f"%clf.score(X_train,y_train))    print("Testing Score:%f"%clf.score(X_test,y_test))# 获取分类数据X_train,X_test,y_train,y_test=load_data_classification() # 调用 test_GradientBoostingClassifiertest_GradientBoostingClassifier(X_train,X_test,y_train,y_test)

def test_GradientBoostingClassifier_num(*data):    '''    测试 GradientBoostingClassifier 的预测性能随 n_estimators 参数的影响    '''    X_train,X_test,y_train,y_test=data    nums=np.arange(1,100,step=2)    fig=plt.figure()    ax=fig.add_subplot(1,1,1)    testing_scores=[]    training_scores=[]    for num in nums:        clf=ensemble.GradientBoostingClassifier(n_estimators=num)        clf.fit(X_train,y_train)        training_scores.append(clf.score(X_train,y_train))        testing_scores.append(clf.score(X_test,y_test))    ax.plot(nums,training_scores,label="Training Score")    ax.plot(nums,testing_scores,label="Testing Score")    ax.set_xlabel("estimator num")    ax.set_ylabel("score")    ax.legend(loc="lower right")    ax.set_ylim(0,1.05)    plt.suptitle("GradientBoostingClassifier")    plt.show()    # 调用 test_GradientBoostingClassifier_numtest_GradientBoostingClassifier_num(X_train,X_test,y_train,y_test)

def test_GradientBoostingClassifier_maxdepth(*data):    '''    测试 GradientBoostingClassifier 的预测性能随 max_depth 参数的影响    '''    X_train,X_test,y_train,y_test=data    maxdepths=np.arange(1,20)    fig=plt.figure()    ax=fig.add_subplot(1,1,1)    testing_scores=[]    training_scores=[]    for maxdepth in maxdepths:        clf=ensemble.GradientBoostingClassifier(max_depth=maxdepth,max_leaf_nodes=None)        clf.fit(X_train,y_train)        training_scores.append(clf.score(X_train,y_train))        testing_scores.append(clf.score(X_test,y_test))    ax.plot(maxdepths,training_scores,label="Training Score")    ax.plot(maxdepths,testing_scores,label="Testing Score")    ax.set_xlabel("max_depth")    ax.set_ylabel("score")    ax.legend(loc="lower right")    ax.set_ylim(0,1.05)    plt.suptitle("GradientBoostingClassifier")    plt.show()    # 调用 test_GradientBoostingClassifier_maxdepthtest_GradientBoostingClassifier_maxdepth(X_train,X_test,y_train,y_test)

def test_GradientBoostingClassifier_learning(*data):    '''    测试 GradientBoostingClassifier 的预测性能随学习率参数的影响    '''    X_train,X_test,y_train,y_test=data    learnings=np.linspace(0.01,1.0)    fig=plt.figure()    ax=fig.add_subplot(1,1,1)    testing_scores=[]    training_scores=[]    for learning in learnings:        clf=ensemble.GradientBoostingClassifier(learning_rate=learning)        clf.fit(X_train,y_train)        training_scores.append(clf.score(X_train,y_train))        testing_scores.append(clf.score(X_test,y_test))    ax.plot(learnings,training_scores,label="Training Score")    ax.plot(learnings,testing_scores,label="Testing Score")    ax.set_xlabel("learning_rate")    ax.set_ylabel("score")    ax.legend(loc="lower right")    ax.set_ylim(0,1.05)    plt.suptitle("GradientBoostingClassifier")    plt.show()    # 调用 test_GradientBoostingClassifier_learningtest_GradientBoostingClassifier_learning(X_train,X_test,y_train,y_test)

def test_GradientBoostingClassifier_subsample(*data):    '''    测试 GradientBoostingClassifier 的预测性能随 subsample 参数的影响    '''    X_train,X_test,y_train,y_test=data    fig=plt.figure()    ax=fig.add_subplot(1,1,1)    subsamples=np.linspace(0.01,1.0)    testing_scores=[]    training_scores=[]    for subsample in subsamples:        clf=ensemble.GradientBoostingClassifier(subsample=subsample)        clf.fit(X_train,y_train)        training_scores.append(clf.score(X_train,y_train))        testing_scores.append(clf.score(X_test,y_test))    ax.plot(subsamples,training_scores,label="Training Score")    ax.plot(subsamples,testing_scores,label="Training Score")    ax.set_xlabel("subsample")    ax.set_ylabel("score")    ax.legend(loc="lower right")    ax.set_ylim(0,1.05)    plt.suptitle("GradientBoostingClassifier")    plt.show()    # 调用 test_GradientBoostingClassifier_subsampletest_GradientBoostingClassifier_subsample(X_train,X_test,y_train,y_test)

def test_GradientBoostingClassifier_max_features(*data):    '''    测试 GradientBoostingClassifier 的预测性能随 max_features 参数的影响    '''    X_train,X_test,y_train,y_test=data    fig=plt.figure()    ax=fig.add_subplot(1,1,1)    max_features=np.linspace(0.01,1.0)    testing_scores=[]    training_scores=[]    for features in max_features:            clf=ensemble.GradientBoostingClassifier(max_features=features)            clf.fit(X_train,y_train)            training_scores.append(clf.score(X_train,y_train))            testing_scores.append(clf.score(X_test,y_test))    ax.plot(max_features,training_scores,label="Training Score")    ax.plot(max_features,testing_scores,label="Training Score")    ax.set_xlabel("max_features")    ax.set_ylabel("score")    ax.legend(loc="lower right")    ax.set_ylim(0,1.05)    plt.suptitle("GradientBoostingClassifier")    plt.show()    # 调用 test_GradientBoostingClassifier_max_featurestest_GradientBoostingClassifier_max_features(X_train,X_test,y_train,y_test)

 

转载于:https://www.cnblogs.com/tszr/p/10801558.html

你可能感兴趣的文章
如何理解汉诺塔
查看>>
洛谷 P2089 烤鸡【DFS递归/10重枚举】
查看>>
Linux基本操作
查看>>
osg ifc ifccolumn
查看>>
C++ STL partial_sort
查看>>
centos redis 安装过程,解决办法
查看>>
IOS小技巧整理
查看>>
WebDriverExtensionsByC#
查看>>
我眼中的技术地图
查看>>
lc 145. Binary Tree Postorder Traversal
查看>>
sublime 配置java运行环境
查看>>
在centos上开关tomcat
查看>>
重启rabbitmq服务
查看>>
无人值守安装linux系统
查看>>
【传道】中国首部淘宝卖家演讲公开课:农业本该如此
查看>>
jQuery应用 代码片段
查看>>
MVC+Servlet+mysql+jsp读取数据库信息
查看>>
黑马程序员——2 注释
查看>>
用OGRE1.74搭建游戏框架(三)--加入人物控制和场景
查看>>
转化课-计算机基础及上网过程
查看>>