1. 程式人生 > >泰坦尼克號資料探勘專案實戰——Task3 模型構建

泰坦尼克號資料探勘專案實戰——Task3 模型構建

參考:【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人。