机器学习入门--------决策树预测泰坦尼克号存活人数
引言
案例背景
泰坦尼克号沉没是历史上最臭名昭着的沉船之一。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("预测结果:\n",y_predict)
print("预测分数为:\n",estimator.score(x_test,y_test))