构建鸢尾花决策树模型

构建鸢尾花决策树模型


阅读这篇文章之前你需要对决策树有所了解,并具有一定的python基础,文中并未阐述原理,只是演示构建模型的步骤。

完整代码极其数据集(审核中)

预处理数据

我选用了一个经典数据集来展示如何构建一个决策树模型,这个数据集是——Iris 鸢尾花数据集。
构建鸢尾花决策树模型
运行上面代码我们可以得到图1:

构建鸢尾花决策树模型
鸢尾花数据集是个既简单又成熟的数据集,没有必要处理,但是我们发现图中画出的一个点并不是那么合群,我们处理掉它。
构建鸢尾花决策树模型
然后我们获得两张图片,如图2和图3所示。
构建鸢尾花决策树模型

构建鸢尾花决策树模型
在图3的橙色中是处理后的数据,这样就没有异常的数据了。
下面我们查看数据中的关系:
构建鸢尾花决策树模型
构建鸢尾花决策树模型
在图4中可以看出**’petal_length’, 'petal_width’特征重叠的值比较少**,这意味这两种特征区分能力更强。最后我们也可以看到,这两种基本上起了决定作用。
预处理数据是极其重要的事情。但是因为这个数据集很成熟了,所以处理的很迅速。

优化模型

数据预处理完毕后,我们可以使用Scikit-learn(sklearn),它是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression)、降维(Dimensionality Reduction)、分类(Classfication)、聚类(Clustering)等方法。

构建鸢尾花决策树模型
运行上面程序可以得到一次训练的精度,我们可以借此一窥模型的优劣。但事实上一个模型的性能是需要很多指标才能衡量的。
构建鸢尾花决策树模型
下面进行模型的参数调整:

构建鸢尾花决策树模型
得到以下参数
构建鸢尾花决策树模型
这种自动获取参数的方法比手动调节省力气,但有利有弊吧。下面我们将使用获得这些参数训练一个模型,然后使用交叉验证查看其精度。

验证

构建鸢尾花决策树模型
构建鸢尾花决策树模型
运行上面代码将得到图7
构建鸢尾花决策树模型
可以看到调节参数后精度上升了。

决策树的结构

为了获取我们构建的决策树的结构,执行以下代码。
构建鸢尾花决策树模型
得到图8:构建鸢尾花决策树模型
下面简要介绍一下此决策树的意义,花瓣宽度大于1.75cm时划为VirGinica类,当花瓣宽度不大于1.75cm且花瓣长度小于2.5cm时为Setosa类,花瓣宽度不大于1.75cm且花瓣长度不小于2.5cm时为Versicolour类。

另外我们在分析数据时发现’petal_length’, 'petal_width’特征重叠的值比较少,这意味这两种特征区分能力更强。这里我们可以再次验证一下。
构建鸢尾花决策树模型
运行上述代码,得到图9,可以看出各个特征的重要程度。
构建鸢尾花决策树模型