(上接第三章) 

  3.4 Scikit-Learn与回归树

  3.4.1 回归算法原理

  在预测中,CART使用最小剩余方差(squared Residuals Minimization)来判断回归时的最优划分,这个准则期望划分之后的子树与样本点的误差方差最小。这样决策树将数据集切分成很多子模型数据,然后利用线性回归技术来建模。如果每次切分后的数据子集仍难以拟合,就继续切分。在这种切分方式下创建的预测树,每个子节点都是一个线性回归模型。因此,CART不仅支持整体预测,也支持局部模式的预测,并有能力从整体中找到模式,或根据模式组合成一个整体

  CART的算法流程:

  (1)决策树主函数:决策树的主函数是一个递归的函数。该函数的主要功能是按照CART的规则生长出决策树的各个分支节点,并根据终止条件结束算法:

  1)输入需要分类的数据集合类别标签

  2)使用最小剩余方差判定回归树的最优划分,并创建特征的划分节点—最小剩余方差子函数。

  3)在划分节点划分数据集为两部分—二分数据集子函数

  4)根据二分数据的结果构建出新的左、右节点,作为树生长出来的两个分支

  5)检验是否符合递归的终止条件

  6)将划分的新节点包含的数据集和类别标签作为输入,递归执行上述步骤。

  (2)使用最小剩余方差子函数,计算数据集各列的最优划分方差、划分列、划分值。

  (3)二分数据集:根据给定的分割列和分割值将数据集一分为二,分别返回。

  

#coding:utf-8#二元切分数据集
#dataSet:输入的数据集;feature:特征列;value:二分点的取值
def binSplit(dataSet,feature,value):#数据集feature列大于value的所有行向量mat0 = dataSet[nonzero(dataSet[:,feature]>value)[0],:][0]#数据集feature列小于等于value的所有行向量mat1 = dataSet[nonzero(dataSet[:,feature]<=value)[0],:][0]return mat0,mat1

  3.4.2 最小剩余方差法

  每次最佳分支特征的选取过程如下:

  (1)先令最佳方差为无限大bestVar = inf

  (2)依次遍历所有特征列及每个特征列的所有样本点(这是一个二重循环)在每个样本点上二分数据集。

  (3)计算二分数据后的总方差currentVar(划分后左、右子数据集的总方差之和),如果currentVar<bestVar,则bestVar=currentVar

  (4)返回计算的最优分支特征列、分支特征值(连续特征则为划分点的值),以及左右分支子数据集到主程序。

  3.4.3 模型树

  3.4.4 剪枝策略

  3.4.5 Scikit-Learn实现

  

import  numpy as np
from numpy import *
from sklearn.tree import DecisionTreeRegressor
import  matplotlib.pyplot as plt#Scikit-Learn实现
def plotfigure(X,X_test,y,yp):plt.figure()plt.scatter(X,y,c='k',label='data')plt.plot(X_test,yp,c='r',label="max_depth=5",linewidth=2)plt.xlabel("data")plt.ylabel("target")plt.title("Decision Tree Regression")plt.legend()plt.show()x    = np.linspace(-5,5,200)
siny = np.sin(x)              #输出y与x的基本关系
X    = mat(x).T
y    = siny + np.random.rand(1,len(siny))*1.5 #加入噪声的点集
y    = y.tolist()[0]
#fit regression model
clf  = DecisionTreeRegressor(max_depth=4) #max depth选取最大的数深度,类似先剪枝
clf.fit(X,y)#Predict
X_test  = np.arange(-5.0,5.0,0.05)[:,np.newaxis]  #添加新的维度
yp      = clf.predict(X_test)plotfigure(X,X_test,y,yp)

  

  

  

  

转载于:https://www.cnblogs.com/wuchuanying/p/6245477.html

郑捷《机器学习算法原理与编程实践》学习笔记(第三章 决策树的发展)(三)_Scikit-learn与回归树...相关推荐

  1. 郑捷《机器学习算法原理与编程实践》学习笔记(第七章 预测技术与哲学)7.1 线性系统的预测...

    7.1.1 回归与现代预测 7.1.2 最小二乘法 7.1.3 代码实现 (1)导入数据 def loadDataSet(self,filename): #加载数据集X = [];Y = []fr = ...

  2. 郑捷《机器学习算法原理与编程实践》学习笔记(第四章 推荐系统原理)(三)SVD...

    4.5.1 SVD算法回顾 A = U∑VT 其中:A是N*M的矩阵,U是M*M的方阵(里面向量正交,称为左奇异向量),∑是一个M*N的矩阵,VT是一个N*N的矩阵(里面向量正交,右奇异向量) 那么奇 ...

  3. 《机器学习:算法原理与编程实践》的读书笔记:SMO部分最难,大部分代码基于Scikit-Learn,决策树其实用处不大

    机器学习:算法原理与编程实践 目录 [隐藏] 1 机器学习的基础 2 中文文本分类 3 决策树的发展 4 推荐系统原理 5 梯度寻优 6 神经网络初步 7 预测的技术与哲学 8 万能分类器:SVM 9 ...

  4. OpenCV4机器学习算法原理与编程实战(附部分模型下载地址)

    一直想找本书,能在机器学习复杂的算法原理和高效的编程实战之间达到合适的平衡:让感兴趣的同学拿到就有能用的代码,还有基本原理的介绍,因为了解原理才知道什么时候用什么算法最合适,以及如何调整参数. 一直没 ...

  5. Python快速编程入门#学习笔记01# |第一章 :Python基础知识 (Python发展历程、常见的开发工具、import模块导入)

    全文目录 ==先导知识== 1 认识Python 1.1.1 Python的发展历程 1.1.2 Python语言的特点 2. Python解释器的安装与Python程序运行 1.2.1 安装Pyth ...

  6. Java编程思想学习笔记-第11章

    <?xml version="1.0" encoding="utf-8"?> Java编程思想学习笔记-第11章 Java编程思想学习笔记-第11章 ...

  7. Python快速编程入门#学习笔记03# |第二章 :Python基础(代码格式、标识符关键字、变量和数据类型、数字类型以及运算符)

    全文目录 ==先导知识== 学习目标: 2.1 代码格式 2.1.1 注释 2.1.2 缩进 2.1.3 语句换行 2.2 标识符和关键字 2.2.1 标识符 2.2.2 关键字 2.3 变量和数据类 ...

  8. python画一片树叶的故事_《Python数据分析与机器学习实战-唐宇迪》读书笔记第7章--决策树...

    第7章决策树 决策树算法是机器学习中最经典的算法之一.大家可能听过一些高深的算法,例如在竞赛中大杀四方的Xgboost.各种集成策略等,其实它们都是基于树模型来建立的,掌握基本的树模型后,再去理解集成 ...

  9. 机器学习算法入门与编程实践课后题及答案(唐四新等编著)

    目录 习题1 习题2 习题3 习题4 习题5 习题6 习题7 习题8 习题1 1.无监督学习的两个主要任务是(多选)(BD). A.回归         B.降维         C.分类       ...

  10. 《机器学习》 周志华学习笔记第四章 决策树(课后习题)python 实现

    一.基本内容 1.基本流程 决策树的生成过程是一个递归过程,有三种情形会导致递归返回 (1)当前节点包含的yangben全属于同一类别,无需划分: (2)当前属性集为空,或是所有yangben在所有属 ...

最新文章

  1. 让织梦内容页arclist标签的当前文章标题加亮显示
  2. poj1860(Bellman-Ford算法)
  3. 地址突然就不对了_【装维大课堂】光猫的无线WiFi功能突然无法使用
  4. 循环链表(约瑟夫环)的建立及C语言实现
  5. python语言入门u-Jupyter笔记-Python语法基础(U.1)
  6. 无监督构建词库:更快更好的新词发现算法
  7. android中调用fft函数,J使用PCM数据在Android中转换FFT(JTransforms FFT in Android from PCM data)...
  8. mysql数据通讯方式_c# 与 Mysql 的通讯方式总结
  9. ajax请求使用utf-8,Ajax,请求标头UTF-8到ISO字符集[重复]
  10. 拳王虚拟项目公社:小投资虚拟创业副业项目?零成本投资网赚项目
  11. Visual Studio 2019 离线安装包下载
  12. C++代码实现 生成器模式
  13. VScode设置为中文版
  14. php股票预警,很准的股票底部预警选股指标 通达信公式(附图)
  15. ip地址详解(深入网络层分析)
  16. 马赛克密码破解——GitHub 热点速览 Vol.50
  17. 二维曲线 去噪点 c++_二维介孔聚吡咯-氧化石墨烯异质结用于制备无枝晶的锂金属负极...
  18. 高德地图改变当前位置_高德地图当前位置图标旋转功能实现
  19. php画五角星,H5怎样用绘制五角星
  20. JavaScript - 语言基础

热门文章

  1. Mac使用VMware虚拟机安装CentOS系统无法获取IP地址联网问题
  2. 网站入侵工具之wscan使用详解
  3. 如何开展业务是我在离开X网之后重新学的
  4. column xxx is of type integer but expression is of type character varying。String的成员变量存到int的数据库列 报错
  5. 《钻哥带您了解产品原型》(Yanlz+Unity+XR+需求分析+核心思路+产品核心+生产流程+制作核心+销售核心+立钻哥哥+==)
  6. WebSocket对象的“readyState”属性记录连接过程中的状态值
  7. 无线路由器dhcp服务器连接失败,TP-Link路由器桥接提示“获取IP地址失败,请检查DHCP是否开启”怎么办...
  8. SpringMVC中session的使用
  9. 有缓震功能的舒缓拖鞋能给运动后带来什么样的减压效果?
  10. 高等数学(第七版)同济大学 习题7-4 个人解答