CART 回归树代码实现
来源:互联网 发布:云教学平台为您优化 编辑:程序博客网 时间:2024/05/18 17:04
from numpy import *def loadData(fileName): retMat=[] fr=open(fileName) for line in fr.readlines(): curline=line.strip().split('\t') curline=list(map(float,curline)) retMat.append(curline) return mat(retMat)#树节点信息class treeNode(): def __init__(self,feat,value,leftChild=None,rightChild=None): self.feat=feat self.value=value self.lc=leftChild self.rc=rightChild#树节点,后面打算用先序遍历来打印树
#建立回归树,把框架写出来def splitData(dataSet,feat,val): mat0=[] mat1=[] n=shape(data)[0] for j in range(n): if(data[j,feat]>val): mat0.append([data[j,0],data[j,1]]) else: mat1.append([data[j,0],data[j,1]]) return mat(mat0),mat(mat1)def createTree(dataSet): #计算最佳切分特征及切分点,用函数写出来 feat,val=chooseBestSplit(dataSet) if feat==None:return treeNode(None,val) node=treeNode(feat,val) leftMat,rightMat=splitData(dataSet,feat,val) node.lc=createTree(leftMat) node.rc=createTree(rightMat) return node def calcValue(dataSet): return mean(dataSet[:,-1])def calcError(dataSet): m=shape(dataSet)[0] return var(dataSet[:,-1])*m #树的节点应该保存成为平均值
def chooseBestSplit(dataSet,op=(1,4)): m,n=shape(dataSet) tolS=op[0] tolN=op[1] #判断这个是不是已分为一个类 if len(set(dataSet[:,-1].T.tolist()[0]))==1: return None,calcValue(dataSet) S=calcError(dataSet) bestS=inf bestIndex=0 bestVal=0 for featIndex in range(n-1): for splitVal in dataSet[:,featIndex]: mat0,mat1=splitData(dataSet,featIndex,splitVal) if shape(mat0)[0]<tolN or shape(mat1)[0]<tolN: continue newS=calcError(mat0)+calcError(mat1) if newS<bestS: bestIndex=featIndex bestValue=splitVal bestS=newS if S-bestS<tolS: return None,calcValue(dataSet) mat0,mat1=splitData(dataSet,bestIndex,bestValue) # print(shape(mat0)[0],shape(mat1)[0]) if shape(mat0)[0]<tolN or shape(mat1)[0]<tolN: return None,calcValue(dataSet) return bestIndex,bestValue #core code
data=loadData('ex00.txt')node=createTree(data)#树的先序遍历def tree(node): if node==None: return print(node.feat,":",node.value) tree(node.lc) tree(node.rc) return tree(node)
阅读全文
0 0
- CART 回归树代码实现
- CART之回归树python代码实现
- 分类回归树CART
- 回归树--CART
- CART分类回归树
- CART-分类回归树
- CART分类回归树
- CART树回归
- CART树回归
- CART分类与回归树的原理与实现
- cart(分类与回归树)原理与实现
- CART分类与回归树的原理与实现
- CART—最小二乘回归树Python实现
- 《统计学习方法》 决策树 CART生成算法 回归树 Python实现
- CART分类回归树分析与python实现
- 用python实现CART(分类回归树)
- 分类回归树CART(上)
- 分类回归树CART(上)
- 数据结构及算法序言
- ubuntu14.04编译和运行 fast rcnn
- 判断链表中是否有环 ----- 有关单链表中环的问题
- 多路访问控制(MAC )协议
- 监控TP50 TP90 TP99说明
- CART 回归树代码实现
- Oracle数据库导入导出命令!
- HTML原生小框框
- [UnityUI]NGUI备忘录
- NOR flash和NAND flash区别,RAM 和ROM区别
- SpringMvc 系统启动时加载数据到内存中
- Session做一个小例子(java web)
- Android图片质量压缩以及缩略图生成
- input监听 propertychange 和 oninput 和 onchange