Scikit-learn-iris-macOS-案例-機(jī)器學(xué)習(xí)入門

利用scikit-learn工具和經(jīng)典的iris鳶尾花分類案例快速上手機(jī)器學(xué)習(xí)

準(zhǔn)備工作

下載并安裝python3.x
https://www.python.org/

終端安裝pip和Virtualenv虛擬環(huán)境管理

sudo easy_install pip
sudo pip install --upgrade virtualenv 

創(chuàng)建項(xiàng)目文件夾

mkdir ~/desktop/myapp

初始化虛擬環(huán)境

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

激活虛擬環(huán)境

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

終端提示行前面出現(xiàn)(venv)字樣

安裝Numpy和Scipy,Scikit-learn

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

圖表生產(chǎn)模塊朗兵,可選安裝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這主要是網(wǎng)絡(luò)不穩(wěn)定造成的愿待。解決方案:用sudo vim /etc/resolv.conf打開設(shè)置,輸入i進(jìn)入插入模式蛙吏,上下移動(dòng)光標(biāo)作谭,增加粘貼一行nameserver 8.8.8.8或者nameserver 114.114.114.114然后esc退出插入模式稽物,:wq保存退出,重新使用上面的命令折欠。如果中途又失敗贝或,需要重新增加8.8.8.8,因?yàn)闀?huì)被重置锐秦。

圖表生產(chǎn)模塊咪奖,可選安裝graphviz(需要翻墻)

brew install graphviz

遇到The Command Line Tools header package must be installed on Mojave錯(cuò)誤,請(qǐng)按指示目錄打開文件夾/Library/Developer/CommandLineTools/Packages/進(jìn)行安裝。

windows用戶點(diǎn)這里下載安裝graphviz

--

了解案例

Iris鳶尾花分類經(jīng)典案例介紹
點(diǎn)這里wiki地址查看詳細(xì)
這里鳶尾花數(shù)據(jù)集共有150條农猬,每條數(shù)據(jù)中記錄了每朵花的花萼長(zhǎng)度赡艰、寬度以及花瓣長(zhǎng)度、寬度這四個(gè)數(shù)據(jù)斤葱。
這些花被植物學(xué)家分成三種類型慷垮,前50條是setosa(山鳶尾花),中間50條是versicolor(變色鳶尾花),最后三種是virginica(維吉尼亞鳶尾花)揍堕。

但是料身,計(jì)算機(jī)并不知道植物學(xué)家的分類標(biāo)準(zhǔn)(花萼多寬是山鳶尾花?花瓣多長(zhǎng)是變色鳶尾花衩茸?)芹血。我們的任務(wù)就是訓(xùn)練計(jì)算機(jī)根據(jù)這些數(shù)據(jù)推算出植物學(xué)家的分類標(biāo)準(zhǔn)(模型),以便于以后對(duì)任何一朵鳶尾花數(shù)據(jù)都能自動(dòng)判斷出類型來。

--

了解數(shù)據(jù)

應(yīng)用程序python文件夾中的IDLE幔烛,command+n新建,然后save as存儲(chǔ)到桌面myapp文件夾下命名iris.py,文件內(nèi)容如下

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]])

在終端進(jìn)入項(xiàng)目文件夾并激活環(huán)境

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

前面提示出現(xiàn)(venv)字樣

運(yùn)行我們的代碼

python iris.py

觀察輸出的各種數(shù)據(jù)啃擦,注意到data包含了四個(gè)長(zhǎng)寬數(shù)字,target表示了屬于第幾種鳶尾花類型

--

訓(xùn)練模型和測(cè)試模型

我們把第0朵饿悬、第50朵令蛉、第100朵的數(shù)據(jù)提取出來作為測(cè)試數(shù)據(jù),其余的作為訓(xùn)練數(shù)據(jù)狡恬。
然后我們用訓(xùn)練數(shù)據(jù)培訓(xùn)我們的計(jì)算機(jī)珠叔,讓它自動(dòng)從數(shù)據(jù)中找出分類規(guī)律,也就是分類模型弟劲。
然后我們?cè)儆眠@個(gè)模型去評(píng)估這三朵花(由于沒有參與訓(xùn)練祷安,所以計(jì)算機(jī)并不知道它們是哪一種類型),如果計(jì)算機(jī)評(píng)估出來的這三朵花類型與之前植物學(xué)家的看法一致兔乞,我們就認(rèn)為計(jì)算機(jī)掌握了鳶尾花的分類方法(盡管我們從頭到尾都不知道植物學(xué)家如何分類的汇鞭,也不知道計(jì)算機(jī)是怎么分類的)。
修改代碼如下

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

iris=load_iris()
test_idx=[0,50,100] #三朵預(yù)留出來做測(cè)試的花

train_target=np.delete(iris.target,test_idx,0) #訓(xùn)練模型不包含三朵花
train_data=np.delete(iris.data,test_idx,0) #訓(xùn)練模型不包含三朵花

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

#用數(shù)據(jù)訓(xùn)練計(jì)算機(jī)
clf=tree.DecisionTreeClassifier()  #這里使用了決策樹分類器
clf.fit(train_data,train_target)

print(test_target) #植物學(xué)家對(duì)三朵花分類的看法
print(clf.predict(test_data)) #計(jì)算機(jī)對(duì)三朵花分類的看法

在終端再次運(yùn)行我們的代碼

python iris.py

如果正常則輸出

[0 1 2]
[0 1 2]

這表示計(jì)算機(jī)訓(xùn)練出來的模型和植物學(xué)家觀點(diǎn)一致

--

深入理解決策樹

請(qǐng)確保正確安裝了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")

再次執(zhí)行

sudo python iris.py

這次將會(huì)在桌面myapp文件夾內(nèi)生成一個(gè)pdf文件报嵌,打開后類似下圖虱咧,從圖中我們可以看到計(jì)算機(jī)從147條數(shù)據(jù)中自動(dòng)總結(jié)出來的分類規(guī)律熊榛。


irisClassifierTree.png

探索人工智能的新邊界

如果您發(fā)現(xiàn)文章錯(cuò)誤锚国,請(qǐng)不吝留言指正;
如果您覺得有用玄坦,請(qǐng)點(diǎn)喜歡血筑;
如果您覺得很有用,感謝轉(zhuǎn)發(fā)~


END

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末煎楣,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子择懂,更是在濱河造成了極大的恐慌喻喳,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,123評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件困曙,死亡現(xiàn)場(chǎng)離奇詭異表伦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)慷丽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門蹦哼,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人要糊,你說我怎么就攤上這事纲熏。” “怎么了?”我有些...
    開封第一講書人閱讀 156,723評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵局劲,是天一觀的道長(zhǎng)勺拣。 經(jīng)常有香客問我,道長(zhǎng)鱼填,這世上最難降的妖魔是什么宣脉? 我笑而不...
    開封第一講書人閱讀 56,357評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮剔氏,結(jié)果婚禮上塑猖,老公的妹妹穿的比我還像新娘。我一直安慰自己谈跛,他們只是感情好羊苟,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,412評(píng)論 5 384
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著感憾,像睡著了一般蜡励。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上阻桅,一...
    開封第一講書人閱讀 49,760評(píng)論 1 289
  • 那天凉倚,我揣著相機(jī)與錄音,去河邊找鬼嫂沉。 笑死稽寒,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的趟章。 我是一名探鬼主播杏糙,決...
    沈念sama閱讀 38,904評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼蚓土!你這毒婦竟也來了宏侍?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,672評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤蜀漆,失蹤者是張志新(化名)和其女友劉穎谅河,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體确丢,經(jīng)...
    沈念sama閱讀 44,118評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡绷耍,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,456評(píng)論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了蠕嫁。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片锨天。...
    茶點(diǎn)故事閱讀 38,599評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖剃毒,靈堂內(nèi)的尸體忽然破棺而出病袄,到底是詐尸還是另有隱情搂赋,我是刑警寧澤,帶...
    沈念sama閱讀 34,264評(píng)論 4 328
  • 正文 年R本政府宣布益缠,位于F島的核電站脑奠,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏幅慌。R本人自食惡果不足惜宋欺,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,857評(píng)論 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望胰伍。 院中可真熱鬧齿诞,春花似錦、人聲如沸骂租。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)渗饮。三九已至但汞,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間互站,已是汗流浹背私蕾。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評(píng)論 1 264
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留胡桃,地道東北人踩叭。 一個(gè)月前我還...
    沈念sama閱讀 46,286評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像标捺,于是被迫代替她去往敵國(guó)和親懊纳。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,465評(píng)論 2 348