資料科學 HW2
Info
- 環境:Windows 10, Jupyter, python 3
- 套件:pandas、sklearn
程式碼相關
程式執行
- 建議直接使用jupyter開啟附檔的notebook(HW2.ipynb)
- 否則有附上純python檔(HW2.py),但沒有測試過跑不跑得動。
- 執行時請將檔案按照下方放置,執行後會跑出ans.csv為答案。
檔案擺放路徑
模型
- 使用KMeans演算法。
- 再使用之前先計算群間差異和群內差異的比值還有Elbow Method來評估K值為和最佳。
資料前處理
- 先把
id
和全部都一樣的feature3
移除,然後直接看看估計值為何:
- 看起來
K=4
還不錯,就直接丟進去看看,結果為0.68125
。
- 接著我仔細看一下資料,發現其實不少欄位我看不太懂用途(像是
feature1, 2
),因此這次移除大量欄位,只留下我自己覺得有用的部分。
- 和上面的做比較,好像一樣是
K=4
左右,因此又丟了一次,結果這次反而變差,分數為0.6625
- 但可以注意到兩張圖的曲線都有點緩下來,我認為可能是分群不夠多,因此試試看
K=8
,結果分數果然有所進步,得到0.7625
分。
- 再調了部分參數還是沒有用的情況下,我決定把feature砍到只剩下和色彩有關的部分,我只留下了RGB、灰階值、明度、飽和度、色相等資訊。
- 原本只是死馬當活馬醫,結果意外的有用,得到
0.84375
分,看來與周遭區域的資訊並不是特別重要。
Code詳細
Import packages
Data preprocessing
Find K
- 用演算法找較好的K值為何,雖然最後好像沒有參考到。
KMeans
- 調用sklearn的KMeans分類法。
- n_clusters是群數。
- n_init是要跑多久。
- random_state是訓練過程是否有隨機性
- 後面就是簡單的把預測結果fit到指定格式上,就不多做說明了。