当前位置: 代码迷 >> 综合 >> Kaggle竞赛,初级入门,泰坦尼克号
  详细解决方案

Kaggle竞赛,初级入门,泰坦尼克号

热度:98   发布时间:2024-02-22 01:59:36.0

Kaggle竞赛,初级入门,泰坦尼克号

kaggle泰坦尼克号

一、训练数据探索

1、观察数据维度

import pandas as pd
import pandas_profiling
from autoviz.AutoViz_Class import AutoViz_Class
data=pd.read_csv('.\\train.csv')

维度:‘PassengerId’, ‘Survived’, ‘Pclass’, ‘Name’, ‘Sex’, ‘Age’, ‘SibSp’,
‘Parch’, ‘Ticket’, ‘Fare’, ‘Cabin’, ‘Embarked’
survived,即为y变量,0为死,1为生。

report=pandas_profiling.ProfileReport(data)
report.to_file(output_file=(".\\census_report.html"))
#自动生成一段数据分析视图

总体分析如图所示
还可以显示各个字段的情况
还可以显示各个字段的情况例如这个PassengerId,乘客id,无重复值等等。

相关性这个相关性还是很赞的,看出的,passengerId、age、sibsp与survived,相关性较低。parch有一些相关性,但不明显。

在这里插入图片描述
年龄有部分缺失值,船舱缺失较多。对于船舱的缺失有两种猜测:1、确实是缺失了。
2、只有一部分人能拥有单独的船舱号,也就是说这部分人在各自阶级比较高。

data[data['Cabin'].isna()].groupby(by=['Survived'])['Pclass'].count()data[~data['Cabin'].isna()].groupby(by=['Survived'])['Pclass'].count()

在这里插入图片描述
在这里插入图片描述
有船舱号的乘客生存比例确实远超无船舱号乘客的。

2、数据清洗

前面提到Cabin的存在与否影响到survive结果,因此有Cabin产生一个新的变量

import numpy as np
data['is_cabin']=data['Cabin'].apply(lambda x: 0 if x is np.nan else 1)
#删去Cabin
data=data.drop(columns=['Cabin'])
data=data.drop(columns='PassengerId','Ticket','Name'])

PassengerId、ticket,Name在我看来没有特别在意的地方,因此直接删除

age年龄有部分缺失值,需要补全,我选择的是插值法;
Embarked.直接用众数

data['Embarked'].dropna().mode()[0]
data['Embarked']=data['Embarked'].fillna('S')
data['Age']=data['Age'].interpolate()
data["new_age"] = pd.cut(data["Age"], 5,precision=0)
data.groupby(by=['new_age','Survived'])['Pclass'].count()
#切分,主要是16岁以下算是少年,因此切成五份

接下来是数据离散化,吧fare也切分为5份,字符型转化为int类型,。就可以开始预测了。