树回归

来源:互联网 发布:2016中国网络广告公司 编辑:程序博客网 时间:2024/06/06 09:36

    实际生活中很多问题都是非线性的,不可能使用全局线性模型来拟合任何数据

    一种可行的方法是将数据集切分成很多份易建模的数据,然后利用线性回归技术来建模.如果首次切分后仍然难以拟合线性模型就继续切分.在这种切分方式下,树结构和回归法就相当有用.

       ID3的做法是每次选取当前最佳的特征来分割数据,并按照该特征的所有可能取值来切分,一旦按某特征切分后,该特征在之后的算法执行过程中将不会在起作用,所以有观点认为这种方式过于迅速,而且ID3算法还存在另一个问题,它不能直接处理连续型特征,只能事先将连续型特征转换成离散型,才能在ID3算法中使用,但这种转换过程会破坏连续型变量的内在性质. 而使用二元切分法则易于对树构建过程进行调整以处理连续型特征.

       CART是十分著名且广泛记载的树构建算法,它使用二元切分来处理连续型变量.对CART稍作修改就可以处理回归问题.ID3使用香农嫡来度量集合的无组织程度.如果选用其他方法来代替香农嫡,就可以使用树构建算法来完成回归.

       回归树与分类树的思路类似,但叶节点的数据类型不是离散型,而是连续型.


一,连续和离散型特征的树的构建

from numpy import *def loadDataSet(filename):dataMat = []fr = open(filename)for line in fr.readlines():curLine = line.strip().split('\t')fltLine = map(float,curLine)  #map all elements to float()dataMat.append(fltLine)return dataMatdef binSplitDataSet(dataSet, feature, value):mat0 = dataSet[nonzero(dataSet[:,feature]>value)[0],:][0]mat1 = dataSet[nonzero(dataSet[:,feature]<=value)[0],:][0]return mat0, mat1def createTree(dataSet, leafType=regLeaf, errType=regErr, ops=(1,4)):feat, val = chooseBestSplit(dataSet, leafType, errType, ops) #choose the best splitif feat==None:  return valretTree = {}retTree['spInd'] = featretTree['spVal'] = vallSet, rSet = binSplitDataSet(dataSet, feat, val)retTree['left'] = createTree(lSet, leafType, errType, ops)retTree['right'] = createTree(rSet, leafType, errType, ops)return retTree




原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 狗狗牙齿变黄怎么办 人用了狗沐浴露怎么办 狗狗吞食牙膏吐怎么办? 狗狗吞食了牙膏怎么办 大猪拉稀不吃食怎么办 猪不发烧不吃食怎么办 天天吃自热米饭怎么办 喝了加热包水怎么办啊 蛋挞没有盒子装怎么办 塑料饭盒盖子被吸住了怎么办 火腿淹的有臭味怎么办 微波炉热饭盖子打不开怎么办 夏天带饭容易馊怎么办? 保温饭盒里有气打不开怎么办 保温饭盒摔了一下打不开怎么办 饭盒跟盖子盖一起打不开怎么办 玻璃杯子盖被水吸住打不开怎么办 电饭煲热剩饭没加水怎么办 微波炉碗盖子吸住了怎么办 微波炉转饭盖子吸住了怎么办 玻璃碗放进微波炉打不开怎么办 乐扣微波炉加热后打不开怎么办 美的微波炉盖子打不开怎么办 美的微波炉门都打不开了怎么办 饭煮好了有异味怎么办 一正常吃饭就胖怎么办 高铁盒饭没15的怎么办 上火车前票丢了怎么办 减肥期吃了汉堡怎么办 寿司店鳗鱼有刺怎么办 吃泡面胃难受该怎么办 吃上火的东西脸上长痘痘怎么办 减肥期间吃撑了怎么办 喝了变质的牛奶怎么办 绿豆糕吃多了会怎么办 小孩抓米饭烫了手怎么办 减肥不来月经了怎么办 吃了馊了的米饭怎么办 饭在冰箱里硬了怎么办 剩米饭反潮了怎么办 吃馊米饭中毒后怎么办?