李宏毅機器學習中文課程作業二:預測贏家還是輸家

一、作業要求

給定訓練集spam_train.csv,要求根據每個ID各種屬性值來判斷該ID對應角色是Winner還是Losser(收入是否大於50K),這是一個典型的二分類問題。
訓練集介紹:

  1. CSV文件,大小爲4000行X59列;
  2. 4000行數據對應着4000個角色,ID編號從1到4001;
  3. 59列數據中, 第一列爲角色ID,最後一列爲分類結果,即label(0、1兩種),中間的57列爲角色對應的57種屬性值;

二、思路分析及代碼實現

思路分析:

這是一個典型的二分類問題,結合課上所學內容,決定採用Logistic迴歸算法。
與線性迴歸用於預測不同,Logistic迴歸則常用於分類(通常是二分類問題)。Logistic迴歸實質上就是在普通的線性迴歸後面加上了一個sigmoid函數,把線性迴歸預測到的數值壓縮成爲一個概率,進而實現二分類(關於線性迴歸模型,可參考上一次作業)。
在損失函數方面,Logistic迴歸並沒有使用傳統的歐式距離來度量誤差,而使用了交叉熵(用於衡量兩個概率分佈之間的相似程度)。

代碼實現:

具體原理可參考:傳送門

1. 數據預處理
讀入文件,先將最後兩列進行歸一化操作。然後將文件分爲訓練集和驗證集,並分佈保存爲python文件,方便調用。
在這裏插入圖片描述

2. 訓練
定義激活函數sigmoid和損失函數compute_loss。
在這裏插入圖片描述
開始利用梯度下降法進行訓練,並每隔三輪驗證一下訓練集的預測精度。
在這裏插入圖片描述
在這裏插入圖片描述
輸出訓練結果。
在這裏插入圖片描述
3. 預測
利用訓練結果進行預測。
在這裏插入圖片描述
數據集和代碼見:代碼地址

發佈了27 篇原創文章 · 獲贊 105 · 訪問量 5萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章