Kaggle泰坦尼克号预测——Last

该博客详细介绍了Kaggle泰坦尼克号生存预测问题的数据预处理过程,包括导入数据集、探索性分析、填补缺失值、归一化和标准化。博主关注了Pclass、Sex、Embarked、Age、Fare等关键特征与生存率的关系,并用线性模型进行预测,最终在Kaggle上取得了0.7606的分数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

整理了一下全部流程,写成了一个ipynb文件

导入数据集

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')

##载入数据集
data_path = 'D:/Now/Titanic/'

train_data = pd.read_csv(data_path + 'train.csv',sep = ',')
test_data = pd.read_csv(data_path + 'test.csv',sep = ',')

train_data.info()

在这里插入图片描述

数据探索性分析

##查看缺失值
train_miss_data = train_data.isnull().sum()

train_miss_data = train_miss_data[train_miss_data>0]
train_miss_data.plot.bar()

在这里插入图片描述
在train_data的缺失值中,可以看到Cabin的缺失值比较多。Age的缺失值相对来说也比较多

train_data.head(10)

在这里插入图片描述
Pclass,Cabin,Embarked,Ticket,Sex,Survived是定性数据,Fare,SibSp,Parch,Age是定量数据。

查看Embarked数据
查阅资料得知:泰坦尼克号从英国南安普敦(Southampton)港出发,途经法国瑟堡-奥克特维尔(Cherbourg-Octeville)以及爱尔兰昆士敦(Queenstown),计划中的目的地为美国纽约(New York),开始了这艘“梦幻客轮”的处女航。

train_data['Embarked'].value_counts()

在这里插入图片描述
将Embarked转换成数值型数据

#train_data将S转为1,C转为2,Q转为3
train_data['Embarked'].replace('S',1,inplace=True)
train_data['Embarked'].replace('C',2,inplace=True)
train_data['Embarked'].replace('Q',3,inplace=True)
train_data['Embarked'].value_counts()

'''
1.0    644
2.0    168
3.0     77
Name: Embarked, dtype: int64
'''

#test_data将S转为1,C转为2,Q转为3
test_data['Embarked'].replace('S',1,inplace=True)
test_data['Embarked'].replace('C',2,inplace=True)
test_data['Embarked'].replace('Q',3,inplace=True)
test_data['Embarked'].value_counts()
'''
1    270
2    102
3     46
Name: Embarked, dtype: int64
'''

查看Sex数据

train_data['Sex'].value_counts()

在这里插入图片描述

将Sex转换成数值型数据

#train_data将male转换成1,female转换成2
train_data['Sex'].replace('male',1,inplace=True)
train_data['Sex'].replace('female',2,inplace=True)
train_data['Sex'].value_counts()
'''
1    577
2    314
Name: Sex, dtype: int64
'''

#test_data将male转换成1,female转换成2
test_data['Sex'].replace('male',1,inplace=True)
test_data['Sex'].replace('female',2,inplace=True)
test_data['Sex'].value_counts()
'''
1    266
2    152
Name: Sex, dtype: int64
'''

转换之后查看相关性

abs(train_data.corr(method='pearson')).plot(kind='bar')
plt.legend(loc = 'best')
abs(train_data.corr(method='pearson'))

在这里插入图片描述
在这里插入图片描述

查看存活情况和其他数据的相关性

abs(train_data.corr(method='pearson'))['Survived']

在这里插入图片描述
可以看到,Sex,Pclass,Fare与Survived都有较明显的相关性

换个图看看:

sns.heatmap(abs(train_data.corr(method='kendall')))

在这里插入图片描述

train_data['Survived'].value_counts(normalize=True)
#空准确率 有38%的人获救

在这里插入图片描述

##对每一列绘制图观察
cols = ['Age','SibSp','Parch','Fare']
for i in cols:
    sns.distplot(train_data[train_data['Survived']==0][i],label='notSurvived',kde=False)
    sns.distplot(train_data[train_data['Survived']==1][i],label='Survived',kde=False)
#     plt.hist(train_data[train_data['Survived']==0][i],10,alpha = 0.5,label='notSurvived')
#     plt.hist(train_data[train_data['Survived']==1][i],10,alpha = 0.5,label='Survived')
    plt.legend(loc = 'best')
    plt.xlabel(i)
    plt.ylabel('count')
    plt.show()
    
col = ['Pclass','Sex',
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值