参考:

1、《Python机器学习:预测分析核心算法》 P258-P266

1 importnumpy2

3 #from sklearn.cross_validation import train_test_split

4 from sklearn.model_selection importtrain_test_split5

6 #这里是可以用来构建GradientBoostingRegressor模型

7 from sklearn importensemble8 from sklearn.metrics importmean_squared_error9 import pylab as plot

1 #从本机读取数据

2 target_file = open('winequality-red.csv','r')3 data =target_file.readlines()4 target_file.close()

1 #整理原始数据,将原始数据分为属性列表(xList),标签列表(labels)

2 #将各个属性的名称存入names列表

3 xList =[]4 labels =[]5 names =[]6 firstLine =True7 for line indata:8 iffirstLine:9 names = line.strip().split(";")10 firstLine =False11 else:12 #split on semi-colon

13 row = line.strip().split(";")14 #put labels in separate array

15 labels.append(float(row[-1]))16 #remove label from row

17 row.pop()18 #convert row to floats

19 floatRow = [float(num) for num inrow]20 xList.append(floatRow)21

22 #计算属性列表的行数和列数

23 nrows =len(xList)24 ncols = len(xList[0])

1 #将各列表转为numpy数组形式,此形式是RandomForestRegressor的要求

2 #并且这些对象可以使用sklearn的train_test_split构建训练和测试集

3 X =numpy.array(xList)4 y =numpy.array(labels)5 wineNames = numpy.array(names)

1 #构建test集为30%规模的训练集和测试集

2 #random_state设置为一个特殊整数,而不是让随机数生成器自己选择一个不可重复的内部值

3 #这样重复代码可以获得同样的结果,便于开发阶段的调整,否则随机性会掩盖所做的改变

4 #固定random_state就固定了测试集,会对测试数据集过度训练

5 #take fixed holdout set 30% of data rows

6 xTrain, xTest, yTrain, yTest = train_test_split(X, y, test_size=0.30, random_state=531)

1 #Train gradient boosting model to minimize mean squared error

2

3 #对梯度提升法参数设置和调整的建议:

4 #1、除了设置subsample为0.5的情况,其他情况都以缺省值开始训练。

5 #2、模型训练完成后,观察模型在测试数据(out_of_sample, oos)下的预测性能与决策树数目的关系及变化。

6 #3、如果测试数据性能在图的右侧迅速提高,增加n_estimators或者learning_rate

7 #4、如果测试数据性能在图的右侧迅速恶化,则减少learning_rate

8 #5、一旦测试数据的性能曲线在整体都有改善,并且图的右侧基本持平,则尝试改变max_depth和max_features

9

10 nEst = 2000

11 depth = 7

12 learnRate = 0.01

13 subSamp = 0.5

14

15 wineGBMModel = ensemble.GradientBoostingRegressor(n_estimators=nEst,16 max_depth=depth,17 learning_rate=learnRate,18 subsample =subSamp,19 loss='ls')20

21 wineGBMModel.fit(xTrain, yTrain)

运行后显示:

GradientBoostingRegressor(alpha=0.9, ccp_alpha=0.0, criterion='friedman_mse',

init=None, learning_rate=0.01, loss='ls', max_depth=7,

max_features=None, max_leaf_nodes=None,

min_impurity_decrease=0.0, min_impurity_split=None,

min_samples_leaf=1, min_samples_split=2,

min_weight_fraction_leaf=0.0, n_estimators=2000,

n_iter_no_change=None, presort='deprecated',

random_state=None, subsample=0.5, tol=0.0001,

validation_fraction=0.1, verbose=0, warm_start=False)

1 #compute mse on test set

2 msError =[]3 #利用迭代器staged_predict观察测试数据误差与决策树数目的关系

4 predictions =wineGBMModel.staged_predict(xTest)5 for p inpredictions:6 msError.append(mean_squared_error(yTest, p))7

8 print("MSE")9 print(min(msError))10 print(msError.index(min(msError)))

运行后显示:

MSE

0.3155227031463733

826

1 #plot training and test errors vs number of trees in ensemble

2 plot.figure(figsize=(12,8))3 plot.plot(range(1, nEst + 1), wineGBMModel.train_score_, label='Training Set MSE')4 plot.plot(range(1, nEst + 1), msError, label='Test Set MSE')5 plot.legend(loc='upper right')6 plot.xlabel('Number of Trees in Ensemble')7 plot.ylabel('Mean Squared Error')8 plot.show()

运行后显示:

1 #Plot feature importance

2 featureImportance =wineGBMModel.feature_importances_3

4 #normalize by max importance

5 featureImportance = featureImportance /featureImportance.max()6 idxSorted =numpy.argsort(featureImportance)7 barPos = numpy.arange(idxSorted.shape[0]) + .5

8 plot.barh(barPos, featureImportance[idxSorted], align='center')9 plot.yticks(barPos, wineNames[idxSorted])10 plot.xlabel('Variable Importance')11 plot.subplots_adjust(left=0.2, right=0.9, top=0.9, bottom=0.1)12 plot.show()

运行后显示:

python大气模型算法_[学习笔记][Python机器学习:预测分析核心算法][利用Python集成方法工具包构建梯度提升模型]...相关推荐

  1. python模型预测_《Python机器学习——预测分析核心算法》——1.5 构建预测模型的流程...

    本节书摘来异步社区<Python机器学习--预测分析核心算法>一书中的第1章,第1.5节,作者:[美]Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区"异步社 ...

  2. python分类预测_《Python机器学习——预测分析核心算法》——2.6 多类别分类问题:它属于哪种玻璃...

    本节书摘来异步社区<Python机器学习--预测分析核心算法>一书中的第2章,第2.6节,作者:[美]Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区"异步社 ...

  3. 《Python机器学习——预测分析核心算法》——2.4 基于因素变量的实数值预测:鲍鱼的年龄...

    本节书摘来异步社区<Python机器学习--预测分析核心算法>一书中的第2章,第2.4节,作者:[美]Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区"异步社 ...

  4. 《Python机器学习——预测分析核心算法》——2.2 分类问题:用声纳发现未爆炸的水雷...

    本节书摘来异步社区<Python机器学习--预测分析核心算法>一书中的第2章,第2.2节,作者:[美]Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区"异步社 ...

  5. 惩罚线性回归---Python机器学习:预测分析核心算法

    惩罚线性回归 参考教材:Python机器学习预测分析核心算法,书中代码较为过时,借用sklearn等工具包进行了重写. 实践中遇到的绝大多数预测分析(函数逼近)问题,惩罚线性回归和集成方法都具有最优或 ...

  6. 《Python机器学习——预测分析核心算法》——2.5 用实数值属性预测实数值目标:评估红酒口感...

    本节书摘来异步社区<Python机器学习--预测分析核心算法>一书中的第2章,第2.5节,作者:[美]Michael Bowles(鲍尔斯),更多章节内容可以访问云栖社区"异步社 ...

  7. python数据预测模型算法_Python机器学习 预测分析核心算法

    第1章关于预测的两类核心算法 1.1为什么这两类算法如此有用 1.2什么是惩罚回归方法 1.3什么是集成方法 1.4算法的选择 1.5构建预测模型的流程 1.5.1构造一个机器学习问题 1.5.2特征 ...

  8. python数据预测模型算法_《python机器学习—预测分析核心算法》:构建预测模型的一般流程...

    参见原书1.5节 构建预测模型的一般流程 问题的日常语言表述->问题的数学语言重述 重述问题.提取特征.训练算法.评估算法 熟悉不同算法的输入数据结构: 1.提取或组合预测所需的特征 2.设定训 ...

  9. oracle 最大值及其_学习笔记:Oracle优化 SQL查询最大值 最小值时的优化方法案例...

    天萃荷净 select max(id),min(id) from table优化,分享开发DBA需求,在SQL语句查询最大值.最小值数据时的优化方式案例 1.查看数据库版本 SQL> selec ...

  10. 文本聚类分析算法_读书笔记(8)kmeans聚类算法及应用

    1.问题导入 假如有这样一种情况,在一天你想去某个城市旅游,这个城市里你想去的有70个地方,现在你只有每一个地方的地址,这个地址列表很长,有70个位置.事先肯定要做好攻略,你要把一些比较接近的地方放在 ...

最新文章

  1. 还不错的Table样式和form表单样式
  2. LeetCode 75. Sort Colors--Python解法
  3. Ticker 未释放导致的 CPU 占用过高
  4. 函 float *search(float(*pointer)[4],int n)
  5. PostgreSQL的postmaser的fork的学习体会
  6. hiredis源码分析与简单封装
  7. shell 循环控制语句
  8. 计算机科学与技术和信息与计算科学区别,信息与计算科学和计算机科学与技术有什么区别...
  9. C++11:原子交换函数compare_exchange_strong
  10. 国内流行商业网站分类最新排行榜(2008完整版)
  11. C#从图中截取部分图片 代码实现截图
  12. 知识图谱在应用过程中,主要面临哪些困难?
  13. 数论——Baby Step Giant Step大步小步算法
  14. 信息系统项目管理师计算题(期望值)
  15. 无线充qi2来了,快来了解下~
  16. matlab入门学习资料
  17. 实现从淘宝定时抓取订单数据、打印电子面单并保存到ERP表中!
  18. 使用perl脚本语言处理文本文件
  19. 导入的OSM地图如何快速设置道路信息
  20. 对于雷诺数,你了解多少?

热门文章

  1. python中怎么把每一个字符用、隔开_python 实现将list转成字符串,中间用空格隔开...
  2. 基于 ZNS 模式搭建并运行 FEMU
  3. ibm tivoli_Tivoli Access Manager信任关联拦截器(TAI ++)
  4. Linux内核模块最简驱动
  5. [LeetCode] Largest Perimeter Triangle
  6. 【Linux系列文章】克隆虚拟机与常用问题
  7. Distributing Ballot Boxes HDU - 4190【详细翻译】【贪心、二分】
  8. 华钜同创:拯救你的亚马逊销量!你需要知道这些技巧
  9. 服务器使用CDN加速的优劣势分析
  10. 前端处理订单支付超时