Kaggle-Titanic一個完整的例子
特徵工程
- 數據和特徵決定了機器學習的上限,而模型和算法只是逼近這個上限而已
- 挑選合適的特徵,並構建一些新特徵加入模型
- 詳細解釋看參考文檔[1]
原有的特徵
- PassengerId:一個用以標記每個乘客的數字id
- Survived:標記乘客是否倖存——倖存(1)、死亡(0)。我們將預測這一列。
- Pclass:標記乘客所屬船層——第一層(1),第二層(2),第三層(3)。
- Name:乘客名字。
- Sex:乘客性別——男male、女female
- Age:乘客年齡
- SibSp:船上兄弟姐妹和配偶的數量。
- Parch:船上父母和孩子的數量。
- Ticket:乘客的船票號碼。
- Fare:乘客爲船票付了多少錢。
- Cabin:乘客住在哪個船艙。
- Embarked:乘客從哪個地方登上泰坦尼克號。
挑選出來加入模型的特徵
- Pclass:標記乘客所屬船層——第一層(1),第二層(2),第三層(3)。
- Sex:乘客性別——男male、女female
- Age:乘客年齡
- Fare:乘客爲船票付了多少錢。
- Embarked:乘客從哪個地方登上泰坦尼克號。
構造的新特徵
- Title,頭銜
- 從Name中提取,類似於Mr. Miss.等
- Family,在船上的家人人數
- SibSp和Parch再加上他自己
- IsAlone,是否一個人
- Family
- Age*Pclass
- 沒理由,加進去啊效果好
缺失值處理
- Age,使用同Pclass和Sex的中位數補全
- Fare,使用中位數補全
- Cabin,缺失值太多刪除該特徵
數據類型轉化
- 把數據都轉化爲數值型
模型
- 使用Logistic Regression模型分析各特徵的貢獻率
- 訓練子模型,網格搜索合適的參數
- 5折交叉驗證獲得預測結果
- 用Stacking方法預測最後的結果
使用的子模型
- Random Forest
- Extra Trees
- AdaBoost
- Gradient Boosting
- Support Vector Classifier
- Decision Tree Classfifier
- K Nearest Neighbors Classifier
搜索參數
- 限定參數,使用GridSearchCV方法搜索合適的參數
集成模型
- 使用xgboost模型集成,得到最後的結果
參考文檔
[1] 數據清洗&特徵工程
[2] Stacking集成模型
[3] 完整代碼A complete practice和其他Kaggle教程