实验4 决策树分类实验中

一、实验要求

在计算机上验证和测试招聘数据的决策树分类实验,理解基尼系数生成决策树,同时理解决策树的参数。

  • 实验目的

1、掌握决策树分类的原理

2、能够实现决策树分类算法;

3、掌握决策树的参数设置;

三、实验内容

实验步骤

  1. 请阅读DecisionTree1代码,实现基尼系数生成决策树的,gini函数。

 

  1. 请阅读DecisionTree2代码,实现calOneEntropy和calOneGini函数,选取莺尾花数据的某个特征,对其分割,针对每个分割点分别计算信息熵和基尼系数,最后把信息熵和基尼系数的曲线图画出来。

def calOneEntropy(X,y,n=100):
    ents = np.zeros(n)
    X1 = X[:,3]
    cuts = np.linspace(X1.min(),X1.max(),n)
    #开始计算
    i = 0
    for num in cuts:
        ent = 0.0
        y1 =  y[X1 < num]
        y2 = y[X1 > num]
        ent += entropy(y1)
        ent += entropy(y2)
        ents[i] = ent
        i+=1
    return cuts,ents

cuts,ents = calOneEntropy(X,y)
plt.xlabel('cuts')
plt.ylabel('ents')
plt.plot(cuts,ents)
plt.show()

 

def calOneGini(X,y,n=100):
    ents = np.zeros(n)
    X1 = X[:,3]
    cuts = np.linspace(X1.min(),X1.max(),n)
    #开始计算
    i = 0
    for num in cuts:
        ent = 0.0
        ent += gini(y[X1 < num])
        ent += gini(y[X1 > num])
        ents[i] = ent
        i+=1
    return cuts,ents

cuts,ents = calOneGini(X,y)
plt.xlabel('cuts')
plt.ylabel('ents')
plt.plot(cuts,ents)
plt.show()

3.请阅读tree1.ipynb,生成makemoon数据,分别测试,KNN,贝叶斯和决策树,对这个样本数据的分类观察分类的区别。

同时对决策树的下面5个参数进行调节,找到决策树分类相对最优的参数组合。

决策树易于理解和实现,但是决策树算法非常容易过拟合,可以通过设置节点最少样本数量和调节不同参数来改进。

 KNN算法无需估计参数,无需训练的方法,但是它的缺点是计算量较大,因为对每一个待分类的文本都要计算它到全体已知样本的距离,才能求得它的K个最近邻点。如需改变其准确率可以通过改变其k值来进行测试,找到最优的分类方法。

 贝叶斯模型对缺失数据不太敏感,算法也比较简单,常用于文本分类。但是需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳。

 

四、实验总结

1. 定义:基尼指数(基尼不纯度):表示在样本集合中一个随机选中的样本被分错的概率。

2.正则化超参数

DecisionTreeClassifier 类还有一些其他的参数,同样可以限制决策树的形状:

min_samples_split (分裂前节点必须有的最小样本数)

min_samples_leaf(叶节点必须有的最小样本数量)

max_leaf_nodes(最大叶节点数量)

max_features(分裂每个节点评估的最大特征数量)

3.使用交叉验证或者网格化搜索查询最优点

4.当决策树深度过大时,在训练集上表现特别好,往往就会出现过拟合现象,我们需要一些解决办法,引入随机森林,下次实验会用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值