Google机器学习教程心得(二)决策树与可视化

Visualizing a Decision Tree

Google Machine Learning Recipes 2 官方中文博客 http://chinagdg.org/2016/03/machine-learning-recipes-for-new-developers/ 视频地址 http://v.youku.com/v_show/id_XMTUzNDE5Mzg0MA==.html?f=26979872&from=y1.2-3.4.3 Github工程地址 https://github.com/ahangchen/GoogleML 欢迎Star,也欢迎到Issue区讨论

我们从Iris问题,学习决策树可视化,了解决策树工作过程。

Why decision Tree

有很多分类器

  • Artificial neural network
  • Support Vector Machine
  • Lions
  • Tigers
  • Bears

为啥有这么多动物……

决策树好处

  • Easy to read and understand
  • 仅有的可解释的几种模型之一(能理解分类器做决策的过程)

决策树就是一系列关于feature的判断作为结点,以label为叶子的一棵树。因此feature越好,结果也越好。

Iris

经典机器学习问题:识别三种Iris

可以在维基看到这个数据集的详细信息,共 50 * 3 = 150 条记录

四个feature:Sepal length, Sepal width, Petal length, Petal width

三个label:setosa, versicolor, virginica。

可以从sklearn中直接导入。

组成

  • metadata: feature_names, target_names(这个其实就是label names),描述数据用
  • data: 具体feature数据,是一个数组,数组中的每个元素是dataset中的一条数据
  • target: 具体label数据,是一个数组

目标

  1. 导入数据
  2. 训练分类器
  3. 预测新的花的label
  4. 查看决策树

测试数据

  • 非训练数据的真实数据,测试分类器的准确度,
  • 这里从dataset中抽出第0,第50,第100条作为测试数据
  • numpy是一个Python的数据处理库,查看官方Tutorial学习更多
  • 测试有很多内容,后面还会有。

环境

可视化使用了pydot,但Pycharm会升级anaconda中的包,导致找不到,我执行了

sudo /home/cwh/anaconda2/bin/conda install -p /home/cwh/anaconda2 pydot -y

重新安装pydot修复pydot找不到的问题;

另外pydot会找不到Graphviz,需要再安装

sudo /home/cwh/anaconda2/bin/conda install -p /home/cwh/anaconda2 Graphviz -y

然后将Graphviz添加到环境变量中,修改/etc/environment为以下内容,重启系统(我的系统是Ubuntu14.04LTS):

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/cwh/android-sdk-linux/ndk-bundle:/home/cwh/android-sdk-linux/platform-tools:/home/cwh/anaconda2/pkgs/graphviz-2.38.0-1/bin"

然后又会有Graphviz中找不到libgvplugin_pango.so.6的问题,根据官网Issue的解答,应该是少了依赖库

ldd /home/cwh/anaconda2/pkgs/graphviz-2.38.0-1/lib/graphviz/libgvplugin_pango.so.6

发现libpng16 not found,于是安装libpng16,在这里下载,然后安装,

./configure
make
sudo make install
sudo ldconfig

再运行代码即可。

代码

Viz:以Iris为例,导入数据,训练分类器,预测,查看决策树

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏null的专栏

智能算法——PageRank

一、PageRank的基本概念 1、PageRank的概念 PageRank,即网页排名算法,又称为网页级别算法,是由佩奇和布林在1997年提出来的链接分析...

2635
来自专栏葡萄城控件技术团队

位图和SVG用法比较

位图,亦称为点阵图像或绘制图像,是由称作像素(图片元素)的单个点组成的。这些点可以进行不同的排列和染色以构成图样。当放大位图时,可以看见赖以构成整个图像的无数单...

1876
来自专栏ATYUN订阅号

如何用自己的数据训练MASK R-CNN模型

计算机一直很擅长数字处理,却苦于分析图像中的大量数据。直到最近,创建图形处理单元库已不仅仅用于游戏,现在我们可以利用数千个核心的原始力量来揭示图片背后的含义。

1396
来自专栏祝威廉

TensorFlow 模型保存和恢复示例

在之前一篇文章里:使用CNN+ Auto-Encoder 实现无监督Sentence Embedding (代码基于Tensorflow),训练完成后,enco...

714
来自专栏mathor

LeetCode69. x 的平方根

 这道题直接一个return Math.sqrt就出来了,但是秉承着学习的心态,尝试着用二分法ac  首先要确定的就是左右区间,左区间是0无疑了,那么右...

882
来自专栏企鹅号快讯

别@微信团队了,我用Python给自己戴上了圣诞帽!

引言 大家纷纷@官方微信 给自己的头像加上一顶圣诞帽。当然这种事情用很多P图软件都可以做到。但是作为一个学习图像处理的技术人,还是觉得我们有必要写一个程序来做这...

17810
来自专栏iOSDevLog

将Core ML模型集成到您的应用程序中

此示例应用程序使用经过训练的MarsHabitatPricer.mlmodel模型来预测火星上的栖息地价格。

571
来自专栏章鱼的慢慢技术路

OpenGL基本框架与三维对象绘制

1252
来自专栏机器之心

世界上最好的语言PHP:我也可以用OpenCV搞计算机视觉

就像许多开发人员一样,我也经常使用别人的工作成果(Medium 上的文章、GitHub 上的代码等),因此也很乐意与社区分享我的成果。写文章不仅是对社区的一种回...

1053
来自专栏企鹅号快讯

不用@微信官方了,Python20行自动戴帽!

这两天被朋友圈里@微信官方要求戴帽的消息刷屏了,会玩的都悄咪咪地用美图秀秀一类的app给自己头像p一顶然后可高兴地表示“哎呀好神奇hhhh”,呆萌的当然就一直等...

1887

扫码关注云+社区