【学习笔记】CART算法
1. 背景介绍
CART(Classification and Regression Trees,分类回归树)算法是一种树构建算法,既可以用于分类,也可以用于回归。它的工作原理是:使用二元切分来处理连续型变量。
2. 使用Python构建CART树
2.1 读取数据
1 #读取文件数据,tab键为分隔符,将每行内容映射成一组浮点数: 2 def loadDataSet(fileName): 3 dataMat = [] 4 fr = open(fileName) 5 #依次读取每一行: 6 for line in fr.readlines(): 7 #读取数据的规则,line.strip()去掉每行头尾空白,split()通过指定分隔符对字符串进行切片: 8 curLine = line.strip().split('\t') 9 #统一数据格式,map()根据提供的函数对指定序列做映射: 10 fltLine = list(map(float, curLine)) 11 #录入数据,append()依次在列表末尾添加新的对象: 12 dataMat.append(fltLine) 13 return dataMat
2.2 切分数据集
1 #切分数据集,通过数组过滤方式切分为两个子集: 2 def binSplitDataSet(dataSet, feature, value):#数据集 待切分特征 特征值 3 #nonzero()返回输入数组中非零元素的索引 4 #dataSet[:,feature]返回dataSet矩阵中所有行的feature列的值 5 #nonzero(dataSet[:,feature] > value)[0] = 1,由于索引值数组从两个维度上来描述矩阵索引值,所以第一个数组为行维度,第二个数组为列维度 6 #mat0 = [1,:]返回矩阵第二行的所有列 7 #mat1 = [[0,2,4],:]返回矩阵第一、三、四行的所有列 8 mat0 = dataSet[nonzero(dataSet[:,feature] > value)[0],:] 9 mat1 = dataSet[nonzero(dataSet[:,feature] <= value)[0],:] 10 return mat0, mat1