[音乐播放]
最后一集，我们使用决策树作为分类器。
今天我们将添加代码来可视化它
所以我们可以看到它是如何工作的。
有许多类型的分类器
你可能以前听说过 - 像神经网络这样的东西
或支持向量机。
那么我们为什么要使用决策树来启动呢？
嗯，他们有一个非常独特的财产 -
它们易于阅读和理解。
事实上，它们是少数可解释的模型之一，
在那里你可以准确理解分类器的确切原因
决定。
这在实践中非常有用。
首先，我将向您介绍
到今天我们将使用的真实数据集。
它叫做Iris。
Iris是一个经典的机器学习问题。
在其中，您想要确定什么类型的花
你有基于不同的测量，
喜欢花瓣的长度和宽度。
该数据集包括三种不同类型的花。
它们都是虹膜的种类 - setosa，versicolor，
和维吉尼亚。
向下滚动，你可以看到我们
给出了每种类型的50个例子，总共150个例子。
请注意，有四个功能
用来描述每个例子。
这些是萼片和花瓣的长度和宽度。
就像我们的苹果和橘子问题一样，
前四列给出了功能和最后一列
给出标签，这是每行中的花的类型。
我们的目标是使用此数据集来训练分类器。
然后我们可以使用该分类器来预测什么物种
如果我们得到一朵我们从未有过的新花，我们就拥有了它
之前见过。
了解如何使用现有数据集
是一项很好的技能，所以让我们将Iris导入scikit-learn
并查看代码中的内容。
方便的是，友好的人们在scikit
提供了一堆样本数据集，
包括Iris，以及公用事业
使它们易于导入。
我们可以将Iris导入到我们的代码中。
数据集包括该表
来自维基百科以及一些元数据。
元数据会告诉您功能的名称
和不同类型的花的名称。
功能和示例本身
包含在数据变量中。
例如，如果我打印出第一个条目，
你可以看到这朵花的尺寸。
这些索引以功能名称为主，所以第一个值
是指萼片长度，第二个是萼片宽度，
等等。
目标变量包含标签。
同样，这些索引到目标名称。
让我们打印出第一个。
标签为0表示它是一个setosa。
如果你看一下维基百科的表格，
你会注意到我们刚刚打印出第一行。
现在数据和目标变量都有150个条目。
如果需要，可以迭代它们
像这样打印出整个数据集。
既然我们知道如何使用数据集，
我们准备训练分类器了。
但在我们这样做之前，首先我们需要分割数据。
我将删除几个例子
并将它们放在一边供以后使用。
我们将调用我放弃测试数据的示例。
我们将这些与我们的培训数据分开，
稍后我们将使用我们的测试示例
测试分类器的准确程度
数据从未见过。
测试实际上是一个非常重要的部分
在实践中做好机器学习，
我们将在未来的一集中更详细地介绍它。
只是为了这个练习，我将删除一个例子
每种花的种类。
事实上，数据集是
有序，所以第一个setosa在索引0，
第一个杂色是50，依此类推。
语法看起来有点复杂，但我正在做的事情
从数据和目标变量中删除三个条目。
然后我将创建两组新变量 - 一组
用于培训和一个用于测试。
培训将包含我们的大部分数据，
并且测试将只有我删除的示例。
现在，和以前一样，我们可以创建一个决策树
分类器并根据我们的训练数据进行训练。
在我们想象它之前，让我们使用树
对我们的测试数据进行分类。
我们知道我们每种类型都有一朵花，
我们可以打印出我们期望的标签。
现在让我们看一下树预测的内容。
我们将为其提供测试数据的功能，
我们会收回标签。
您可以看到预测的标签符合我们的测试数据。
这意味着它让他们没事。
现在，请记住，这是一个非常简单的测试，
我们将在未来详细介绍。
现在让我们可视化树
看看分类器的工作原理。
为此，我要复制粘贴
来自scikit教程的一些代码，
并且因为此代码用于可视化
而不是机器学习概念，
我不会在这里详述。
请注意，我正在组合这两个示例中的代码
创建一个易于阅读的PDF。
我可以运行我们的脚本并打开PDF，
我们可以看到树。
要使用它来对数据进行分类，首先要从顶部开始阅读。
每个节点都会询问是或否
关于其中一个功能。
例如，该节点询问踏板宽度
小于0.8厘米。
如果对于您正在分类的示例是正确的，请向左转。
否则，走吧。
现在让我们使用这个树来分类一个例子
从我们的测试数据。
以下是我们第一朵测试花的特征和标签。
请记住，您可以找到功能名称
通过查看元数据。
我们知道这朵花是一种setosa，所以让我们看看
树预测的是什么。
我会调整窗口的大小，以便更容易看到。
树问的第一个问题
是花瓣宽度是否小于0.8厘米。
这是第四个功能。
答案是对的，所以我们继续前进。
此时，我们已经处于叶子节点。
没有其他问题要问，
所以这棵树给了我们一个预测，setosa，
这是对的。
请注意标签为0，它指向该类型的花。
现在让我们尝试我们的第二个测试示例。
这是一个杂色。
让我们看看树预测了什么。
我们再次从顶部读取，这次是踏板宽度
大于0.8厘米。
树问题的答案是错误的，
所以我们走对了
树问的下一个问题是踏板宽度是否正确
小于1.75。
它试图缩小范围。
那是真的，所以我们走了。
现在它询问踏板长度是否小于4.95。
这是真的，所以我们再次左转。
最后，树会询问踏板的宽度
小于1.65。
这是真的，所以离开了。
现在我们有了预测 - 它是一个多色的，
那是对的。
您可以自己尝试最后一个作为练习。
请记住，我们使用树的方式
与它在代码中的工作方式相同。
这就是你如何快速可视化和阅读
决策树。
这里还有很多东西要学，
特别是如何从示例中自动构建它们。
我们将在未来的一集中谈到这一点。
但就目前而言，让我们关注一个重点。
树要求的每一个问题都必须是一个问题
你的功能。
这意味着你的功能越好，树就越好
你可以建立。
下一集将开始寻找
什么是一个很好的功能。
非常感谢您的观看，下次我会见到您。
[音乐播放]