標籤: 數據挖掘 特徵工程 機器學習 出勤預測機器學習
write by xmhexi 2019/3/22學習
內容提要測試
首先說明本文是一篇科普文章,經過一個實際案例,幫助理解什麼是數據挖掘、特徵工程、機器學習等,文章中並不涉及詳細的技術與參數。優化
本人剛剛起步初學,文章中均爲本人的理解,有不妥之處,敬請指出。3d
文章中涉及的的姓名,電話等信息均作了模糊處理。code
事情的開始很簡單,個人EDP課程已經上了8次課了,在班級羣裏,老師發了一張上課出勤表,讓你們覈對。 出勤表大概長這個樣子的:blog
看着這張出勤表,我在想咱們能作些什麼呢?索引
能不能知道下次上課,誰會來,誰不會來,或者只來半天?遊戲
正好開始學習數據分析,那就用這些數據來作一個「上課出勤預測模型」吧,經過這些數據來最終預測下一次上課的出勤狀況。圖片
預測目標:下節課全部同窗的出勤狀況。
說幹就幹,首先要獲取這些數據,把出勤表圖片通過剪切、識別:
最終獲得對應的數據:
同窗們有沒來上課,跟什麼會有關係呢?
尋找「有沒來上課」有關係的東西,並把這些東西變成數字,就叫作「特徵工程」了。
接下來就來尋找這些特徵了。
手上還有的資料就是同窗錄了,就從同窗錄入手。
有些數據是比較敏感的,不適合處處傳播,好比姓名,手機號,公司名稱等,須要先進行一些處理,讓這些數據可使用但又不會被猜出來。
好比姓名就換成拼音的首字母,手機就保留前7位,公司名稱就用序號來表示,其它的就能夠刪除了。
都說「有擔當 重責任」,擔任班委職務是否是跟出勤有點關係?
班委信息按級別,小組長是1,班長是4; 責任越大應該越會來上課吧?
都說男女有別,在決定去不去上課的時候,應該也是有差異的吧。
性別變成數字,女=0 男=1;
在哪裏上班(公司地點);離學校遠不遠? 外地的同窗來上課確定是阻力重重啊。
這個特徵能夠從公司名稱查到公司地址,爲了省事,我就用手機查詢到手機號所的省、市。
先導入手機歸屬地數據,而後查看下同窗們的手機所在地的狀況:
根據手機所在的省和市,把同窗們離學校的距離分紅了4種類型: 本地的,周邊的地區的,本省的;外省的;
同窗在公司的職務級別會不會影響來上課? 越是領導越忙,確定有關係呢。
看一下有哪些職位:
職位太雜了,作下歸類:
能夠看出,大多同窗都是經理和總監級別。
最後歸成幾類數字越大,級別越高:
都說「青春作伴好還鄉」,同一個公司若是同時有幾個夥伴一塊兒來上課,那來上課的幹勁應該高一點。
先看看各個公司派出夥伴的狀況:
能夠看出大多公司都是1個小夥伴,最高的有10個小夥伴。
最後按照派出小夥伴的數量高低分紅5個級別:
都說處女座的作事特別不同,腦洞大開一下,若是找到同窗的星座信息,這也可能成爲影響來不來上課的因素!
找到班級同窗過生日的信息:
對應計算出同窗屬於哪一個星座,變成一個數字:
天氣會不會影響來上課的決定? 有可能噢。
上網找出了全部上課日期對應上課地點的天氣狀況。
不過這個特徵沒有加進去,留作之後再處理吧。
找了這麼多東西,最終獲得了一些數據,把每一個同窗每節課的出勤狀況作爲一條記錄,獲得了1104條數據。
上面找了這麼多影響上課的因素(特徵),到底哪些因素有關係,怎麼樣的關係呢,這個不用咱們操心,創建一個數據模型就能夠自動計算了。 我用了一個最簡單的「決策樹模型」,並進行「訓練」,其實就是獲得這些參數對結果的影響。
訓練完成後,對已知的數據進行測試驗證,看下準確度有多少:
哈哈,還不錯哦,準確率有80%,也就是說用這個模型去預測將來,有8成的準確率。
那就用這個模型來計算下全部同窗下一次上課的出勤狀況,看下誰來誰不來,這個就叫「預測」:
預測完了是一堆的數據,爲了好看,要處理成對應的格式:
怎麼看數據呢?這張圖中最後面的表格:
name_py就是同窗的姓名拼音首字母;
"C9-1","C9-2"分別是下次上課的兩天課程;
「1.0"表示這位同窗來上課;
「0.0」表示這位同窗不來上課;
「0.5"表示這位同窗來上半天后就走了(嘻);
爲了方便同窗位查一下預測結果裏本身來不來,我把全部的預測結果放在下面,重申一下:結果是預測出來的,準確度有限,權當遊戲一把,別當真!
name_py,C9-1,C9-2 CXF,1,1 CDL,0,0 CMS,1,1 CQL,0,0 CYF,0,0 CZY,1,1 DX,1,1 FCX,1,1 FJT,0,0 FRK,0,0 FZY,1,1 FPP,1,1 GQH,1,1 GBS,1,1 HLM,0,0 HSJ,0,0 HX,1,1 HQJ,1,1 HHD,1,1 HHS,0,0 HTY,0,0 HYL,1,1 KZT,1,1 KYP,1,1 LFL,0,0 LWJ,1,1 LXH,0,0 LBC,1,1 LJG,1,1 LLH,1,1 LPH,0,0 LSJ,1,1 LYF,1,1 LBR,1,1 LGQ,0,0 LKC,1,1 LDF,1,1 LSB,1,1 LSF,0,0 PDZ,1,1 PSZ,0,0 QWH,1,1 QXH,1,1 SGZ,0,0 SYP,1,1 WJP,1,1 WXM_188,0,0 WYJ,1,1 WZ,1,1 WQL,1,1 WXM_155,1,1 XGC,1,1 XYH,1,1 YXB,1,1 YCP,1,1 YQX,0,0 ZH,1,1 ZJQ,0,0 ZSC,1,1 ZXY,1,1 ZY,1,1 ZWJ,0,0 ZLF,0,0 ZWF,1,1 ZYQ,1,1 ZQH,0,0 ZJW,1,1 ZYN,0,0 ZLJ,1,1
特別註明:有兩位同窗的拼音都是WXM,因此用手機號前3位附在後面以示區別。
調整模型後從新更新了預測數據,最後更新時間:2019.4.1
固然,上面的數據中還能夠分析出不少有價值的信息;還可使用更爲複雜的模型,來作出更加準確的預測。
從開始有想法到完成整個項目,花了不少時間和精力,畢竟是本人首個完成的實際案例。
在此過程當中要感謝EDP老師、同窗提供了這麼好的素材;
感謝QQ羣裏爲我提供幫助的小夥伴們;
還要感謝個人家人和同事,提供了讓我完成的時間與環境,謝謝大家!
關於案例仍是有些內容想要補充一下:
模型優化
上面文章中提到,這個模型的準確度只有80%,好象不太準。 還須要對模型進行優化,有幾個方向:
對模型的參數進行調整,也就是常說的「調參」
再挖掘數據中更多的特徵點;
本文中能夠挖掘的特徵點還不少,好比:
「上課時間是在一個月的什麼時間,上旬中旬仍是下旬?」
「有沒有連續不來上課的記錄或者是請假的記錄?」
「對於外地遊學這個課程,重要程度比其它課程高。」
「同一次課程裏,次日來上課與第一天有點不一樣。」
「在公司是從事哪一個部門,技術、人力仍是銷售?」
「所在的公司是哪一個行業,生產型仍是互聯網?」
使用不一樣的模型來作訓練,並作對比;
擴充數據,看看其它班級還有數據加進來,讓數據更豐富;
視野
「當你知道的越多,未知的也會越多。」
分析完數據後,能帶給咱們什麼呢,除了預測結果之外,其實還能夠分析訓練完的模型。
模型中每一個因素(特徵)都有一個對應的係數,表示它對結果的影響程度,有的因素(特徵)的係數比較大,屬於關鍵因素(關鍵特徵)。從模型裏能夠看到,哪一個因素(特徵)對結果的影響比較大。
這就爲咱們提供了控制結果的可能性,只要控制好這些核心因素,就能對最終的結果產生想要的影響。例如: