返回
用机器学习预测泰坦尼克号乘客的生存率: 数据预处理和特征工程(第二部分)**
人工智能
2023-10-21 21:11:54
数据预处理: 理解缺失值
在数据预处理中, 缺失值是不可避免的挑战. 缺失值是指数据集中缺失或未知的值, 可能由于各种原因造成. 了解缺失值并正确处理它们对于机器学习建模至关重要.
泰坦尼克号数据集中的缺失值
为了说明缺失值处理, 我们将使用泰坦尼克号数据集. 该数据集包含三个特征: "Age" (数值型), "Sex" 和 "Embarked" (字符型), 以及一个标签 "Survived" (字符型).
import pandas as pd
# 加载泰坦尼克号数据集
df = pd.read_csv('titanic.csv')
# 检查缺失值
df.isnull().sum()
输出:
Age 177
Cabin 891
Embarked 2
Name 0
Parch 0
PassengerId 0
Pclass 0
Sex 0
SibSp 0
Survived 0
Ticket 0
Fare 0
如上所示, "Age" 和 "Embarked" 特征存在缺失值, 分别为 177 个和 2 个.
缺失值处理方法
处理缺失值有几种方法, 取决于缺失值的模式和潜在原因. 常见方法包括:
- 删除缺失值: 如果缺失值的数量很少, 并且它们不太可能对模型产生显著影响, 则可以简单地删除它们.
- 均值/中值插补: 对于数值型特征, 缺失值可以用该特征的均值或中值来代替.
- 众数插补: 对于字符型特征, 缺失值可以用该特征中出现次数最多的值来代替.
- K-最近邻插补: 缺失值可以用数据集中与该缺失值最接近的 K 个观测值的加权平均值来代替.
- 模型预测: 缺失值可以用根据其他特征构建的模型预测值来代替.
泰坦尼克号数据集中缺失值的处理
对于泰坦尼克号数据集, 我们将使用均值插补来处理 "Age" 特征的缺失值, 并使用众数插补来处理 "Embarked" 特征的缺失值.
# 用均值插补 "Age" 缺失值
df['Age'].fillna(df['Age'].mean(), inplace=True)
# 用众数插补 "Embarked" 缺失值
df['Embarked'].fillna(df['Embarked'].mode()[0], inplace=True)
结论
缺失值处理是数据预处理和特征工程中必不可少的步骤. 通过理解缺失值的模式和潜在原因, 并采用适当的处理方法, 我们可以确保数据更适合机器学习建模, 从而提高模型的预测准确性.