泰坦尼克號資料探勘專案實戰——Task3 模型構建
阿新 • • 發佈:2019-01-08
參考:【1】https://github.com/AaronJny/simple_titanic
【2】 https://zhuanlan.zhihu.com/p/30538352
經過task 2 ,已經對資料進行了初步分析,特徵選擇,最終留下了12個特徵。接下來將特徵送入分類器中,進行對模型的訓練。
# 匯入庫 from sklearn.svm import SVC from sklearn.model_selection import cross_val_score from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import RandomForestClassifier from sklearn.linear_model import LogisticRegression from sklearn.naive_bayes import MultinomialNB from sklearn.neighbors import KNeighborsClassifier from sklearn.ensemble import AdaBoostClassifier # 支援向量機 svc = SVC() # 決策樹 dtc = DecisionTreeClassifier() # 隨機森林 rfc = RandomForestClassifier() # 邏輯迴歸 lr = LogisticRegression() # 貝葉斯 nb = MultinomialNB() # K鄰近 knn = KNeighborsClassifier() # AdaBoost boost = AdaBoostClassifier()
對訓練資料選擇10折交叉驗證,檢視交叉驗證的正確率
print('\n\n\n模型驗證:') print ('SVM acc is', np.mean(cross_val_score(svc, train_X, target_Y, cv=10))) print( 'DecisionTree acc is', np.mean(cross_val_score(dtc, train_X, target_Y, cv=10))) print ('RandomForest acc is', np.mean(cross_val_score(rfc, train_X, target_Y, cv=10))) print ('LogisticRegression acc is', np.mean(cross_val_score(lr, train_X, target_Y, cv=10))) print( 'NaiveBayes acc is', np.mean(cross_val_score(nb, train_X, target_Y, cv=10))) print ('KNN acc is', np.mean(cross_val_score(knn, train_X, target_Y, cv=10))) print ('AdaBoost acc is', np.mean(cross_val_score(boost, train_X, target_Y, cv=10)))
發現邏輯迴歸的分類效果最好,所以選擇lr進行訓練。隨機森林的也較高,不知道是不是因為特徵選擇那裡用的是隨機森林方法。
# 訓練
lr.fit(train_X, target_Y)
# 預測
y_predict = lr.predict(test_X)
利用sum函式看有多少人預測存活了下來
y_predict.sum()
得到結果171人。