如何预测Titanic生存率的流程
- 简介
这是kaggle上入门推荐的测试例子,我将经历在著名的泰坦尼克号数据集上创建一个机器学习模型的全过程,这个模型已经被全世界的许多初学者所使用。 它提供关于泰坦尼克号旅客命运的信息,根据经济状况(等级),性别,年龄和生存情况进行总结。 在这个挑战中,我们被要求预测泰坦尼克号上的乘客是否会幸存下来。
接下来我将介绍自己在学习这个完整的数据处理、模型建立过程的一些主要步骤,即可以复制到其他模型建立的通用步骤 与心得体会。因为我也是学习入门,这里只介绍每一个步骤的一个示例,这些代码是参考kaggle上一位大牛的模型,我只是理解,学习他的建立步骤,最后会附上他的代码链接,有需要可以去下载运行。 - 学习流程
2.1 导包
这是一个典型的二分类问题,也就是乘客只有两种选择,生和死,所以我只导入线性分类的包。
# 线性运算
import numpy as np
# 数据处理
import pandas as pd
# 数据可视化
import seaborn as sns
%matplotlib inline
from matplotlib import pyplot as plt
from matplotlib import style
# 算法
# Algorithms
from sklearn import linear_model#线性模型
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier#随机森林
from sklearn.linear_model import Perceptron#感知器
from sklearn.linear_model import SGDClassifier#随机梯度下降
from sklearn.tree import DecisionTreeClassifier#决策树分类器
from sklearn.neighbors import KNeighborsClassifier#k-邻近分类器
from sklearn.svm import SVC, LinearSVC#线性SVC
from sklearn.naive_bayes import GaussianNB#高斯朴素贝叶斯
2.2 数据分析
这里先导入数据,然后利用pandas的函数简单的观察数据含有哪些特征,它们的一些统计数据,例如均值,标准差,百分位数等。
train_df=pd.read_csv('train.csv')#读取数据
train_df.info()#数据列信息
train_df.describe()#mean 平均值,std标准差,min 最小值,25%百分位数
train_df.head()#显示前5行数据
2.3 统计缺失值程度
total = train_df.isnull().sum().sort_values(ascending=False)
percent_1 = train_df.isnull().sum()/train_df.isnull().count()*100
#计算缺失值百分比,大致判断处理的复杂度,以及该数据是否有用的必要
percent_2 = (round(percent_1, 1)).sort_values(ascending=False)#降序排列
missing_data = pd.concat([total, percent_2], axis=1, keys=['Total', '%'])#连接函数concat
missing_data.head(5)
2.4 分析各个变量与生存率之间的关系(这里只介绍一个示例)
- 例如:Age 和 Sex
survived = 'survived'
not_survived = 'not survived'
fig, axes = plt.subplots(nrows=1, ncols=2,figsize=(10, 4))#1行2列,两个图
women = train_df[train_df