目錄
機器學習簡單概述
機器學習的主要任務
學習機器學習的原因
python語言優勢
1.1 何謂機器學習
簡單的說,機器學習就是把無序的數據變換成有用的信息。
機器學習的主要任務就分類。
機器學習關鍵術語:
分類;訓練集;樣本集;訓練樣本;目標樣本;知識表示
訓練集是用于機器學習算法的數據樣本集合
1.3 機器學習的主要任務
機器學習的主要如何解決分類問題,主要任務是將實例數據劃分到合適的分類中。
機器學習的另一項任務就是回歸。(回歸的例子之一就是 數據擬合曲線)
分類和回歸屬于監督學習。
監督學習:因為這類算法必須知道預測什么,即目標變量的分類信息。
無監督學習:此時數據沒有類別信息,也不會給定目標值。無監督學習可以減少數據特征的維度,使我們用二維圖或三維圖更加直觀地展示數據信息。
聚類:數據集合分成類似的對象組成多個類的過程。
密度估計:尋找描述數據統計值的過程。
1.4 如何選擇合適的算法
先考慮兩個問題:
使用機器學習算法的目的,想要完成何種任務?
需要分析或收集的數據是什么?(了解數據的以下特征:特征值是離散變量還是連續型變量,特征量是否存在缺失的值)
我們只能一定程度上縮小算法的選擇范圍,一般不存在最好的算法或給出最好結果的算法,同時還要嘗試不同算法的執行效果。
發現最好的算法的關鍵環節是反復試錯的過程。
1.5 開發及其學習應用程序的步驟
收集數據。我們有很多辦法收集數據,如爬蟲,設備發送的信息。
準備輸入數據。確保數據的格式符合要求。本書采用python的List
分析輸入數據。手工打開文本編輯器,看數據是否為空。瀏覽數據,分析是否可以識別模式。確保數據集中沒有垃圾數據。
訓練算法。將前兩步得到的格式化的數據輸入到算法,從中抽取知識和信息。得到的知識需要存儲為計算機可以處理的格式。
測試算法。將實際使用第4步得到的算法。對于監督學習,必須已知用于評估算法的目標變量值;對于無監督學習,也必須用到其他的評測手段來檢驗算法的成功率。
使用算法。將機器學習算法轉換為應用程序,執行實際任務。
1.6 python語言的優勢
有以下幾個原因:(1)python的語法清晰;(2)易于操作的純文本文件;(3)使用廣泛,存在大量的開發文檔
1.7 NumPy函數基礎
下面給出一個數組和矩陣的例子:
In [1]:import numpy as np
In [2]:x=np.random.rand(4,4)
In [3]:x
Out[3]:
array([[ 0.52844327, 0.22339639, 0.1034135 , 0.463985 ],
[ 0.14394297, 0.04331558, 0.17968244, 0.55428581],
[ 0.29320121, 0.4110452 , 0.6663981 , 0.14709608],
[ 0.69421236, 0.77925693, 0.64956842, 0.13911624]])
上述命令構造了一個4*4的隨機數組。
In [6]:np.mat(x)
Out[6]:
matrix([[ 0.52844327, 0.22339639, 0.1034135 , 0.463985 ],
[ 0.14394297, 0.04331558, 0.17968244, 0.55428581],
[ 0.29320121, 0.4110452 , 0.6663981 , 0.14709608],
[ 0.69421236, 0.77925693, 0.64956842, 0.13911624]])
In [7]:randMat=np.mat(x)
調用mat()函數將數組轉行為矩陣。
In [8]:randMat.I
Out[8]:
matrix([[ 5.20712532, -4.48860333, 3.32227592, -2.99571552],
[-5.6330336 , 4.87766411, -6.17839321, 5.88601676],
[ 1.49156708, -1.72882662, 4.23683893, -2.56636519],
[-1.3955605 , 3.14903216, -1.75339714, 1.14992431]])
In [9]:invRandMat=randMat.I
.I 操作符實現了矩陣的求逆運算。
In [10]:randMat*invRandMat
Out[10]:
matrix([[ 1.00000000e+00, -4.44089210e-16, 4.44089210e-16,
-2.22044605e-16],
[ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
0.00000000e+00],
[ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
0.00000000e+00],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
1.00000000e+00]])
In [11]:myEye=randMat*invRandMat
執行了矩陣乘法,得到矩陣與其逆矩陣相乘的結果。
In [13]:myEye-np.eye(4)
Out[13]:
matrix([[ 0.00000000e+00, -4.44089210e-16, 4.44089210e-16,
-2.22044605e-16],
[ 0.00000000e+00, -1.11022302e-16, 0.00000000e+00,
0.00000000e+00],
[ 0.00000000e+00, 0.00000000e+00, -4.44089210e-16,
0.00000000e+00],
[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
4.44089210e-16]])
函數eye(4)創建了4*4的單位矩陣
1.8 本章小結
學習機器學習算法,必須了解數據實例,每個數據實例由多個特征值組成。分類是基本的機器學習任務,它分析未分類數據,以確定如何將其放入已知群組中。為了構建和訓練分類器,必須首先輸入大量已知分類的數據,我們將這些數據稱之為訓練樣本集。
本節筆記來自,《機器學習實戰》,作者:Peter Harrington,出版社: 人民郵電出版社
原作名: Machine Learning in Action,譯者: 曲亞東 / 李銳 / 王斌 / 李鵬