机器学习入门--------决策树预测泰坦尼克号存活人数

引言

案例背景

泰坦尼克号沉没是历史上最臭名昭着的沉船之一。1912年4月15日,在她的处女航中,泰坦尼克号在与冰山相撞后沉没,在2224名乘客和机组人员中造成1502人死亡。这场耸人听闻的悲剧震惊了国际社会,并为船舶制定了更好的安全规定。 造成海难失事的原因之一是乘客和机组人员没有足够的救生艇。尽管幸存下沉有一些运气因素,但有些人比其他人更容易生存,例如妇女,儿童和上流社会。 在这个案例中,我们要求您完成对哪些人可能存活的分析。特别是,我们要求您运用机器学习工具来预测哪些乘客幸免于悲剧。

数据

https://github.com/hitcszq/kaggle_titanic

开发工具

  • jupyter
  • python3.8

步骤分析

  • 1.获取数据
  • 2.数据基本处理
    • 2.1 确定特征值,目标值
    • 2.2 缺失值处理
    • 2.3 数据集划分
  • 3.特征工程(字典特征抽取)
  • 4.机器学习(决策树)
  • 5.模型评估

特征值:

  • Pclass:指乘客班(1,2,3),是社会经济阶层的代表。
  • Age(有缺失值)
  • sex

目标值

  • Survived:是否存活(0,1)

代码实现:

导包:

import pandas as pd
import numpy as np
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier, export_graphviz

1.获取数据:训练集、测试集

# 1.获取数据
train = pd.read_csv("./data/train.csv")
test = pd.read_csv("./data/test.csv")
y_test = pd.read_csv("./data/titanic.csv")[["Survived"]]
y_test

2.数据基本处理:缺失值用该列的平均值代替

# 2.1 确定特征值,目标值
# 2.2 缺失值处理
x_train = train[["Pclass","Sex","Age"]]
x_train['Age'].fillna(value=train["Age"].mean(),inplace=True)
x_test = test[["Pclass","Sex","Age"]]
x_test['Age'].fillna(value=test["Age"].mean(),inplace=True)
y_train = train[["Survived"]]


3.特征工程(字典特征抽取)

# 特征中出现类别符号,需要进行one-hot编码处理(DictVectorizer)
transfer = DictVectorizer(sparse=False)
x_train = transfer.fit_transform(x_train.to_dict(orient="records"))
x_test = transfer.fit_transform(x_test.to_dict(orient="records"))

4.决策树模型训练和模型评估

estimator = DecisionTreeClassifier(criterion="entropy", max_depth=5)
estimator.fit(x_train,y_train)

5.模型评估

y_predict = estimator.predict(x_test)
print("预测结果:
",y_predict)
print("预测分数为:
",estimator.score(x_test,y_test))

原文地址:https://www.cnblogs.com/yangxiao-/p/14299875.html