【机器学习PAI实践八】用机器学习算法评估学生考试成绩
(本文數據為實驗用例)
一、背景
母親是老師反而會對孩子的學習成績造成不利影響?能上網的家庭,孩子通常能取得較好的成績?影響孩子成績的最大因素居然是母親的學歷?本文通過機器挖掘算法和中學真實的學生數據為您揭秘影響中學生學業的關鍵因素有哪些。
本文的數據采集于某中學在校生的家庭背景數據以及在校行為數據。通過邏輯回歸算法生成離線模型和學業指標評估報告,并且可以對學生的期末成績進行預測。
二、數據集介紹
數據集由25個特征和一個打標數據構成,
具體字段如下:
| sex | 性別 | string | F是女,M表示男 |
| address | 住址 | string | U表示城市,R表示鄉村 |
| famsize | 家庭成員數 | string | LE3表示少于三人,GT3多于三人 |
| pstatus | 是否與父母住在一起 | string | T住在一起,A分開 |
| medu | 母親的文化水平 | string | 從0~4逐步增高 |
| fedu | 父親的文化水平 | string | 從0~4逐步增高 |
| mjob | 母親的工作 | string | 分為教師相關、健康相關、服務業 |
| fjob | 父親的工作 | string | 分為教師相關、健康相關、服務業 |
| guardian | 學生的監管人 | string | mother,father or other |
| traveltime | 從家到學校需要的時間 | double | 以分鐘為單位 |
| studytime | 每周學習時間 | double | 以小時為單位 |
| failures | 掛科數 | double | 掛科次數 |
| schoolsup | 是否有額外的學習輔助 | string | yes or no |
| fumsup | 是否有家教 | string | yes or no |
| paid | 是否有相關考試學科的輔助 | string | yes or no |
| activities | 是否有課外興趣班 | string | yes or no |
| higher | 是否有向上求學意愿 | string | yes or no |
| internet | 家里是否聯網 | string | yes or no |
| famrel | 家庭關系 | double | 從1~5表示關系從差到好 |
| freetime | 課余時間量 | double | 從1~5從少到多 |
| goout | 跟朋友出去玩的頻率 | double | 從1~5從少到多 |
| dalc | 日飲酒量 | double | 從1~5從少到多 |
| walc | 周飲酒量 | double | 從1~5從少到多 |
| health | 健康狀況 | double | 從1~5從狀態差到好 |
| absences | 出勤量 | double | 0到93次 |
| g3 | 期末成績 | double | 20分制 |
數據截圖:
三、離線訓練
首先,實驗流程圖:
數據自上到下流入,先后經歷了數據數據預處理、拆分、訓練、預測與評估。
1.SQL腳本-數據預處理
select (case sex when 'F' then 1 else 0 end) as sex, (case address when 'U' then 1 else 0 end) as address, (case famsize when 'LE3' then 1 else 0 end) as famsize, (case Pstatus when 'T' then 1 else 0 end) as Pstatus, Medu, Fedu, (case Mjob when 'teacher' then 1 else 0 end) as Mjob, (case Fjob when 'teacher' then 1 else 0 end) as Fjob, (case guardian when 'mother' then 0 when 'father' then 1 else 2 end) as guardian, traveltime, studytime, failures, (case schoolsup when 'yes' then 1 else 0 end) as schoolsup, (case fumsup when 'yes' then 1 else 0 end) as fumsup, (case paid when 'yes' then 1 else 0 end) as paid, (case activities when 'yes' then 1 else 0 end) as activities, (case higher when 'yes' then 1 else 0 end) as higher, (case internet when 'yes' then 1 else 0 end) as internet, famrel, freetime, goout, Dalc, Walc, health, absences, (case when G3>14 then 1 else 0 end) as finalScore from ${t1};這里SQL腳本主要處理的邏輯是將文本數據結構化。比如說源數據分別有yes和no的情況,我們可以通過0表示yes,1表示no將文本數據量化。一些多種類的文本型字段,比如說Mjob,我們可以結合業務場景來抽象,比如說如果工作是teacher就表示為1,不是teacher表示為0,抽象后這個特征的意義就是表示工作是否與教育相關。對于目標列,我們按照大于18分設為1,其它為0,擬在通過訓練,找出可以預測分數的模型。
2.歸一化
去量綱,將所有的字段都轉換成0~1之間,去除字段間大小不均衡帶來的影響。結果圖:
3.拆分
將數據集按照8:2拆分,百分之八十用來訓練模型,剩下的用來預測。
4.邏輯回歸
通過邏輯回歸算法訓練生成離線模型。具體算法詳情可以https://en.wikipedia.org/wiki/Logistic_regression
5.結果分析和評估
通過混淆矩陣可以查看模型預測的準確率。
可以看到預測準確率為82.911%。
根據邏輯回歸算法的特性,我們可以通過模型系數挖掘出一些比較有意思的信息,首先查看模型:
根據邏輯回歸算法的算法特性,權重越大表示特征對于結果的影響越大,權重是正數表示對結果1(期末高分)正相關,權重負數表示負相關。于是我們可以挑選幾個權重較大的特征進行分析。
| mjob | 母親的工作 | -0.7998341777833717 | 母親是老師對于孩子考高分是不利的 |
| fjob | 父親工作 | 1.422595764037065 | 如果父親是老師,對于孩子取得好的成績是非常有利的 |
| internet | 家里是否聯網 | 1.070938672974736 | 家里聯網不但不會影響成績,還會促進孩子的學習 |
| medu | 母親的文化水平 | 2.196219307541352 | 母親的文化水平高低對于孩子的影響是最大的,母親文化越高孩子學習越好。 |
以上結論只是從實驗的很小的數據集得到的結論,僅供參考。
四、其它
作者微信公眾號(與我聯系):
總結
以上是生活随笔為你收集整理的【机器学习PAI实践八】用机器学习算法评估学生考试成绩的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 十图详解TensorFlow数据读取机制
- 下一篇: 【机器学习PAI实践九】如何通过机器学习