Scikit-learn-iris-macOS-案例-机器学习入门

利用scikit-learn工具和经典的iris鸢尾花分类案例快速上手机器学习

准备工作

下载并安装python3.x
https://www.python.org/

终端安装pip和Virtualenv虚拟环境管理

sudo easy_install pip
sudo pip install --upgrade virtualenv 

创建项目文件夹

mkdir ~/desktop/myapp

初始化虚拟环境

sudo virtualenv --system-site-packages -p python3 ~/venv

激活虚拟环境

cd ~/desktop/myapp
source ./venv/bin/activate

终端提示行前面出现(venv)字样

安装Numpy和Scipy,Scikit-learn

sudo pip install numpy scipy
pip install -U scikit-learn

图表生产模块,可选安装homebrew https://brew.sh/

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

homebrew安装遇到fatal: unable to access 'https://github.com/Homebrew/homebrew/': SSL certificate problem这主要是网络不稳定造成的。解决方案:用sudo vim /etc/resolv.conf打开设置,输入i进入插入模式,上下移动光标,增加粘贴一行nameserver 8.8.8.8或者nameserver 114.114.114.114然后esc退出插入模式,:wq保存退出,重新使用上面的命令。如果中途又失败,需要重新增加8.8.8.8,因为会被重置。

图表生产模块,可选安装graphviz(需要翻墙)

brew install graphviz

遇到The Command Line Tools header package must be installed on Mojave错误,请按指示目录打开文件夹/Library/Developer/CommandLineTools/Packages/进行安装。

windows用户点这里下载安装graphviz

--

了解案例

Iris鸢尾花分类经典案例介绍
点这里wiki地址查看详细
这里鸢尾花数据集共有150条,每条数据中记录了每朵花的花萼长度、宽度以及花瓣长度、宽度这四个数据。
这些花被植物学家分成三种类型,前50条是setosa(山鸢尾花),中间50条是versicolor(变色鸢尾花),最后三种是virginica(维吉尼亚鸢尾花)。

但是,计算机并不知道植物学家的分类标准(花萼多宽是山鸢尾花?花瓣多长是变色鸢尾花?)。我们的任务就是训练计算机根据这些数据推算出植物学家的分类标准(模型),以便于以后对任何一朵鸢尾花数据都能自动判断出类型来。

--

了解数据

应用程序python文件夹中的IDLE,command+n新建,然后save as存储到桌面myapp文件夹下命名iris.py,文件内容如下

from sklearn.datasets import load_iris
iris=load_iris()
print(iris.feature_names)
print(iris.target_names)
print(iris.data[0])
print(iris.target[0])
for i in range(len(iris.target)):
    print ( i,iris.target[i],iris.data[i],iris.target_names[iris.target[i]])

在终端进入项目文件夹并激活环境

cd ~/desktop/myapp
source ./venv/bin/activate

前面提示出现(venv)字样

运行我们的代码

python iris.py

观察输出的各种数据,注意到data包含了四个长宽数字,target表示了属于第几种鸢尾花类型

--

训练模型和测试模型

我们把第0朵、第50朵、第100朵的数据提取出来作为测试数据,其余的作为训练数据。
然后我们用训练数据培训我们的计算机,让它自动从数据中找出分类规律,也就是分类模型。
然后我们再用这个模型去评估这三朵花(由于没有参与训练,所以计算机并不知道它们是哪一种类型),如果计算机评估出来的这三朵花类型与之前植物学家的看法一致,我们就认为计算机掌握了鸢尾花的分类方法(尽管我们从头到尾都不知道植物学家如何分类的,也不知道计算机是怎么分类的)。
修改代码如下

import numpy as np
from sklearn.datasets import load_iris
from sklearn import tree

iris=load_iris()
test_idx=[0,50,100] #三朵预留出来做测试的花

train_target=np.delete(iris.target,test_idx,0) #训练模型不包含三朵花
train_data=np.delete(iris.data,test_idx,0) #训练模型不包含三朵花

test_target=iris.target[test_idx]
test_data=iris.data[test_idx]

#用数据训练计算机
clf=tree.DecisionTreeClassifier()  #这里使用了决策树分类器
clf.fit(train_data,train_target)

print(test_target) #植物学家对三朵花分类的看法
print(clf.predict(test_data)) #计算机对三朵花分类的看法

在终端再次运行我们的代码

python iris.py

如果正常则输出

[0 1 2]
[0 1 2]

这表示计算机训练出来的模型和植物学家观点一致

--

深入理解决策树

请确保正确安装了graphviz模块
在最后增加以下代码

from sklearn.externals.six import StringIO 
import graphviz 
dot_data = tree.export_graphviz(clf, out_file=None, 
                         feature_names=iris.feature_names,  
                         class_names=iris.target_names,  
                         filled=True, rounded=True,  
                         special_characters=True)  
graph = graphviz.Source(dot_data)  
graph.render("iris")

再次执行

sudo python iris.py

这次将会在桌面myapp文件夹内生成一个pdf文件,打开后类似下图,从图中我们可以看到计算机从147条数据中自动总结出来的分类规律。


irisClassifierTree.png

探索人工智能的新边界

如果您发现文章错误,请不吝留言指正;
如果您觉得有用,请点喜欢;
如果您觉得很有用,感谢转发~


END

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350