决策树分类器vc维如何计算_决策树可视化—初学者快速ML教程

面向初学者的10行python代码,用于构建决策树并将其可视化

377dfc8a11394d5163a05916e33be291.png

> Photo by Jessica Lewis on Unsplash

二十个问题是一款游戏,从本质上讲,您可以通过问20个"是/否"问题来猜测答案。 决策树是一种基于相同原理的算法。 它是一种机器学习方法,可让您根据一系列问题来确定所讨论对象属于哪个类别。

Prateek Karkare的一篇非常不错的文章阐述了该算法背后的直觉。 让我们看看如何编写代码。

数据集

我们将使用鸢尾花数据集。 该数据集列出了3种不同类型的鸢尾花的一些特征-萼片和花瓣的长度以及宽度。 我们要对决策树进行的操作是基于这些功能来区分这三种虹膜类型-Iris Setosa,Iris Versicolor和Iris Virginica。

145f8e70acfd3779b7552c0199bcbc4d.png
2f85e4f36eb733ef28da77daad532886.png
087f6b1cd16663b39dd137e229bc387f.png

> Versicolor | Virginica | Setosa

我们为每种虹膜类型提供的功能将有助于我们区分它们。 例如,从上面的图像中,我们可以清楚地看到Virginica的花瓣比Setosa的花瓣宽得多,并且快速浏览数据可以证实这一发现。

8e81d899089e0f95f22050adf800cef7.png
657ace7223cba9af25e6e23c6640bc45.png

> source — integratedots

维基百科提到了数据集的完整细节。 可以去那里深入研究数据集。 我们需要开始编码的所有事情是,数据集中有150行,每种虹膜类型有50行。

· 0类代表Setosa,占用0–49行

· 第1类代表Versicolor,占用50–99行

· 第2类代表维珍妮卡,占据100–149行

现在,让我们开始构建构建决策树所需的代码。

代码演练

1)加载并查看数据

让我们将数据加载到内存中,查看功能并打印每种花卉的一些示例。

from sklearn.datasets import load_irisiris = load_iris()#Print Feature Namesprint("Feature Names - ", iris.feature_names,"")
77698ccdb970ff52f757a6198222e99c.png

> Wikipedia gives these features

6f4a996d0b115bdfed2950946fe3a315.png

> Features extracted by Python from the actual dataset

#Print the row 0,50 and 100 i.e. 1 example for each typeprint("Setosa flower 1 - ",iris.data[0])print("Versicolor flower 1 - ",iris.data[50])print("Virginica flower 1 - ",iris.data[100],"")
e933e972a06e0ce2b89c0f3a782f5469.png

这与上面数据集部分中粘贴的Wikipedia屏幕快照匹配。

2)分割数据集

在任何机器学习算法中,我们都需要在与测试数据集非常不同的集合上训练模型。 因此,我们将数据集分为两部分。

import numpy as np#Choose top 2 examples of each flower type as test rowstest_indices = [0,1,50,51,100,101]#training datatrain_target = np.delete(iris.target, test_indices)train_data = np.delete(iris.data, test_indices, axis=0)#testing datatest_target = iris.target[test_indices]test_data = iris.data[test_indices]

3)训练和测试决策树分类器

我们将使用Python的sklearn库来构建决策树分类器

from sklearn import tree#Build the classifierdtClassifier = tree.DecisionTreeClassifier()#Train the classifierdtClassifier.fit(train_data, train_target)#Print the actual labels of each test pointprint("********** Actual **************")for p in range(len(test_indices)):   print("Test Row ",test_indices[p], " belongs to the class ",test_target[p] )predicted_target = (dtClassifier.predict(test_data))#Print the predicted labels of each test pointprint("********** Predicted **************")for p in range(len(test_indices)):   print("Test Row ",test_indices[p], " is predicted to be of the class ", predicted_target[p] )
dcb0f1325e5ee0e054a9d5685fda391c.png

4)可视化树

我们将使用graphviz库将树可视化。 macOS用户将必须使用自制软件安装graphviz,而pip安装将无法进行。

#Visualize The Decision Treefrom graphviz import Sourcegraph = Source(tree.export_graphviz(dtClassifier, out_file=None,                                     feature_names=iris.feature_names,                                     class_names=iris.target_names,                                     filled=True, rounded=True,                                     node_ids= True, special_characters=True))graph.format = 'png'graph.render('dtree_render',view=True)

观察如何在树的每个节点上做出决定,然后根据答案向左或向右移动。 节点0检查花瓣宽度是否≤0.8 cm。 如果真是这样,那朵花马上就被定为濑户osa。 否则,我们转到节点2并检查花瓣宽度是否≤1.75cm,依此类推。

09212635c05ced5b5c635fe46caccaf0.png

> Graphviz Output Image

查看通过决策树运行的实际测试行。 有问题的示例行是Virginica类的第100行。

45d72c1393c61da4401b045b6b0bb271.gif

您可以尝试在树中运行自己的示例,然后查看它是否适合您。

完整的代码要点在这里。

下一步

单个决策树本身并没有太大用处。 仅拥有一个决策树是很容易出错并且不可靠的。 相反,决策树更实际的用例是使用很多决策树。 那就是所谓的随机森林。 本文将对随机森林进行直观的了解。 将来,我们还将为随机森林构建类似的代码演练。

AI毕业生的目标是组织和建立AI社区,该社区不仅是开源的,而且关注其道德和政治方面。 随后将有更多此类实验驱动的简化AI概念出现。 如果您喜欢这个或有任何反馈或后续问题,请在下面评论。

(本文翻译自Rishi Sidhu的文章《Decision Tree Visualisation — Quick ML Tutorial for Beginners》,参考:https://medium.com/x8-the-ai-community/decision-tree-visualisation-quick-ml-tutorial-for-beginners-6d1028542c31)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值