標籤:

機器學習實戰之準備(一)

目錄

  • 機器學習簡單概述
  • 機器學習的主要任務
  • 學習機器學習的原因
  • python語言優勢

1.1 何謂機器學習

簡單的說,機器學習就是把無序的數據變換成有用的信息。

機器學習的主要任務就分類。

機器學習關鍵術語:

分類;訓練集;樣本集;訓練樣本;目標樣本;知識表示

訓練集是用於機器學習演算法的數據樣本集合

1.3 機器學習的主要任務

機器學習的主要如何解決分類問題,主要任務是將實例數據劃分到合適的分類中。

機器學習的另一項任務就是回歸。(回歸的例子之一就是 數據擬合曲線)

分類和回歸屬於監督學習。

監督學習:因為這類演算法必須知道預測什麼,即目標變數的分類信息。

無監督學習:此時數據沒有類別信息,也不會給定目標值。無監督學習可以減少數據特徵的維度,使我們用二維圖或三維圖更加直觀地展示數據信息。

聚類:數據集合分成類似的對象組成多個類的過程。

密度估計:尋找描述數據統計值的過程。

1.4 如何選擇合適的演算法

先考慮兩個問題:

  • 使用機器學習演算法的目的,想要完成何種任務?
  • 需要分析或收集的數據是什麼?(了解數據的以下特徵:特徵值是離散變數還是連續型變數,特徵量是否存在缺失的值)

我們只能一定程度上縮小演算法的選擇範圍,一般不存在最好的演算法或給出最好結果的演算法,同時還要嘗試不同演算法的執行效果。

發現最好的演算法的關鍵環節是反覆試錯的過程。

1.5 開發及其學習應用程序的步驟

  1. 收集數據。我們有很多辦法收集數據,如爬蟲,設備發送的信息。
  2. 準備輸入數據。確保數據的格式符合要求。本書採用python的List
  3. 分析輸入數據。手工打開文本編輯器,看數據是否為空。瀏覽數據,分析是否可以識別模式。確保數據集中沒有垃圾數據。
  4. 訓練演算法。將前兩步得到的格式化的數據輸入到演算法,從中抽取知識和信息。得到的知識需要存儲為計算機可以處理的格式。
  5. 測試演算法。將實際使用第4步得到的演算法。對於監督學習,必須已知用於評估演算法的目標變數值;對於無監督學習,也必須用到其他的評測手段來檢驗演算法的成功率。
  6. 使用演算法。將機器學習演算法轉換為應用程序,執行實際任務。

1.6 python語言的優勢

有以下幾個原因:(1)python的語法清晰;(2)易於操作的純文本文件;(3)使用廣泛,存在大量的開發文檔

1.7 NumPy函數基礎

下面給出一個數組和矩陣的例子:

In [1]: import numpy as npnnIn [2]: x=np.random.rand(4,4)nnIn [3]: xnOut[3]:narray([[ 0.52844327, 0.22339639, 0.1034135 , 0.463985 ],n[ 0.14394297, 0.04331558, 0.17968244, 0.55428581],n[ 0.29320121, 0.4110452 , 0.6663981 , 0.14709608],n[ 0.69421236, 0.77925693, 0.64956842, 0.13911624]])n

上述命令構造了一個4*4的隨機數組。

In [6]: np.mat(x)nOut[6]:nmatrix([[ 0.52844327, 0.22339639, 0.1034135 , 0.463985 ],n[ 0.14394297, 0.04331558, 0.17968244, 0.55428581],n[ 0.29320121, 0.4110452 , 0.6663981 , 0.14709608],n[ 0.69421236, 0.77925693, 0.64956842, 0.13911624]])nnIn [7]: randMat=np.mat(x)n

調用mat()函數將數組轉行為矩陣。

In [8]: randMat.InOut[8]:nmatrix([[ 5.20712532, -4.48860333, 3.32227592, -2.99571552],n[-5.6330336 , 4.87766411, -6.17839321, 5.88601676],n[ 1.49156708, -1.72882662, 4.23683893, -2.56636519],n[-1.3955605 , 3.14903216, -1.75339714, 1.14992431]])nnIn [9]: invRandMat=randMat.In

.I 操作符實現了矩陣的求逆運算。

In [10]: randMat*invRandMatnOut[10]:nmatrix([[ 1.00000000e+00, -4.44089210e-16, 4.44089210e-16,n-2.22044605e-16],n[ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,n0.00000000e+00],n[ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,n0.00000000e+00],n[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,n1.00000000e+00]])nnIn [11]: myEye=randMat*invRandMatn

執行了矩陣乘法,得到矩陣與其逆矩陣相乘的結果。

In [13]: myEye-np.eye(4)nOut[13]:nmatrix([[ 0.00000000e+00, -4.44089210e-16, 4.44089210e-16,n-2.22044605e-16],n[ 0.00000000e+00, -1.11022302e-16, 0.00000000e+00,n0.00000000e+00],n[ 0.00000000e+00, 0.00000000e+00, -4.44089210e-16,n0.00000000e+00],n[ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,n4.44089210e-16]])n

函數eye(4)創建了4*4的單位矩陣

1.8 本章小結

學習機器學習演算法,必須了解數據實例,每個數據實例由多個特徵值組成。分類是基本的機器學習任務,它分析未分類數據,以確定如何將其放入已知群組中。為了構建和訓練分類器,必須首先輸入大量已知分類的數據,我們將這些數據稱之為訓練樣本集。

聲明:

本節筆記來自,《機器學習實戰》,作者: Peter Harrington ,出版社: 人民郵電出版社

原作名: Machine Learning in Action,譯者: 曲亞東 / 李銳 / 王斌 / 李鵬
推薦閱讀:

沒想到你是這樣的「兔子」---kNN
斯坦福大學機器學習 CS229 課程講義翻譯-Markdown 版本-第三章
矽谷之路23:機器學習真人面試
」CNN是空間上的深度網路,RNN是時間上的深度網路「這句話怎麼理解?

TAG:机器学习 |