帶你看數據挖掘與機器學習-廈大EDP上課出勤預測

帶你看數據挖掘與機器學習-廈大EDP上課出勤預測

標籤: 數據挖掘 特徵工程 機器學習 出勤預測機器學習

write by xmhexi 2019/3/22學習

內容提要測試

首先說明本文是一篇科普文章,經過一個實際案例,幫助理解什麼是數據挖掘、特徵工程、機器學習等,文章中並不涉及詳細的技術與參數。優化

本人剛剛起步初學,文章中均爲本人的理解,有不妥之處,敬請指出。3d

文章中涉及的的姓名,電話等信息均作了模糊處理。code

案例說明

事情的開始很簡單,個人EDP課程已經上了8次課了,在班級羣裏,老師發了一張上課出勤表,讓你們覈對。 出勤表大概長這個樣子的:blog

出勤表

看着這張出勤表,我在想咱們能作些什麼呢?索引

能不能知道下次上課,誰會來,誰不會來,或者只來半天?遊戲

正好開始學習數據分析,那就用這些數據來作一個「上課出勤預測模型」吧,經過這些數據來最終預測下一次上課的出勤狀況。圖片

預測目標:下節課全部同窗的出勤狀況。

數據準備

說幹就幹,首先要獲取這些數據,把出勤表圖片通過剪切、識別:

圖片剪切

最終獲得對應的數據:

識別結果

同窗們有沒來上課,跟什麼會有關係呢?

尋找「有沒來上課」有關係的東西,並把這些東西變成數字,就叫作「特徵工程」了。

接下來就來尋找這些特徵了。

特徵工程

手上還有的資料就是同窗錄了,就從同窗錄入手。

同窗錄

脫敏處理

有些數據是比較敏感的,不適合處處傳播,好比姓名,手機號,公司名稱等,須要先進行一些處理,讓這些數據可使用但又不會被猜出來。

好比姓名就換成拼音的首字母,手機就保留前7位,公司名稱就用序號來表示,其它的就能夠刪除了。

脫敏處理

班委

都說「有擔當 重責任」,擔任班委職務是否是跟出勤有點關係?

班委信息

班委信息按級別,小組長是1,班長是4; 責任越大應該越會來上課吧?

性別

都說男女有別,在決定去不去上課的時候,應該也是有差異的吧。

性別

性別變成數字,女=0 男=1;

距離

在哪裏上班(公司地點);離學校遠不遠? 外地的同窗來上課確定是阻力重重啊。

這個特徵能夠從公司名稱查到公司地址,爲了省事,我就用手機查詢到手機號所的省、市。

手機號查詢

先導入手機歸屬地數據,而後查看下同窗們的手機所在地的狀況:

手機1

手機2

根據手機所在的省和市,把同窗們離學校的距離分紅了4種類型: 本地的,周邊的地區的,本省的;外省的;

手機3

職務

同窗在公司的職務級別會不會影響來上課? 越是領導越忙,確定有關係呢。

看一下有哪些職位:

公司職位

職位太雜了,作下歸類:

職務分佈

能夠看出,大多同窗都是經理和總監級別。

最後歸成幾類數字越大,級別越高:

職位歸類

結伴同行

都說「青春作伴好還鄉」,同一個公司若是同時有幾個夥伴一塊兒來上課,那來上課的幹勁應該高一點。

先看看各個公司派出夥伴的狀況:

夥伴人數 能夠看出大多公司都是1個小夥伴,最高的有10個小夥伴。

最後按照派出小夥伴的數量高低分紅5個級別:

夥伴索引

星座

都說處女座的作事特別不同,腦洞大開一下,若是找到同窗的星座信息,這也可能成爲影響來不來上課的因素!

星座1

找到班級同窗過生日的信息:

生日

對應計算出同窗屬於哪一個星座,變成一個數字:

星座處理

天氣

天氣會不會影響來上課的決定? 有可能噢。

上網找出了全部上課日期對應上課地點的天氣狀況。

天氣

不過這個特徵沒有加進去,留作之後再處理吧。

合成數據

找了這麼多東西,最終獲得了一些數據,把每一個同窗每節課的出勤狀況作爲一條記錄,獲得了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%,好象不太準。 還須要對模型進行優化,有幾個方向:

  • 對模型的參數進行調整,也就是常說的「調參」

  • 再挖掘數據中更多的特徵點;

    本文中能夠挖掘的特徵點還不少,好比:

    「上課時間是在一個月的什麼時間,上旬中旬仍是下旬?」

    「有沒有連續不來上課的記錄或者是請假的記錄?」

    「對於外地遊學這個課程,重要程度比其它課程高。」

    「同一次課程裏,次日來上課與第一天有點不一樣。」

    「在公司是從事哪一個部門,技術、人力仍是銷售?」

    「所在的公司是哪一個行業,生產型仍是互聯網?」

  • 使用不一樣的模型來作訓練,並作對比;

  • 擴充數據,看看其它班級還有數據加進來,讓數據更豐富;

視野

「當你知道的越多,未知的也會越多。」

分析完數據後,能帶給咱們什麼呢,除了預測結果之外,其實還能夠分析訓練完的模型。

模型中每一個因素(特徵)都有一個對應的係數,表示它對結果的影響程度,有的因素(特徵)的係數比較大,屬於關鍵因素(關鍵特徵)。從模型裏能夠看到,哪一個因素(特徵)對結果的影響比較大。

這就爲咱們提供了控制結果的可能性,只要控制好這些核心因素,就能對最終的結果產生想要的影響。例如:

  • 在上面案例中,若是咱們發現「離學校的距離」,「公司職位的高低」是影響「出勤率」的關鍵因素,那麼在招生時進行優化,老師也能夠對這些學生給予特別的關注。
  • 若是在「用戶下單預測模型」中發現,「有沒有諮詢過客服」是「最終下單」這個結果的關鍵因素之一,那麼就能夠經過「主動發起」等動做來促進用戶下單。
相關文章
相關標籤/搜索