数据来源:泰坦尼克逃生数据
知识点:特征处理和随机森林预测
主要内容:
-
缺失值处理
1. 对Embarked字段直接用众数填充
2. 对船票Fare字段用均值填充
3. 建立预测模型,填充年龄Age字段 -
不同特征字段的处理
1. 对Embarked、Sex以及Pclass等用dummy处理
2. 对票价Fare分级处理,使用qcut分桶
3. 对名字Name进行处理,提取称呼,如Mr, Mrs, Miss等;
4. 对称呼进行oner-hot编码
5. 对Cabin进行编码,Cabin缺失值过多,将其分为有无两类,进行编码,如果缺失,即为0,否则为1
6. 对Ticket处理,提取字母,得到Ticket_Letter,对Ticket_Letter进行 factorize处理
7. 利用随机森林预测Age缺失值 -
对相关系数排序筛选重要特征
导入数据
import pandas as pd
train = pd.read_csv('/home/mw/input/titanic/train.csv')
test = pd.read_csv('/home/mw/input/titanic/test.csv')
train_and_test = train.append(test, sort=False) # 合并训练集与测试集
PassengerId = test['PassengerId']
train_and_test.shape
缺失值处理
# 对Embarked直接用众数填充;
mode=train_and_test['Embarked'].mode().iloc[0]
train_and_test['Embarked'].fillna(mode,inplace=True)
# 对Fare用均值填充;
Fare_mean=train_and_test['Fare'].mean()
train_and_test['Fare'].fillna(Fare_mean,inplace=True)
特征值处理
1.对Embarked、Sex以及Pclass等用dummy处理
pd.get_dummies(train_and_test['Embarked'], # 输入的数据框
prefix='Embarked', # 列名的前缀
prefix_sep='_', # 分割符
dummy_na=False, # 增加一列空缺值
columns=['Embarked'], # 指定要实现转换的列名
sparse=False,
drop_first=False, # 删除第一个类别值
dtype=None