泰坦尼克号生命值预测
泰坦尼克号
- 查看数据情况
- 获取数据集
- 数据处理部分
- 引入需要用的包
- 读取数据并合并测试集和训练集
- 查看数据的缺失情况
- 缺失值处理
- 对性别进行编码,转换成01
- 独热编码
- 建立family_size特征
- 删除一些影响不大的列
- 相关性热度图
- 模型训练与选择
- LogisticRegression
- 随机森林Random Forest模型
- 决策树模型
- 投票法
查看数据情况
训练集
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
train.info()
train.info()
从中可以看出,该数据是存在缺失值的。
数据各字段说明:
Survived 是否存活(label)
PassengerId (乘客ID)
Pclass(用户阶级):1 - 1st class,高等用户;2 - 2nd class,中等用户;3 - 3rd
class,低等用户;Name(名字)
Sex(性别)
Age(年龄)
SibSp:描述了泰坦尼克号上与乘客同行的兄弟姐妹(Siblings)和配偶
(Spouse)数目;
Parch:描述了泰坦尼克号上与乘客同行的家长(Parents)和孩子(Children)数目;
Ticket(船票号)
Fare(乘客费用)
Cabin(船舱)
Embarked(港口):用户上船时的港口
获取数据集
链接:百度网盘
提取码:8888
说明:train是训练集,test是测试集(不含标签),gender_submission是测试集的标签(即测试集乘客的存活情况)。
数据处理部分
引入需要用的包
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import metrics
from sklearn.linear_model import LogisticRegression
import seaborn as sns
import warnings
warnings.filterwarnings("ignore")
读取数据并合并测试集和训练集
合并的目的:便于一同对数据进行清洗
train = pd.read_csv('train.csv')
test = pd.read_csv('test.csv')
dataset = train.append(test,sort=False) # 将训练集和测试集合并在一起
查看数据的缺失情况
dataset.isnull().sum() # 统计缺失值
缺失值处理
注意这里的Survived不算缺失值,因为在测试集上不包含这一项。后面我们会通过模型预测这一项。
-Age为连续性变量,这里使用均值填充。
-Cabin缺失值太多,参考价值低,这里直接舍去。
-Embarked离散变量,它包含三个值,其中S最多,这里我们就直接填充S
-Fare,票价,这里也采用均值填充。
dataset['Age'] = dataset['Age'].fillna(dataset['Age'].mean()) # 使用平均值补充dataset.drop(['Cabin'],axis=1,inplace=True) # 字段Cabin,缺失率很高,这里直接舍去dataset.Embarked = dataset.Embarked.fillna('S') # Embarked中包含三个变量,其中S最多,这里我们就直接填充Sdataset['Fare'] = dataset['Fare'].fillna(dataset['Fare'].mean())
对性别进行编码,转换成01
目的:因为机器不能直接学习文本数据,需要转换成数值的。
sexdict = {'male':1,'female':0}
dataset.Sex = dataset.Sex.map(sexdict) # 对性别进行编码,转换成0,1
独热编码
目的:因为有些变量是离散型的,它分为几个值,我们可以将这几个值拆开(设置为01),探究每一个值对于总体的影响。
对Embarked和Pclass进行独热编码。
embarked2 = pd.get_dummies(dataset.Embarked, prefix = 'Embarked') # 进行独热编码,相当于将这一列的变量拆开,变为几个,设置为0,1
dataset = pd.concat([dataset,embarked2], axis = 1) ## 将编码好的数据添加到原数据上
dataset.drop(['Embarked'], axis = 1, inplace=True) ## 将原来的删除embarked2 = pd.get_dummies(dataset.Pclass, prefix = 'Pclass')
dataset = pd.concat([dataset,embarked2], axis = 1)
dataset.drop(['Pclass'], axis = 1, inplace=True)
建立family_size特征
我们认为,家人数,应该跟存活率有关,所以新增一列家人数。SibSp和Parch分别代表了兄弟姐妹和配偶数量,以及父母与子女数量。通过这两个数字,我们可以计算出该乘客的随行人数,作为一列新的特征。
dataset['family'] = dataset.SibSp + dataset.Parch + 1
dataset.head(1)
删除一些影响不大的列
dataset.drop(['Ticket'], axis=1,inplace=True)
dataset.drop(['Name'], axis=1,inplace=True)
dataset.drop(['SibSp'], axis=1,inplace=True)
dataset.head(5)
相关性热度图
plt.figure(figsize=(14,12))
sns.heatmap(dataset.corr(),annot = True)
plt.show()
从热力图可以看出,生存与否,与Sex,Fare,Pclass_1相关度比较高。
模型训练与选择
首先,得到处理好的训练集和测试集。gender_submission.csv,文件中,保存的是测试集的存活情况。
x_train = dataset.iloc[0:891, :]
y_train = x_train.Survived
x_train.drop(['Survived'], axis=1, inplace =True)x_test = dataset.iloc[891:, :]
x_test.drop(['Survived'], axis=1, inplace =True)y_test = pd.read_csv('gender_submission.csv')#测试集
y_test=np.squeeze(y_test)
LogisticRegression
LogisticRegression 模型
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
model = LogisticRegression() # 实例化model.fit(x_train,y_train) # 模型训练# 保存为csv文件,一会放在kaggle上面测试下
prediction1 = model.predict(x_test)
result = pd.DataFrame({'PassengerId':y_test['PassengerId'].values, 'Survived':prediction1.astype(np.int32)})
result.to_csv("predictions1.csv", index=False)
将csv文件上传到kaggle上的得分为:
kaggle泰坦尼克号链接:泰坦尼克号
也可以自己评估预测模型:
accuracy_score(model.predict(x_test),y_test['Survived'])
随机森林Random Forest模型
from sklearn.ensemble import RandomForestClassifier
model2 = RandomForestClassifier(n_estimators=500, criterion='entropy', max_depth=5, min_samples_split=1.0,min_samples_leaf=1, max_features='auto', bootstrap=False, oob_score=False, n_jobs=1, random_state=0,verbose=0)
model2.fit(x_train, y_train) #模型训练
prediction2 = model2.predict(x_test) # 模型预测result = pd.DataFrame({'PassengerId':y_test['PassengerId'].values, 'Survived':prediction2.astype(np.int32)})
result.to_csv("predictions2.csv", index=False) # 保存为csv文件accuracy_score(y_test['Survived'], prediction2)
kaggle得分:
决策树模型
from sklearn.tree import DecisionTreeClassifiermodel3 = DecisionTreeClassifier(criterion='entropy', max_depth=7, min_impurity_decrease=0.0)
model3.fit(x_train, y_train)
prediction3 = model3.predict(x_test)result = pd.DataFrame({'PassengerId':y_test['PassengerId'].values, 'Survived':prediction3.astype(np.int32)})
result.to_csv("predictions3.csv", index=False)
accuracy_score(y_test['Survived'], prediction3)
kaggle 得分:
投票法
投票法是一种集成学习的方法。这里将会结合前面三个模型的预测结果,进行投票,少数服从多数原则。
如下图所示,3代表前面三个模型都预测该乘客是存活的,2代表三个模型,有2个预测是存活的,0代表三个模型都预测该乘客没有存活。
代码:
prediciton_vote = pd.DataFrame({'PassengerId': y_test['PassengerId'],'Vote': prediction1.astype(int)+prediction2.astype(int)+prediction3.astype(int)})vote = { 0:False,1:False,2:True,3:True}
prediciton_vote['Survived']=prediciton_vote['Vote'].map(vote) # 该操作将0,1,2,3映射到False和True上。result = pd.DataFrame({'PassengerId':y_test['PassengerId'].values, 'Survived':prediciton_vote.Survived.astype(np.int32)})
result.to_csv("predictions4.csv", index=False) # 保存为csv文件
kaggle 得分:
泰坦尼克号生命值预测相关推荐
- Kaggle经典数据分析项目:泰坦尼克号生存预测!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:陈锴,中山大学,Datawhale成员 最近有很多读者留言,希望能 ...
- 泰坦尼克号数据集_机器学习入门—泰坦尼克号生存率预测
项目名称:泰坦尼克号生存率预测1.导入数据 这里使用kaggle kernel编写代码 数据下载地址为:https://www.kaggle.com/c/titanic 2.数据统计分析 通过desc ...
- python泰坦尼克号数据预测_机器学习入门之Python机器学习:泰坦尼克号获救预测一...
本文主要向大家介绍了机器学习入门之Python机器学习:泰坦尼克号获救预测一,通过具体的内容向大家展现,希望对大家学习机器学习入门有所帮助. 一.项目概要 1.应用 模式识别.数据挖掘(核心).统计学 ...
- 决策树概述+模块介绍+重要参数(criterion+random_statesplitter+减枝参数+目标权重参数)+回归树(参数+实例+拟合正弦曲线)+泰坦尼克号生存者预测实例
文章目录 什么是sklearn 一.决策树概述 (一)概述 (二)基础概念 (三)决策树算法的核心是要解决两个问题: 二.模块sklearn.tree的使用 (一) 模块介绍 (二)使用介绍 三.重要 ...
- 决策树入门案例:泰坦尼克号幸存者预测
决策树 1 概述 1.1 决策树是如何工作的 1.2 分类树 DecisionTreeClassifier 1.3 回归树 DecisionTreeRegressor 1.4 案例练习 1. 用回归树 ...
- 机器学习-泰坦尼克号幸存者预测
机器学习-泰坦尼克号幸存者预测 泰坦尼克灾难数据描述 PassengerId:乘客的ID号,这个是顺序编号,用来唯一标识一名乘客.这个特征和幸存与否无关,我们不使用这个特征. Survived:1表示 ...
- 特征工程实践:泰坦尼克号幸存者预测
文章目录 泰坦尼克号幸存者预测 泰坦尼克号幸存者预测 数据集下载地址:https://www.kaggle.com/c/titanic/data . 本案例主要展示特征工程对数据集的处理方法,模型只选 ...
- #泰坦尼克号幸存者预测
泰坦尼克号幸存者预测 泰坦尼克号训练数据见百度网盘: 链接:https://pan.baidu.com/s/1yHvYb2usyW24LqacHk9-Dw 提取码:p1do import pandas ...
- 【阿旭机器学习实战】【13】决策树分类模型实战:泰坦尼克号生存预测
[阿旭机器学习实战]系列文章主要介绍机器学习的各种算法模型及其实战案例,欢迎点赞,关注共同学习交流. 本文用机器学习中的决策树分类模型对泰坦尼克号生存项目进行预测. 关于决策树的详细介绍及原理参见前一 ...
- Kaggle泰坦尼克号生存预测挑战——模型建立、模型调参、融合
Kaggle泰坦尼克号生存预测挑战 这是kaggle上Getting Started 的Prediction Competition,也是比较入门和简单的新人赛,我的最好成绩好像有进入top8%,重新 ...
最新文章
- shell脚本重启tomcat
- iOS 日期格式的转换
- python爬虫----handler和opener
- python语言标识符命名规则_python标识符命名规范是什么
- 计算机中 堆 、栈、
- smoothl1函数_Faster RCNN的损失函数(Loss Function)
- 分类计数原理与分步计数原理_两种基础的计数原理
- JMeter接口测试中,响应数据中文显示乱码的处理方法(转)
- JAVA-Hibernate-SQL类型映射表及Hibernate标识生成策略
- 利用Wireshark分析UDP数据包
- Python—— 文件和数据格式化(模块6: wordcloud库的使用)(实例:自动轨迹绘制政府工作报告词云)
- 硬盘出现“文件或目录损坏且无法读取”的故障,怎么解决?
- mfc键盘控制移动鼠标光标_如何在Windows中使用键盘控制鼠标光标
- 上三角的输出 方阵的主对角线之上称为“上三角”。
- 在Windows上使用Cygwin源码安装tig
- 2022国产车排行榜前十名
- 视频号如何发表视频呢?
- 服务器如何向前端页面推送消息,后端向前端推送消息
- Android studio Chipmunk 新的gradle规则变更
- 2020年Web前端面试题及答案----ES6篇
热门文章
- 后盾网-CI框架实例教程-马振宇 - 学习笔记(1~2)
- java助理工程师主要做什么工作,Java助理工程师面试的惨痛教训
- 优动漫PAINT入门宝典(应用篇)——颜色配置文件
- Android Studio编译错误:Suggestion: use tools:overrideLibrary=xxx.xxx.xxx to force usage
- 每日新闻丨​iPhone11成败关系全球众多供应商下一张饭票
- 房贷计算器移动端接口
- ​​insecure-configuration --复现
- 西湖大学校长---施一公讲座
- 容器如何访问外部世界?- 每天5分钟玩转 Docker 容器技术(36)
- 外部世界如何访问容器? - 每天5分钟玩转 Docker 容器技术(37)