任务描述 本关任务:使用sklearn完成鸢尾花分类任务 相关知识 为了完成本关任务,你需要掌握如何使用 sklearn 提供的 DecisionTreeClassifier  数据简介   鸢尾花数据集是一类多重变量分析的数据集。通过花萼长度,花萼宽度,花瓣长度,花瓣宽度4个属性预测鸢尾花卉属于( Setosa , Versicolour , Virginica )三个种类中的哪一类。 sklearn中已经提供了鸢尾花数据集的相关接口,想要使用该数据集可以使用如下代码: 1. from sklearn import datasets 2.  3. #加载鸢尾花数据集 4. iris = datasets.load_iris() 5.  6. #X表示特征,y表示标签 7. X = iris.data 8. y = iris.target  数据集中部分数据与标签如下图所示:
  DecisionTreeClassifier  DecisionTreeClassifier 的构造函数中有两个常用的参数可以设置: •  criterion :划分节点时用到的指标。有 gini (基尼系数), entropy (信息增益)。若不设置,默认为 gini  •  max_depth :决策树的最大深度,如果发现模型已经出现过拟合,可以尝试将该参数调小。若不设置,默认为 None   PS:关于基尼系数
分类问题中,假设有n个类别,则其基尼指数 Gini 定义如下,其中  表示样本属于第i个类别的概率: 假设现在有一枚两面都是字的硬币,很明显不管怎么扔硬币都是字朝上,所以根据基尼系数的公式计算后结果为 0 。如果现在有一枚正常的硬币,那在扔硬币时字朝上和花朝上的概率都是 0.5 。所以根据基尼系数的公式计算后结果为 0.5 。可以看出事件越确定基尼系数越低,越模棱两可基尼系数就越高。所以基尼系数与信息熵类似,不确定性越高,基尼系数越高。 和sklearn中其他分类器一样, DecisionTreeClassifier 类中的 fit 函数用于训练模型, fit 函数有两个向量输入: •  X :大小为 [样本数量,特征数量] 的 ndarray ,存放训练样本 •  Y :值为整型,大小为 [样本数量] 的 ndarray ,存放训练样本的分类标签   DecisionTreeClassifier 类中的 predict 函数用于预测,返回预测标签, predict 函数有一个向量输入: •  X :大小为 [样本数量,特征数量] 的 ndarray ,存放预测样本   DecisionTreeClassifier 的使用代码如下: 1. clf = tree.DecisionTreeClassifier() 2. clf.fit(X_train, Y_train) 3. result = clf.predict(X_test)  编程要求 填写 iris_predict(train_sample, train_label, test_sample) 函数完成鸢尾花分类任务,其中: •  train_sample :训练样本 •  train_label :训练标签 •  test_sample :测试样本  测试说明 只需返回预测结果即可,程序内部会检测您的代码,预测正确率高于 95% 视为过关。   开始你的任务吧,祝你成功!

from sklearn.tree import DecisionTreeClassifier

def iris_predict(train_sample, train_label, test_sample):
    '''
    实现功能:1.训练模型 2.预测
    :param train_sample: 包含多条训练样本的样本集,类型为ndarray
    :param train_label: 包含多条训练样本标签的标签集,类型为ndarray
    :param test_sample: 包含多条测试样本的测试集,类型为ndarry
    :return: test_sample对应的预测标签
    '''
    
    # ************* Begin ************#
    # 1. 初始化决策树分类器:用信息增益划分,固定随机种子,限制树深度防过拟合
    clf = DecisionTreeClassifier(
        criterion='entropy',
        max_depth=3,
        random_state=0
    )
    # 2. 训练模型
    clf.fit(train_sample, train_label)
    # 3. 预测并返回结果
    return clf.predict(test_sample)
    # ************* End **************#

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐