问题
数据来源于Kaggle,通过一组列有泰坦尼克号灾难幸存者或幸存者的训练样本集,我们的模型能否基于不包含幸存者信息的给定测试数据集确定这些测试数据集中的乘客是否幸存。
代码与数据分析
导入必要的包和titanic数据
image
数据集基本信息
将数据分为不同类别,分别为类别型数据和数字型数据类别数据:Survived, Sex, and Embarked. Ordinal: Pclass
数字型数据:Age, Fare. Discrete: SibSp, Parch
image
数据分布来看:大多数乘客(75%)没有和父母或孩子一起旅行
近30%乘客有兄弟姐妹或配偶
票价差异很大,只有少数乘客(<1%)支付了512美金的票价
年龄较大的乘客数据较少(1%)
提出假设关联:各个特征与存货的相关性是如何
填充缺失值:对 Age 和 Embarked 进行缺失值填充
清洗、处理、剔除字段:Ticket由于高重复率,Cabin仓位空值过多,PassengerId与存活无关,Name数据不标准,都需要处理后进行剔除
添加字段:我们可以根据 Parch 和 SibSp 创造一个关于家庭成员数量的字段;可以从名字中提取特征形成新特征;可以从 Age 和 Fare 创造分层,使数据更具有机器学习意义
分类:猜测女性(Sex = female)、儿童(Age
通过pandas pivot进行简单分析
image
Pclass 等级越低,存活率越低
image
女性存活率远高于男性
image
SibSp与存活率很分散,可能需要进行重构新字段
通过可视化进行分析
数据发现婴儿(Age < 4)存活率很高
年龄最大的乘客存活了下来
大多数15-25岁之间的乘客没有存活下来
大多数乘客处于15-35岁之间
决策
通过对以上数据分析,可以得到以下决策我们应该对年龄进行缺失值填空、分层
image
数据相关性
结合多个特征来识别相关性
数据发现Pclass=3的乘客最多,但存活率最低
Pclass=2和Pclass=3的婴儿乘客幸存率很高
大多数Pclass=1的乘客存活率很高
不同阶层的年龄分布不同
image
分类特征关联
数据发现女性存活率比男性高很多
Pclass=3的男性存活率更高
Pclass=3和男性乘客的生存率各不相同
image
数值数据和分类数据的关系
数据发现票价越高的乘客存活率越高
登陆口岸与乘客存活率相关
image
数据处理
现在我们上文中的数据分析对数据进行处理
Name 列处理
名称列提取后发现分组较为集中和准确,进行简单处理就可以得到比较明确的类别
image
image
女性称谓的存活率也明显较高
image
将类别数据(Title、Sex)数字化
image
image
删掉不必要的列
image
填充空缺值
填充 Age
我们考虑用三种方法对Age进行空缺值填充随机生成一个均值±方差之间的数字
在以上的分析中我们可以看到每个阶层、性别之间的年龄分布有所不同,所以我们可以根据阶层和性别组合特征进行空缺的年龄值预测
结合1、2方法,通过阶层和性别组合特征随机生成一个均值±方差之间的数字
这里我们选择方法 2
生成年龄填充DataFrame
[图片上传中…(image-a6ff10-1576513947294-25)]
填充空缺 Age
根据每条空缺值的 Pclass 和 Sex 进行 Age 填充
image
对年龄进行分层
image
根据年龄分层将年龄类别数据数字化
image
移除多余列
image
结合 SibSp 和 Parch 创建新列
image
image
删除多余字段
image
结合阶层和年龄生成新列
image
对 Embarked 列进行填充
由于绝大多数 Embarked=S,故用 S 对空缺值进行填充
image
对 Embarked 列类别数据数字化
image
对 Fare 列进行空缺值填充与分层
image
根据数据分层对 Fare 进行分类并数据化
image
数据学习模型选择与评估
我们选择以下几种模型进行学习预测:Logistic Regression
KNN or k-Nearest Neighbors
Support Vector Machines
Naive Bayes classifier
Decision Tree
Random Forrest
Perceptron
Artificial neural network
RVM or Relevance Vector Machine
进行训练集、预测集分割处理
image
逻辑回归
逻辑回归主要原理是 Sigmoid 函数,是在工作流早期运行的一个有用模型。Logistic回归通过使用Logistic函数(累积Logistic分布)估计概率来度量分类因变量(特征)与一个或多个自变量(特征)之间的关系 Wikipedia。
image
我们可以看到各个特征的的系数:Sex 的系数为2.019,性别为1(female),存活率越大
Pclass系数为-1.046,值越大,存活率越低
image
SVM模型
image
KNN 模型
image
朴素贝叶斯模型
image
感知机模型
image
支持向量机模型
image
梯度下降模型
image
决策树模型
image
随机森林模型
image
对所有模型进行评价分析
随机森林和决策树的分类效果都比较好,防止过拟合选择随机森林,进行 Kaggle 数据预测
image
Kaggle 预测数据上传
Kaggle 预测集准确率只有0.74641,排名9256名。如果对模型进行适当调参,模型准确性应该会更高
image
END
/p/d5ee5d98db12