資料探勘實戰:地震後建築修復建議預測
嘿嘿,總算又更新了。
上一篇講了 OA==&mid=2247483727&idx=1&sn=bd0598c5cfc074d93b2444cbc671a756&scene=21#wechat_redirect" target="_blank" rel="nofollow,noindex"> 如何用Python進行資料探索 ,
這次就用一個小比賽來檢驗一下吧。
本篇主要講了 資料探索、特徵生成 ,以及一些常用的建模方法,
比如 用xgboost生成特徵、blend、神經網路 等等。
按照慣例,可以在這找到notebook檔案直接執行: https://github.com/wmpscc/DataMiningNotesAndPractice
如果你覺得這裡的排版看著不爽,可以滑到底下直接看原文
介紹
地震後建築修復建議是SofaSofa提供的練習比賽,可以說它是一個多分類問題,也可以說它是一個小型的推薦系統。因為它有四個類,評價標準是 map@2
。
寫這個比賽的目的是練習一下前面學的 資料探索(EDA)
和 資料預處理
,還有建模時用到的 blend
和 stacking
。具體程式碼都在jupyter notebook 檔案裡,這裡簡單介紹一下。
EDA
首先從最基本的開始,
相關性矩陣
資料離散化
資料離散化是有風險的,因為離散化後的資料效能未必會比離散化之前好,一般是根據專家的建議設定區間,而不是隨意猜測一個區間。這裡是利用無監督模型(K-means 演算法)聚類,將id類的資料分段。
首先看下資料的分佈,猜測一下應該聚成幾類,因為k-means演算法要求提供聚類的簇數。利用seaborn視覺化資料:
根據視覺化後的資料分佈,猜測可以聚為6類。(聚成幾類是沒有一個確定的答案的,可以多嘗試幾種情況,取最好的)
這裡id型別的資料,我都是這樣處理的。
處理異常值
age
屬性。
視覺化後是這樣的
一直延續到1000,猜測可能有問題。繪製散點圖看看。
1000那裡突然就出現一堆資料 ,猜測可能是出題熱故意設定的,處理方法是直接刪除。
floors
屬性
資料集中提供了樓層前後高度資訊,猜測可能會存在一些異常值,地震樓層數會比地震前還有高。首先進行視覺化
地震前: floors_before
地震後: floors_after
地震前後樓層數對比
從圖上可以發現,確實有些資料像說的那樣。先計算下個數
有1838個,直接刪除
height
屬性
height
也提供了前後高度,處理方法是一樣的。
標籤資料-獨熱編碼(one-hot)
構造屬性
加減乘數,構造屬性
標籤資料編號
用one-hot後的資料構造新屬性
lightGBM模型生成特徵重要性圖
生成新的相關性矩陣
可以看出構造出的幾個屬性相關性較強。
建模
構建評分函式
它的評分標準是 map@2
簡單來說,對於每一個建築,若主修複意見正確,得1分;若次修復意見正確,得0.5分;若都不正確,記0分。所有建築的得分的均值就是map@2
XGBOOST
LightGBM
神經網路
XGBOOST生成新特徵
blend
Stacking
emmmm,這個我不確定是不是這樣寫。
加權投票
總結
這次主要是鍛鍊之前學到的東西,實際比賽排名不是很高。
長按識別二維碼
獲取更多AI資訊
