返回

机翻技术

搜索 导航
超值满减
连续和离散型特征的树的构建
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] 【欢迎大家踊跃评论】

上一篇:示例:树回归与标准回归的比较
下一篇:权衡偏差与方差

微信公众号搜索“译员”关注我们,每天为您推送翻译理论和技巧,外语学习及翻译招聘信息。

  相关外语学习文章






PC版首页 -关于我们 -联系我们