假设我们有一个简单的数据集,该数据集用于预测房价。特征包括面积(平方米)、卧室数量和浴室数量。目标是房价(千美元)。
import pandas as pd import numpy as np # 原始数据 data = {Area: [70, 120, 85, None, 60], Bedrooms: [2, 3, None, 1, 1], Bathrooms: [1, 2, 1, 1, 1], Price: [300, 500, 350, 150, 200] } df = pd.DataFrame(data)
缺失值处理
理由:缺失值会导致模型不能进行训练或导致模型预测偏误。处理方式包括:删除记录、填充值、使用模型进行预测等。
对"Area"使用均值填充:
area_mean = df[Area].mean() df[Area].fillna(area_mean, inplace=True)对"Bedrooms"使用中位数填充:
bedrooms_median = df[Bedrooms].median() df[Bedrooms].fillna(bedrooms_median, inplace=True)数据标准化
理由:标准化能够使不同量纲或量级的数据统一到相同的尺度,便于模型的收敛和提高精度。
Z分数标准化"Area":
area_mean = df[Area].mean() area_std = df[Area].std() df[Area] = (df[Area] - area_mean) / area_stdZ分数标准化"Bedrooms":
bedrooms_mean = df[Bedrooms].mean() bedrooms_std = df[Bedrooms].std() df[Bedrooms] = (df[Bedrooms] - bedrooms_mean) / bedrooms_std数据归一化(可选)
理由:与标准化相比,归一化会将数据限制在一个小的范围内(通常是0-1之间),这在某些算法中可能是有用的。
最小-最大归一化"Area":
area_min = df[Area].min() area_max = df[Area].max() df[Area] = (df[Area] - area_min) / (area_max - area_min)最小-最大归一化"Bedrooms":
bedrooms_min = df[Bedrooms].min() bedrooms_max = df[Bedrooms].max() df[Bedrooms] = (df[Bedrooms] - bedrooms_min) / (bedrooms_max - bedrooms_min)总结与建议
1、缺失值处理:确定最适合您数据集的缺失值处理方式。
2、数据标准化和归一化:根据模型和数据分布选择适当的标准化或归一化方法。
预处理是一个迭代过程,可能需要多次尝试和调整。始终验证预处理步骤如何影响模型性能,并根据需要进行调整。不仅要处理训练数据,还要以相同的方式处理测试数据。