Machine Learning (11) - 关于 Decision Tree 的小练习

题目

以泰坦尼克号的人员名单为草料,从多个维度值决定一个人是否会遇难。目前我们手上有一份真实的泰坦尼克号的所有人员名单,其中有一列是 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
本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!