通过探索Titanic数据集,学习如何使用pandas工具包进行数据清洗,生成可供机器学习模型使用的训练集、验证集和测试集等,titanic_train.csv 为训练集原始数据;test.csv 为测试集原始数据,将titanic_train.csv和test.csv作为输入,编写用于处理Titanic数据集的数据清洗程序,返回可供机器学习模型(决策树算法)使用的数据集。
时间: 2024-03-06 17:51:04 浏览: 77
好的,您需要对Titanic数据集进行数据清洗并生成可供机器学习模型使用的数据集。下面是我给您的Python代码实现:
```python
import pandas as pd
import numpy as np
# 读取训练集和测试集数据
train_df = pd.read_csv('titanic_train.csv')
test_df = pd.read_csv('test.csv')
# 合并数据集,方便进行数据清洗
data_df = train_df.append(test_df)
# 丢弃无用的特征
data_df = data_df.drop(['PassengerId', 'Ticket', 'Cabin'], axis=1)
# 填充缺失值
data_df['Embarked'] = data_df['Embarked'].fillna('S')
data_df['Fare'] = data_df['Fare'].fillna(data_df['Fare'].median())
data_df['Age'] = data_df['Age'].fillna(data_df['Age'].median())
# 特征工程
data_df['FamilySize'] = data_df['SibSp'] + data_df['Parch'] + 1
data_df['IsAlone'] = 1
data_df['IsAlone'].loc[data_df['FamilySize'] > 1] = 0
data_df['Title'] = data_df['Name'].str.split(", ", expand=True)[1].str.split(".", expand=True)[0]
# 合并低频率的特征值
title_names = (data_df['Title'].value_counts() < 10)
data_df['Title'] = data_df['Title'].apply(lambda x: 'Misc' if title_names.loc[x] else x)
# 转换分类变量为数值变量
data_df['Sex'] = data_df['Sex'].map({'female': 0, 'male': 1}).astype(int)
data_df['Embarked'] = data_df['Embarked'].map({'S': 0, 'C': 1, 'Q': 2}).astype(int)
data_df['Title'] = data_df['Title'].map({'Mr': 1, 'Miss': 2, 'Mrs': 3, 'Master': 4, 'Misc': 5}).astype(int)
# 分离训练集和测试集
train_df = data_df[:len(train_df)]
test_df = data_df[len(train_df):]
# 构造特征和标签
features = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked', 'FamilySize', 'IsAlone', 'Title']
X_train = train_df[features].values
y_train = train_df['Survived'].values
X_test = test_df[features].values
# 输出处理后的结果
print("X_train.shape: ", X_train.shape)
print("y_train.shape: ", y_train.shape)
print("X_test.shape: ", X_test.shape)
```
这段代码实现了以下操作:
1. 读取训练集和测试集数据,并合并成一个数据集。
2. 丢弃无用的特征(PassengerId、Ticket和Cabin)。
3. 填充缺失值(Embarked、Fare和Age)。
4. 进行特征工程,包括创建一个新的FamilySize特征、一个IsAlone特征和一个Title特征。
5. 合并低频率的Title特征值为Misc。
6. 将分类变量转换为数值变量。
7. 分离训练集和测试集,并构造特征和标签。
最后,程序输出处理后的结果,包括训练集、测试集的特征和标签的形状。这些数据集可以用于训练机器学习模型(例如决策树算法)。
阅读全文