机器学习数据预处理详解:标准化、填充缺失值及编码离散特征


在机器学习建模过程中,数据预处理是至关重要的一步。本文将通过具体示例,详细解释数据预处理的关键步骤,包括标准化数值特征、填充缺失值以及编码离散特征。我们将使用一个简单的训练和测试数据集来说明这些步骤。

示例数据集

训练数据 (train_data)
IdFeature1Feature2Feature3Label
1105.0A100
2206.5B200
330NaNA300
测试数据 (test_data)
IdFeature1Feature2Feature3
4255.5B
5357.0NaN

步骤解析

1. 合并所有特征以进行预处理

首先,将训练和测试数据集的特征(不包括标签列Label)合并,以便对所有特征进行统一的预处理。

all_features = pd.concat((train_data.iloc[:, 1:-1], test_data.iloc[:, 1:]))

合并后的结果:

Feature1Feature2Feature3
105.0A
206.5B
30NaNA
255.5B
357.0NaN
2. 标准化数值特征

确定数值型特征的列,然后对这些特征进行标准化处理,使每个数值特征的均值为0,标准差为1。

numeric_features = all_features.dtypes[all_features.dtypes != 'object'].index
all_features[numeric_features] = all_features[numeric_features].apply(
    lambda x: (x - x.mean()) / x.std())

在这个例子中,Feature1Feature2 是数值型特征。首先计算它们的均值和标准差:

  • Feature1的均值 = (10 + 20 + 30 + 25 + 35) / 5 = 24
  • Feature1的标准差 ≈ 9.57
  • Feature2的均值 = (5.0 + 6.5 + 5.5 + 7.0) / 4 = 6.0
  • Feature2的标准差 ≈ 0.79

标准化后的结果:

Feature1Feature2Feature3
-1.46-1.27A
-0.420.63B
0.63NaNA
0.10-0.63B
1.151.27NaN
3. 填充缺失值为0

将数值型特征中的缺失值(NaN)填充为0。

all_features[numeric_features] = all_features[numeric_features].fillna(0)

填充缺失值后的结果:

Feature1Feature2Feature3
-1.46-1.27A
-0.420.63B
0.630.00A
0.10-0.63B
1.151.27NaN
4. 处理离散数值特征

将离散特征(分类特征)进行独热编码(one-hot encoding),包括缺失值(dummy_na=True)。

all_features = pd.get_dummies(all_features, dummy_na=True)

编码后的结果:

Feature1Feature2Feature3_AFeature3_BFeature3_nan
-1.46-1.27100
-0.420.63010
0.630.00100
0.10-0.63010
1.151.27001
5. 确保所有特征都是数值类型

确保所有特征的数据类型都是 float32

all_features = all_features.astype(np.float32)

最终结果是一个完全由数值型特征组成的DataFrame,并且所有特征都经过标准化和缺失值处理,准备好用于后续的模型训练和预测:

最终结果:

Feature1Feature2Feature3_AFeature3_BFeature3_nan
-1.46-1.271.00.00.0
-0.420.630.01.00.0
0.630.001.00.00.0
0.10-0.630.01.00.0
1.151.270.00.01.0

通过这些步骤,我们成功地对训练和测试数据集的特征进行了标准化、缺失值处理和独热编码,使其准备好用于后续的模型训练和预测。

提示:更多内容可以访问Clang’s Blog:https://www.clang.asia

  • 28
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值