經過前面兩篇的數據探索,咱們對教育精準資助的數據已經有所瞭解了,接下來咱們就要創建模型來進行機器學習了。算法
1、機器學習之分類概況機器學習
大千世界中「人以類聚,物以羣分」,就是指具備相同(或相近)特徵的事物老是歸於一類或者說能聚在一塊兒的事物老是擁有相同(或相近)的特徵。函數
機器學習最基本的研究就是解決分類問題,好比哪些郵件是垃圾郵件,哪些郵件是正常郵件,哪些訪問(日誌)是正常的,哪些訪問是不正常的。對於咱們此次教育競賽來說就是要分出哪些人須要資助1000,哪些人須要資助1500,哪些人須要資助2000,哪些人不須要資助的問題。學習
解決這些問題最常規的辦法是編寫規則條件,知足某個條件是什麼類,知足另外的條件是什麼類。當問題複雜到必定程度,即不能寫出明確的規則或者規則很複雜時就能夠考慮用機器學習的方法來解決。優化
那麼機器又是如何學習的呢?看下圖:日誌
首先,機器學習是要數據的,並且是兩類數據:一類能標識人(和物)的特徵數據,如每一人的消費次數,消費總額,單筆最大等等;另外一類則是標記了人的分類的答案數據(或標記數據),就是須要人根據經驗來告訴機器哪些人是一類的,哪些物是一類的。這樣再選擇合適的算法,讓機器來學習。給的數據越多,機器就學習的越多,機器就會變得越」聰明「。咱們把這個機器學習的過程叫作訓練,訓練的結果就是模型。有了這個模型後,就能夠進行預測,看下圖:對象
首先是要預測的數據的格式和特徵數據的格式同樣,不能添加或減小特徵,也不能變動特徵的名稱和順序,而後使用模型來預測,最後就會獲得預測結果。索引
整個機器學習的過程就是這樣了,還簡單吧,下面咱們就用教育資助的數據操練起來。部署
2、機器學習過程test
(一)數據準備
精準資助主要集中反映在平常的消費數據中,咱們先使用消費數據來構造特徵數據和標記數據(答案數據)。
特徵數據的一個要求是使用一行來描述一個對象(人或物),對象是不重複的,特徵數據均爲數字類型,不能出現其餘類型,若是是字典類型,如性別男女也應該用0,1表示。
標記數據的要求是和特徵數據一一對應,一樣一行表明一我的(或物),標記須要使用整數形,一個數表明了一個分類。這裏的專業叫法是標稱型(變量),取值是有限的整數,不能是小數(分類再多總有個最大值的,小數就不知道是哪一類的了,呵呵)。和標稱型對應的是數值型,若是標記的答案是數值型的,那就不是分類問題了,與之相對應的是機器學習的另外一類應用迴歸。
Part one:以同窗ID爲對象來計算消費特徵數據
一、加載一卡通訓練數據
二、修改列名
分別修改字段0、一、二、三、四、五、6爲id、pos、address、catalog、time、cost、have
三、根據id進行分組,而後根據cost字段計算每一個人的消費狀況(消費總額,單次最大消費,單詞最小消費,消費均值,消費中位數,消費次數),結果保存到df表card_cost。
輸入如下統計函數:
cost_sum:sum,cost_max:max,cost_min:min,cost_mean:mean,cost_meidan:median,cost_count:count
四、而後計算卡內餘額(最大值,最小值,平均值),結果保存到df表card_have
輸入如下統計函數:
have_max:max,have_min:min,have_mean:mean,have_median:median
五、兩張合起來,一我的的消費情況就很是清晰了
六、查看關聯後的表
Part two:計算資助金額標記數據
一、加載助學金髮放訓練數據
二、修改列名。分別修改字段0、1爲id、money
因爲有資助的不必定有消費,有消費的不必定出如今資助名單中,因此card_money和stn的行不必定是一一對應的,咱們必定要確保card_money的數據中沒有空值,card_money和stn的行一一對應(數量一致,關連一致)。
能夠採用以下方式:
一、還原card_money的index爲id列
二、以資助名單爲準關聯消費記錄
三、用-1填充a的空值
四、選出新的特徵數據
五、修改card_money中id列的類型爲int
六、設置id列爲索引
(二)選擇算法
有了特徵數據和標記數據,接下來咱們就要選擇算法了,FEA支持的分類算法有如下幾種:
也許你該問了,這麼多算法我該使用哪一個呢?這就和你的數據息息相關了,這也是經驗的問題。
而在實際的工程中,咱們每每會使用多種分類器,來比較一下分類的效果再作選擇。那你也許又該說了,這麼多算法一個一個試下來,不是很麻煩嗎。呵呵,FEA想你之所想,在新的版本中FEA將添加自動分類功能,自動進行多種分類器的訓練並打分,有你來選擇適合你的一款。
本次咱們使用gbdt分類器和svm來作下面的實驗。
(三)訓練模型
訓練數據構建模型
一、設置工做區
二、使用迭代決策樹分類算法gbdt,構建模型和訓練數據,一步完成,模型名稱命名爲gbdt
三、評估模型,給模型打分,結果保存到DF表score
四、查看結果
結果的取值在0到1之間,表明預測的準確度,最大爲1,準確度100%,千萬不要看到1就很開心哦,不少狀況下1表明了預測結果和你的數據徹底擬合,或者說擬合,當真的有新數據來預測時,反而很不許。能夠換一個算法試試。
五、使用向量機分類算法svm構建模型和訓練數據,一步完成,模型名稱命名爲model
六、評估模型,給模型打分,結果保存到DF表score
七、查看結果
(四)機器預測
模型構建訓練好後,咱們就能夠來進行預測了,預測數據和特徵數據的計算方法同樣,就不在這裏詳細描述了。
預測數據的文件爲match/fund/card_test.csv
預測人員的文件爲match/fund/studentID_test.csv
假定預測數據的DF表爲card_money1,則預測過程以下:
一、使用gbdt模型預測
二、使用svm模型預測
三、查看結果
是否是很簡單?
沒錯,照上面的步驟玩下來,你就完成了機器學習的基本過程,就對機器學習有了初步的瞭解。
(五)保存模型
機器學習是否是每次都得通過上述步驟(準備數據、訓練模型、預測)才能應用呢?
不是的!
當咱們訓練好一個模型後,能夠將模型保存下來,能夠分發和部署到新的環境(機器)中直接進行預測,而不用重複訓練過程,具體的語句以下:
一、保存gbdt模型預測
二、保存svm模型預測
三、查看保存的模型
其中0列存儲的就是模型文件的名稱,而後就能夠到數據目錄裏下載此模型文件。
發佈模型和此相反,先上傳模型文件到數據目錄,而後加載模型。
3、小結
本文以可視化操做的方式結合教育精準資助數據講解了機器學習的典型過程,爲還在機器學習大門口徘徊的人們點亮了一盞明燈,不要猶豫不要徘徊,機器學習,你能夠的!
對於機器學習的一些高級話題,如特徵選取,參數設置,過採樣等將在後續的系列中進行探討和交流,教你如何打造一個準確率和召回率等都知足實戰的模型。
在此也和你們叮囑一下,模型的優化是無止境的,要耗費大量的腦力和體力。
FEA準備好了,你準備好了嗎?