1. 背景介绍

CART(Classification and Regression Trees,分类回归树)算法是一种树构建算法,既可以用于分类,也可以用于回归。它的工作原理是:使用二元切分来处理连续型变量。

2. 使用Python构建CART树

2.1 读取数据

 #读取文件数据,tab键为分隔符,将每行内容映射成一组浮点数:
def loadDataSet(fileName):
dataMat = []
fr = open(fileName)
#依次读取每一行:
for line in fr.readlines():
#读取数据的规则,line.strip()去掉每行头尾空白,split()通过指定分隔符对字符串进行切片:
curLine = line.strip().split('\t')
#统一数据格式,map()根据提供的函数对指定序列做映射:
fltLine = list(map(float, curLine))
#录入数据,append()依次在列表末尾添加新的对象:
dataMat.append(fltLine)
return dataMat

2.2 切分数据集

 #切分数据集,通过数组过滤方式切分为两个子集:
def binSplitDataSet(dataSet, feature, value):#数据集 待切分特征 特征值
#nonzero()返回输入数组中非零元素的索引
#dataSet[:,feature]返回dataSet矩阵中所有行的feature列的值
#nonzero(dataSet[:,feature] > value)[0] = 1,由于索引值数组从两个维度上来描述矩阵索引值,所以第一个数组为行维度,第二个数组为列维度
#mat0 = [1,:]返回矩阵第二行的所有列
#mat1 = [[0,2,4],:]返回矩阵第一、三、四行的所有列
mat0 = dataSet[nonzero(dataSet[:,feature] > value)[0],:]
mat1 = dataSet[nonzero(dataSet[:,feature] <= value)[0],:]
return mat0, mat1

最新文章

  1. 关于Linux下转换oracle字符集
  2. h5移动端滑动的细节
  3. jquery替换URL参数值
  4. 在eclipse之中使用Junit
  5. idea修改运行内存
  6. 启动管理软件服务器时,提示midas.dll错误
  7. oracle游标循环的嵌套
  8. rails的字符编码
  9. jQuery自学笔记(四):jQuery DOM节点操作
  10. SQL 临时表或表变量替代游标
  11. SQL Server Alwayson创建代理作业注意事项
  12. cordova+vue 项目打包成Android(apk)应用
  13. 实现网络数据提取你需要哪些java知识
  14. Nginx源代码分析—业务流程
  15. Vcenter虚拟化三部曲----Vcenter server 5.5安装部署
  16. 同步网络时间到linux服务器(先修改时区再进行同步网络时间)
  17. hihocoder1634 Puzzle Game
  18. (原创)Stanford Machine Learning (by Andrew NG) --- (week 3) Logistic Regression &amp; Regularization
  19. HDU - 4333 :Revolving Digits (扩展KMP经典题,问旋转后有多少个不同的数字小于它本身,等于它本身,大于它本身。)
  20. Hibernate 简易入门教程

热门文章

  1. 十分钟复习CSS盒模型与BFC
  2. LeetCode 278.First Bad Version(E)(P)
  3. 前端javascript知识(三)
  4. PAT-字符串处理-B 1002 写出这个数 (20分)
  5. mysql的锁与事务
  6. JS数组遍历方法集合
  7. 数据结构之HashMap
  8. 深入解析Underscore.js源码架构
  9. JavaScript 原型与继承
  10. Spring框架——IOC 工厂方法