机器学习实战2.2--决策树之划分数据集

1.实现数据集划分代码如下:

#按照给定的特征划分数据集
def splitDataSet(dataSet,feature,value):
    reDataSet=[]
    for featureVector in dataSet:
        if featureVector[feature]==value:
            reduceFeature=featureVector[:feature]
            reduceFeature.extend(featureVector[feature+1:])
            reDataSet.append(reduceFeature)
    return reDataSet

测试函数代码如下:

dataSet=[[1,1,'yes'],[1,1,'yes'],[1,0,'no'],[0,1,'no'],[0,1,'no']]
labels=['no surfacing','flippers']
reDataSet1=splitDataSet(dataSet,0,1)
reDataSet2=splitDataSet(dataSet,0,0)
print(reDataSet1)
print(reDataSet2)

运行结果:

[[1, 'yes'], [1, 'yes'], [0, 'no']]
[[1, 'no'], [1, 'no']]

2.代码解析:

1.函数的三个参数:待划分的数据集、划分数据集的特征、划分数据集的特征值。

2.python语言不考虑内存分配的问题。

3.python语言在函数中传递的是列表的引用,在函数内部对列表进行修改,将会影响列表对象的整个生存周期。为了消除这个影响,不修改原始数据集,所以在函数的开始声明一个新列表对象。

4.数据集这个列表中的各个元素也是一个列表。遍历数据集中的每个元素,一旦发现符合要求的值,则将其添加到新建的列表中。用if语句将符合特征的数据抽取出来。

5.列表的append和extend方法的区别:

>>> #append
>>> list1=[1,2,3]
>>> list2=['a','b','c']
>>> list1.append(list2)
>>> list1
[1, 2, 3, ['a', 'b', 'c']]
 
>>> #extend
>>> list1=[1,2,3]
>>> list2=['a','b','c']
>>> list1.extend(list2)
>>> list1
[1, 2, 3, 'a', 'b', 'c']

 

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值