1. 程式人生 > >【Kaggle筆記】預測泰坦尼克號乘客生還情況(決策樹)

【Kaggle筆記】預測泰坦尼克號乘客生還情況(決策樹)

資料集

程式碼

# -*- 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']))

效果