Google出了一個面向新手的機器學習教程,每集六七分鐘,言簡意賅,只掌握最基礎的Python語法知識,便可以實現一些基本的機器學習算法。
Machine learning recipes(一)
開始前,課程將用到兩個開源的庫文件—scikit-learn和Tensorflow。
接下來步入正題:寫一個能區分蘋果和橘子的代碼,若寫出大量規則是行不通的,因為現實生活中充滿著不確定因素,制定的規則往往會被打破。所以我們需要一種算法能自動生成規則,這就需要訓練一個分類器classifier(可以認為是一種方法:接收輸入數據後給它們分配標籤labels作為輸出)。而用來實現分類器的技術稱為監督學習(Supervised Learning)。
寫這個分類器的代碼要用到scikit-learn這個Python包。
安裝scikit-learn之前,要先安裝Numpy+MKL、Scipy這兩個包,進入加州大學實驗室的網站:http://www.lfd.uci.edu/~gohlke/pythonlibs/ ,分別找到Numpy、Scipy這兩個包的下載連結,然後下載whl格式的安裝文件。
注意下載安裝文件的版本號要和電腦上的Python版本相對應,比如小編的電腦是64位作業系統,Python是3.5版本的,下載的安裝文件是numpy-1.13.1+mkl-cp35-cp35m-win_amd64.whl、scipy-1.0.0b1-cp35-cp35m-win_amd64.whl。
下載Numpy的安裝包
下載Scipy的安裝包
在安裝Python的包以前,我們要確認電腦上的Python中有pip模塊,這樣我們才能使用whl文件安裝Python包。
下載好安裝文件以後,在「開始」菜單的「運行」裡面輸入「cmd」打開DOS命令行,在DOS命令行下面進入剛才下載安裝文件的文件夾,分別輸入下面兩個命令,安裝Numpy、Scipy這兩個包:
pip install numpy-1.13.1+mkl-cp35-cp35m-win_amd64.whl
pip install scipy-1.0.0b1-cp35-cp35m-win_amd64.whl
安裝numpy包
安裝scipy包
最後,在上面說到的加州大學實驗室網站下載並安裝scikit-learn:
pip install scikit_learn-0.19.0-cp35-cp35m-win_amd64.whl
下載scikit-learn的安裝包
安裝scikit-learn包
在Python中輸入:
import sklearn
若沒有報錯則說明安裝成功!
那麼首先用第1行代碼:引用分類器(決策樹)後面解釋
from sklearn import tree
對於監督學習有幾個基本步驟我們得去實現:
Step1:Collect Training Data(收集訓練數據)
Step2:Train Classifier(訓練分類器)
Step3:Make Predictions(作出預測)
Step1:Collect Training Data(收集訓練數據)
擁有越多的訓練數據,我們的分類器就能工作越好。
下面用第2、3行代碼表示訓練數據,定義兩個變量:features特徵和labels標籤並處理一下特性數據用整數而不用字符串,0代表Bumpy;1代表Smooth;0代表Apple;1代表橘子。
features = [[140, 1], [130, 1], [150, 0], [170, 0]]
labels = [0, 0, 1, 1]
Step2:Train Classifier(訓練分類器)
這裡用到的分類器類型為決策樹Decision Tree,後面課程會深入解釋。
在第4行代碼中創建一個分類器:
clf = tree.DecisionTreeClassifier()
用第5行代碼來訓練分類器:
clf = clf.fit(features, labels)
現在就有了一個訓練好的分類器啦!
Step3:Make Predictions(作出預測)
下面用最後一行第6行代碼我們用訓練好的分類器預測一個水果Weight:150g,表皮Bumpy的水果是什麼?如果輸出為0則為Apple,1為Orange。
print clf.predict([150, 0])
注意:如果你用的是Python3,需要將第六行代碼改為:
print(clf.predict([150, 0]))
程序的6行代碼
我們人為來預測一下會是什麼?根據訓練數據我們認為會是1即Orange
在Python中運行一下結果輸出為
[1]
恭喜!我們用了6行代碼就實現了一個機器學習程序!
作為練習,你可以再在另一個程序,改變訓練數據,來創建一個新的分類器。數據如下,來動手練習一下吧!
你也會有疑問,為什麼用水果特徵來做訓練數據而不用圖片?
在後面的章節會提到,但是這次用的方法是最普遍的。
後續的課程我會繼續和大家一起學習,有的小夥伴覺得節奏太慢忍不住要先學習一下,我把課程連結放在這裡,方便小夥伴們自行觀看學習!
傳送門:http://i.youku.com/i/UMjczOTc0NDkzNg==/custom?id=87105
好了,以上就是本篇文章的所有內容了,強烈建議大家能夠親手實踐一下,畢竟紙上得來終覺淺,絕知此事要躬行。最後感謝大家的閱讀。