当前位置:   article > 正文

吴恩达机器学习实践实验室:决策树(Decision Trees)_吴恩达机器学习实验室

吴恩达机器学习实验室

在本练习中,您将从头开始实施决策树,并将其应用于蘑菇可食用还是有毒的分类任务。

1-包

首先,让我们运行下面的单元格来导入此分配过程中所需的所有包。

  • numpy是在Python中处理矩阵的基本包。
  • matplotlib是一个著名的Python绘图库。
  • utils.py包含此赋值的辅助函数。您不需要修改此文件中的代码。
import numpy as np
import matplotlib.pyplot as plt
from public_tests import *
%matplotlib inline
  • 1
  • 2
  • 3
  • 4

2-问题陈述

假设你正在创办一家种植和销售野生蘑菇的公司。

  • 由于并非所有蘑菇都是可食用的,因此您希望能够根据蘑菇的物理属性来判断其是否可食用或有毒。
  • 您有一些现有的数据可以用于此任务。

你能用这些数据来帮助你确定哪些蘑菇可以安全销售吗?
注:所使用的数据集仅用于说明目的。它并不意味着成为识别食用蘑菇的指南。

3-数据集

您将从加载此任务的数据集开始。您收集的数据集如下:
在这里插入图片描述

  • 你有10个蘑菇的例子。对于每个示例,都有
    • “三个特征”
      • “Cap Color”(棕色或红色)
      • “Stalk Shape”(锥形或扩大)
      • “Solitary”(是或否)
    • “Label Edible”
      • (1表示是,0表示有毒)

3.1一个热编码数据集

为了便于实现,我们对特性进行了热编码(将它们转换为0或1值特性)
在这里插入图片描述
因此

  • X_train包含每个示例的三个特征
    • 棕色(值1表示“棕色”的菌盖颜色,0表示“红色”的菌帽颜色)
    • 锥形(值1指示“锥形茎形状”,0表示茎形状“扩大”)
    • 孤立(值1表明“是”,0表明“否”)
  • y_train表示蘑菇是否可食用
    • y=1表示可食用
    • y=0表示有毒
X_train = np.array([[1,1,1],[1,0,1],[1,0,0],[1,0,0],[1,1,1],[0,1,1],[0,0,0],[1,0,1],[0,1,0],[1,0,0]])
y_train = np.array([1,1,0,0,1,0,0,1,1,0])
  • 1
  • 2

查看变量
让我们更熟悉您的数据集。

  • 一个好的开始是打印出每个变量,看看它包含什么。

下面的代码打印X_train的前几个元素和变量的类型。

print("First few elements of X_train:\n", X_train[:5])
print("Type of X_train:",type(X_train))
  • 1
  • 2
First few elements of X_train:
 [[1 1 1]
 [1 0 1]
 [1 0 0]
 [1 0 0]
 [1 1 1]]
Type of X_train: <class 'numpy.ndarray'>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

现在,让我们为y_train做同样的事情

print("First few elements of y_train:", y_train[:5])
print("Type of y_train:",type(y_train))
  • 1
  • 2
First few elements of y_train: [1 1 0 0 1]
Type of y_train: <class 'numpy.ndarray'>
  • 1
  • 2

检查变量的维度
熟悉数据的另一种有用方法是查看其维度。
请打印X_train和y_train的形状,并查看您的数据集中有多少训练示例。

print ('The shape of X_train is:', X_train.shape)
print ('The shape of y_train is: ', y_train.shape)
print ('Number of training examples (m):', len(X_train))
  • 1
  • 2
  • 3

The shape of X_train is: (10, 3)
The shape of y_train is:  (10,)
Number of training examples (m): 10
  • 1
  • 2
  • 3
  • 4

4-决策树

在这个实践实验室中,你将根据提供的数据集构建一个决策树。

  • 回想一下,构建决策树的步骤如下:
    • 从根节点的所有示例
    • 开始计算所有可能特征的拆分信息增益,并选择信息增益最高的一个
    • 根据所选特征拆分数据集,并创建树的左分支和右分支
    • 继续重复拆分过程,直到满足停止标准。
  • 在本实验室中,您将实现以下功能,使您可以使用具有最高信息增益的特征将节点拆分为左分支和右分支
    • 计算节点处的熵
    • 根据给定的特征将节点处的数据集拆分为左右分支
    • 计算在给定特征上拆分的信息增益
    • 选择最大化信息增益的特征
  • 然后我们将使用您实现的辅助函数通过重复拆分过程来构建决策树,直到满足停止标准
    • 对于这个实验室,我们选择的停止标准是将最大深度设置为2

4.1计算熵

首先,您将编写一个名为compute_entropy的辅助函数,用于计算节点处的熵(杂质的度量)。

  • 该函数接受一个numpy数组(y),该数组指示该节点中的示例是可食用的(1)还是有毒的(0)

完成下面的compute_entropy()函数以:

推荐阅读
相关标签