Machine Learning (11) - 關於 Decision Tree 的小練習

Rachel發表於2019-06-09

題目

以泰坦尼克號的人員名單為草料,從多個維度值決定一個人是否會遇難。目前我們手上有一份真實的泰坦尼克號的所有人員名單,其中有一列是 Survived, 也就是此人是否遇難。現在的要求是,根據 PclassFareAgeSex 列的值來訓練模型。

正文

引入資料

import pandas as pd

df = pd.read_csv('/Users/rachel/Sites/pandas/py/ML/9_decision_tree/Exercise/titanic.csv')
df.head()

輸出

Machine Learning (11) - 關於 Decision Tree 的小練習

去掉對是否生還結果沒有影響的欄位

df = df.drop(['PassengerId', 'Name', 'SibSp', 'Parch', 'Ticket','Cabin','Embarked'], axis = 'columns')
df.head()

輸出:

Machine Learning (11) - 關於 Decision Tree 的小練習

把非數字列的值轉為數字

from sklearn.preprocessing import LabelEncoder
le_sex = LabelEncoder()
df.Sex = le_sex.fit_transform(df.Sex)
df.head()

輸出:

Machine Learning (11) - 關於 Decision Tree 的小練習

取出用於訓練的 X 列

input = df.drop('Survived', axis = 'columns')
input[:10]

輸出:

Machine Learning (11) - 關於 Decision Tree 的小練習

用平均值填充 NAN

input = input.fillna(input.Age.median())
input[:10]

輸出:

Machine Learning (11) - 關於 Decision Tree 的小練習

劃分訓練資料和測試資料

from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(input, target, test_size = 0.2)

訓練模型

from sklearn import tree
model = tree.DecisionTreeClassifier()
model.fit(X_train, y_train)

model.score(X_test, y_test) // 輸出: 0.7821229050279329

相關文章