機器學習給人的感覺就是非常的高大上,因為機器學習的一些名詞總是讓人雲裡霧裡,今天我們主要來通俗易懂的講一下機器學習的概念。
資料大家應該都明白,舉個栗子!我們在以往寫程式的時候,經常用到<code>資料庫</code>,那麼資料庫中存的<code>一行資料</code>,其實又叫做<code>一條資料</code>而每條資料都包含很多<code>屬性</code>。那麼屬性又跟機器學習有什麼關系呢?
每條資料的<code>屬性</code>,在機器學習中就叫做<code>特征</code>,特征又分為<code>離散型</code>、<code>連續型</code>
如果你高中數學有認真聽,應該聽說過這麼兩個詞<code>連續</code>和<code>不連續</code>,而在大學有一們課叫<code>離散數學</code>,下面我們簡單舉幾個栗子來說明<code>離散型</code>特征!首先我們定義了一個<code>Bird</code>類,類中有幾個屬性,分别是<code>體重</code>、<code>長度</code>、<code>腳蹼</code>、<code>顔色</code>、<code>種類</code>其實這幾個<code>屬性</code>又叫做<code>特征</code>
顔色屬于<code>枚舉型特征</code>
體重和長度屬于<code>數值型特征</code>
腳蹼屬于<code>布爾型特征</code>,又叫做<code>二值型特征</code>
種類被我們稱為<code>目标變量</code>
下面就是我們的<code>離散型</code>資料
2.2 連續型連續型資料一般都是<code>區間型</code>的資料,比如:今天杭州市的天氣是<code>19~28</code>攝氏度水結冰的溫度是<code>-4~負無窮</code>攝氏度
這個詞真的是故弄玄虛的 本質上就是<code>特征</code>的個數我們用上面的<code>Bird</code>進行說明,這個類包含4個特征,那麼它的資料的<code>次元</code>就是4比如我們将資料離散後變成下面這個<code>矩陣</code>,那麼矩陣中每條<code>向量</code>的<code>次元</code>就是4
<code>目标變量</code>就是機器學習算法預測的結果,簡單的了解,就是<code>y=x+1</code>中的<code>y</code>
在<code>分類算法</code>中目标變量通常是<code>标稱型資料</code>
在<code>回歸算法</code>中目标變量通常是<code>連續型資料</code>
一般在我們的<code>訓練資料集</code>中,目标變量是必須要确定的值,不然的話,你怎麼确定<code>特征</code>和<code>目标變量</code>的關系呢
訓練,全稱叫做<code>算法訓練</code>為算法輸入大量的已分類(又叫做标注資料)的資料,來産生一個<code>算法模型</code>這裡的資料叫做<code>訓練集</code>,訓練集是用于訓練機器學習算法的資料樣本集合下面我們舉例說明:
顧名思義,<code>訓練資料集</code>就是用來訓練算法模型的資料集,也就是訓練算法的輸入資料
<code>測試樣本集</code>就是在我們訓練完算法模型後,對<code>算法模型</code>進行測試所要使用的輸入資料這裡有兩點要注意:
測試資料集要包含<code>目标變量</code>,用以判斷<code>算法模型</code>的<code>實際精确度</code>
測試資料集用以訓練模型,如果參與訓練過程,那将導緻算法模型的正确率存在偏差
歸一化全稱叫做<code>數值歸一化</code>為什麼要對資料進行<code>歸一化</code>呢?,讓我們看看下方的資料。<code>飛行裡程資料</code>和其他兩項資料的差異實在太大了,在我們進行<code>歐式距離</code>等公式計算的時候,因為內插補點太大了,是以會造成資料偏重,是以我們要消除這個偏重,将所有特征都轉化到<code>0 ~ 1</code>的區間之内。
下面提供一個較為簡單的歸一化公式:
轉化後的資料:
監督學習其實就是指我們對算法所輸入的資料是經過<code>标注</code>的。監督學習的算法必須要知道要預測什麼,也就是必須要知道<code>特征</code>和<code>目标變量</code>的關系。
分類:其實是把資料配置設定到已有的幾個類别機器學習的主要任務就是<code>分類</code>下面我們舉例說明:我們可以通過資料+算法訓練出一個<code>分類器</code>(又叫做模型),然後通過分類器來對新的資料進行分類。
<code>回歸</code>主要應用于預測一些數值型的資料,比如<code>資料拟合曲線</code>:通過給定資料點的最優拟合曲線
9 無監督學習
在無監督學習中,資料是隻有<code>特征</code>,沒有<code>目标變量</code>的,通過計算來猜出幾個結果來無監督學習的好處是可以減少資料特征的次元,以便我們用二維和三維的圖像進行展示資料
什麼叫聚類呢?顧名思義。聚類:其實就是把沒有分類的一組資料中相似的聚內建幾個堆,這個堆也叫<code>簇</code>專業的講,就是将資料集合分成由類似的對象組成的多個類的過程這裡的<code>蘋果</code>,<code>橘子</code>,<code>筷子</code>,<code>勺子</code>,<code>可樂</code>,<code>雪碧</code>都是沒有分類的資料,我們通過他們的一些特征計算出<code>水果</code>、<code>餐具</code>、<code>飲料</code>這三個類。
尋找描述資料統計值的過程
10 在使用機器學習時的問題
首先我們要明确,我們選擇算法隻能在一定程度上縮小算法的選擇範圍,一般并不存在最好的算法和給出最好結果的算法在我們選擇算法的時候,首先要考慮兩個問題 1. 我們的目的是什麼,想要算法完成什麼任務 2. 我們需要分析的資料是什麼,我們得到的資料又是什麼如果你想要預測<code>目标變量</code>,那麼你可以選擇<code>監督學習</code>。如果你的<code>目标變量</code>的資料類型是<code>離散型</code>,那麼你可以選擇<code>分類算法</code>,如果是<code>連續型</code>,可以選擇<code>回歸算法</code>如果你不想預測<code>目标變量</code>,可以選擇<code>無監督學習</code>。如果需要将資料劃分成組,可以選擇<code>聚類算法</code>,如果要估計每個分組的相似程度,可以選擇<code>密度估計算法</code>
特征值是<code>離散型</code>還是<code>連續型</code>
特征值中是否存在缺失的值,什麼原因導緻的缺失值,
資料中是否存在異常值
某個特征的頻率如何,是否相當稀疏
收集資料:爬蟲爬資料,硬體裝置擷取資料,下載下傳公開資料等
準備輸入資料:確定資料的格式,是否格式不統一,是否需要離散化等
分析資料:檢視資料中是否有空值,是否存在其他異常值,可以通過圖表展示來觀察資料
訓練算法:選擇合适的算法,并對我們的訓練資料進行訓練,如果是無監督學習則不需要訓練
測試算法:對我們的模型或算法進行測試,來看看是否滿意算法的輸出結果
使用算法:将模型或算法進行工程化,用以執行實際的任務
機器學習領域,推薦<code>python</code>,因為它有一些強大庫,并且語言簡單,可以讓你更加專注機器學習的開發。常用的庫 1. numpy: 實作了常用的向量和矩陣的操作,并且增加了可讀性,并且底層提高了計算性能 2. matplotlib: 常用的繪圖工具,可以繪制2d、3d 的圖形。
建構一個4*4的數組。
将4*4的随機數組轉化為矩陣