会员中心 |  会员注册  |  兼职信息发布    浏览手机版!    精选9.9元!    人工翻译    英语IT服务 贫困儿童资助 | 留言板 | 设为首页 | 加入收藏  繁體中文
当前位置:首页 > 机翻技术 > 识别技术 > 正文

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

发布时间: 2023-03-21 09:27:31   作者:etogether.net   来源: 网络   浏览次数:


程序清单1 CART算法的实现代码


图1.png

图2.png



上述程序清单包含3个函数:第一个函数是loadDataset(),这里我们把目标变量数据存放在一起。该函数读取一个以tab键为分隔符的文件,然后将每行的内容保存成一组浮点数。

第二个函数是binSplitDataset(),该函数有3个参数:数据集合、待切分的特征和该特征的某个值。在给定特征和特征值的情况下,该函数通过数组过滤方式将上述数据集合切分得到两个子集并返回。

最后一个函数是树构建函数createTree(),它有4个参数:数据集和其他3个可选参数。这些可选参数决定了树的类型:leafType给出建立叶节点的函数;errType代表误差计算函数;而ops是一个包含树构建所需其他参数的元组。


函数createTree()是一个递归函数。该函数首先尝试将数据集分成两个部分,切分由函数chooseBestSplit()完成(这里未给出该函数的实现)。如果满足停止条件,chooseBestSplit()将返回None和某类模型的值。如果构建的是回归树,该模型是一个常数。如果是模型树,其模型是一个线性方程。后面会看到停止条件的作用方式。如果不满足停止条件,chooseBestSplit()将创建一个新的Python字典并将数据集分成两份,在这两份数据集上将分别继续递归调用createTree()函数。


程序清单1的代码很容易理解,但其中的方法chooseBestSplit()现在暂时尚未实现,所以函数还不能看到createTree()的实际效果。但是下面可以先测试其他两个函数的效果。将程序清单1的代码保存在文件regTrees.py中并在Python提示符下输人如下命令:


>>> import regTrees

>>> testMat=mat (eye(4))

>>> testMat

matrix([[ 1., 0., 0., 0.],

            [0., 1., 0., 0.],

            [0., 0., 1., 0.],

            [0., 0., 0., 1.]])


这样就创建了一个简单的矩阵,现在按指定列的某个值来切分该矩阵。

>>> mat0,matl=regTrees.binSplitDataSet (testMat,1,0.5)

>>>mato

matrix([[ 0., 1., 0., 0.]])

>>> mat1

matrix([[ 1., 0., 0., 0.],

            [0.,0.,1.,0.],

            [ 0., 0.,0., 1.]])


很有趣吧。下面给出回归树的chooseBestsplit()函数,还会看到更有趣的结果。


责任编辑:admin


微信公众号

[上一页][1] [2] 【欢迎大家踊跃评论】
  • 上一篇:示例:树回归与标准回归的比较
  • 下一篇:权衡偏差与方差


  • 《译聚网》倡导尊重与保护知识产权。如发现本站文章存在版权问题,烦请30天内提供版权疑问、身份证明、版权证明、联系方式等发邮件至info@qiqee.net,我们将及时沟通与处理。


我来说两句
评分: 1分 2分 3分 4分 5分
评论内容:
验证码:
【网友评论仅供其表达个人看法,并不表明本站同意其观点或证实其描述。】
评论列表
已有 0 条评论(查看更多评论)