kaggle泰坦尼克号

本文通过分析kaggle泰坦尼克号数据集,对比了逻辑回归、随机森林和XGBOOST算法的分类准确度。在数据预处理中,处理了缺失值并提取了特征,如乘客性别、登船港口、客舱等级等。经过模型训练和评估,随机森林算法得到0.9777的高准确率,而XGBOOST的分数较低,为0.8372。
摘要由CSDN通过智能技术生成

本文前部分参考简书:https://www.jianshu.com/p/06c2ee7e5c68

后半部分对比逻辑回归,随机森林、XGBOOST常见算法的分类准确度。

概述

1912年4月15日,泰坦尼克号在首次航行期间撞上冰山后沉没,2224名乘客和机组人员中有1502人遇难。沉船导致大量伤亡的原因之一是没有足够的救生艇给乘客和船员。虽然幸存下来有一些运气因素,但有一些人比其他人更有可能生存,比如妇女,儿童和上层阶级。在本文中将对哪些人可能生存作出分析,特别是运用Python和机器学习的相关模型工具来预测哪些乘客幸免于难,最后提交结果。从kaggle泰坦尼克生存预测项目下载相关数据。


实施步骤

主要步骤


1.提出问题

什么样的人在泰坦尼克号中更容易存活?


2.理解数据

2.1 采集数据

从Kaggle泰坦尼克号项目页面下载数据:https://www.kaggle.com/c/titanic

获取数据

2.2 导入数据

#导入处理数据包
import numpy as np
import pandas as pd
#导入数据
#训练数据集
train = pd.read_csv('E:\kaggle\\train.csv')
#测试数据集
test  = pd.read_csv('E:\kaggle\\test.csv')
print ('训练数据集:',train.shape,'测试数据集:',test.shape)

rowNum_train=train.shape[0]
rowNum_test=test.shape[0]
print('kaggle训练数据集有多少行数据:',rowNum_train,
     ',kaggle测试数据集有多少行数据:',rowNum_test,)

#合并数据集,方便同时对两个数据集进行清洗
full = train.append( test , ignore_index = True )
print ('合并后的数据集:',full.shape)

2.3 查看数据集信息

#查看数据
full.head()

#获取数据类型列的描述统计信息
full.describe()

 

describe只能查看数据类型的描述统计信息,对于其他类型的数据不显示

# 查看每一列的数据类型,和数据总数
full.info()

 

我们发现数据总共有1309行。
其中数据类型列:年龄(Age)、船舱号(Cabin)里面有缺失数据:
1)年龄(Age)里面数据总数是1046条,缺失了1309-1046=263,缺失率263/1309=20%
2)船票价格(Fare)里面数据总数是1308条,缺失了1条数据
字符串列:
1)登船港口(Embarked)里面数据总数是1307,只缺失了2条数据,缺失比较少
2)船舱号(Cabin)里面数据总数是295,缺失了1309-295=1014,缺失率=1014/1309=77.5%,缺失比较大
这为我们下一步数据清洗指明了方向,只有知道哪些数据缺失数据,我们才能有针对性的处理。

3.数据清洗

3.1 数据预处理

缺失值处理
在前面,理解数据阶段,我们发现数据总共有1309行。 其中数据类型列:年龄(Age)、船舱号(Cabin)里面有缺失数据。 字符串列:登船港口(Embarked)、船舱号(Cabin)里面有缺失数据。这为我们下一步数据清洗指明了方向,只有知道哪些数据缺失数据,我们才能有针对性的处理。很多机器学习算法为了训练模型,要求所传入的特征中不能有空值。

  1. 如果是数值类型,用平均值取代
  2. 如果是分类数据,用最常见的类别取代
  3. 使用模型预测缺失值,例如:K-NN
print('处理前:')
full.info()
#年龄(Age)
full['Age']=full['Age'].fillna( full['Age'].mean() )
#船票价格(Fare)
full['Fare'] = full['Fare'].fillna( full['Fare'].mean() )
print('处理红后:')
full.info()

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值