泰坦尼克号预测(上篇)

1、研究问题:什么样的人在泰坦尼克号中更容易存活?

2、

import numpy as np

import pandas as pd

train=pd.read_csv("./train.csv")

test=pd.read_csv("./test.csv")

print('训练数据集:',train.shape,'测试数据集:',test.shape)

full=train.append(test,ignore_index=True)

print('合并后的数据集:',full.shape)

full.head

full.describe()

full.info()

3、数据预处理

很多机器学习算法为了训练模型要求传入的数据特征不能有空值

其中,年龄和船票价格有缺失数据,这两列里存放的数据类型是数值,用平均数来填充缺失值

full['Age']=full['Age'].fillna(full['Age'].mean())

full['Fare']=full['Fare'].fillna(full['Fare'].mean())

登船港口只缺少了几条数据,将缺失值填充为最频繁出现的值

full['Embarked']=full['Embarked'].fillna('S')

船舱号数据缺失的很多,缺失值填充为U(Uknow)

full['Cabin']=full['Cabin'].fillna('U')

 

特征提取

将性别的值映射为数值,malesu对应1,female对应0

sex_mapDict={'male':1,

           'female':0}

map函数,对Series每个数据应用自定义函数的计算

sex=full['Sex'].map(sex_mapDict)

sex.head()

使用get_dummies函数对登录港口数据进行one-hot编码,列名前缀是Embarked

embarkedDf=pd.get_dummies(full['Embarked'],prefix='Embarked')

embarkedDf.head()

使用get_dummies函数对客舱等级数据进行one-hot编码,列名前缀是Pclass

pclassDf=pd.get_dummies(full['Pclass'],prefix='Pclass')

pclassDf.head()

定义函数:从姓名中获取头衔

def getTitle(name):

    str1=name.split(',')[1]

    str2=str1.split('.')[0]

    str3=str2.strip()

    return str3

map函数,对Series每个数据应用自定义函数的计算

titleDf=pd.DataFrame()

titleDf['Title']=full['Name'].map(getTitle)

titleDf.head()

姓名中头衔字符串与定义头衔类别的映射关系

title_mapDict={

                "Capt":"Officer",

                "Col":"Officer",

                "Major":"Office",

                "Jonkheer":"Royalty",

                "Don":"Royalty",

                "Sir":"Royalty",

                "Dr":"Officer",

                "Rev":"Officer",

                "the Countess":"Royalty",

                "Dona":"Royalty",

                "Mme":"Mrs",

                "Mlle":"Miss",

                "Ms":"Mrs",

                "Mr":"Mr",

                "Mrs":"Mrs",

                "Miss":"Miss",

                "Master":"Master",

                "Lady":"Royalty"

}

map函数,对Series每个数据应用自定义函数的计算

titleDf['Title']=titleDf['Title'].map(title_mapDict)

使用get_dummies函数对客舱等级数据进行one-hot编码

titleDf=pd.get_dummies(titleDf['Title'])

titleDf.head()

客舱号的类别值是用匿名函数lambda定义为首字母——重命名,简洁化

full['Cabin']=full['Cabin'].map(lambda s:s[0])

cabinDf=pd.get_dummies(full['Cabin'],prefix='Cabin')

cabinDf.head()

你可能感兴趣的:(Python)