【Kaggle筆記】預測泰坦尼克號乘客生還情況(決策樹)
阿新 • • 發佈:2019-01-01
資料集
程式碼
# -*- coding: utf-8 -*-
"""
泰坦尼克號乘客生還情況預測
模型
決策樹
"""
# 匯入pandas用於資料分析。
import pandas as pd
# 利用pandas的read_csv模組直接從網際網路收集泰坦尼克號乘客資料。
titanic = pd.read_csv('titanic.txt')
# 機器學習有一個不太被初學者重視,並且耗時,但是十分重要的一環,特徵的選擇,這個需要基於一些背景知識。根據我們對這場事故的瞭解,sex, age, pclass這些都很有可能是決定倖免與否的關鍵因素。
X = titanic[['pclass' , 'age', 'sex']]
y = titanic['survived']
# 首先我們補充age裡的資料,使用平均數或者中位數都是對模型偏離造成最小影響的策略。
X['age'].fillna(X['age'].mean(), inplace=True)
# 資料分割。
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.25, random_state=33)
# 我們使用scikit-learn.feature_extraction中的特徵轉換器,詳見3.1.1.1特徵抽取。
from sklearn.feature_extraction import DictVectorizer
vec = DictVectorizer(sparse=False)
# 轉換特徵後,我們發現凡是類別型的特徵都單獨剝離出來,獨成一列特徵,數值型的則保持不變。
X_train = vec.fit_transform(X_train.to_dict(orient='record'))
# 同樣需要對測試資料的特徵進行轉換。
X_test = vec.transform(X_test.to_dict(orient='record'))
# 從sklearn.tree中匯入決策樹分類器。
from sklearn.tree import DecisionTreeClassifier
# 使用預設配置初始化決策樹分類器。
dtc = DecisionTreeClassifier()
# 使用分割到的訓練資料進行模型學習。
dtc.fit(X_train, y_train)
# 用訓練好的決策樹模型對測試特徵資料進行預測。
y_predict = dtc.predict(X_test)
# 從sklearn.metrics匯入classification_report。
from sklearn.metrics import classification_report
# 輸出預測準確性。
print(dtc.score(X_test, y_test))
# 輸出更加詳細的分類效能。
print(classification_report(y_predict, y_test, target_names = ['died', 'survived']))