【发布时间】:2022-01-03 01:53:56
【问题描述】:
对于具有不同数值列的数据集,它们通常具有不同的范围和分布。例如,我使用了 Iris 数据集。显示了它的 4 列的分布:
我的问题是:
具有相似分布的列是否应该使用相同的缩放器?在这种情况下,花瓣长度和花瓣宽度具有相似的分布。此外,萼片长度和萼片宽度具有(大约)相似的分布。因此,我对列使用了 Min-Max 缩放器 - 花瓣长度和花瓣宽度,而标准缩放器用于萼片长度和萼片。
这组操作的示例代码是:
# According to distribution visualizations from above, appropriate scalers are used-
std_scaler = StandardScaler()
iris_data[['sepallength', 'sepalwidth']] = std_scaler.fit_transform(iris_data[['sepallength', 'sepalwidth']])
# 'StandardScaler' subtracts the mean from each feature/attribute and then
# scales to unit variance
# Sanity checks-
iris_data['sepallength'].min(), iris_data['sepallength'].max()
# (-1.870024133847019, 2.4920192021244283)
iris_data['sepalwidth'].min(), iris_data['sepalwidth'].max()
# (-2.438987252491841, 3.1146839106774356)
mm_scaler = MinMaxScaler()
iris_data[['petallength', 'petalwidth']] = mm_scaler.fit_transform(iris_data[['petallength', 'petalwidth']])
# Sanity checks-
iris_data['petallength'].min(), iris_data['petallength'].max()
# (0.0, 1.0)
iris_data['petalwidth'].min(), iris_data['petalwidth'].max()
# (0.0, 1.0)
由于标准缩放器,萼片长度和萼片宽度的范围不同。而花瓣长度和花瓣宽度的范围是相同的。这是一个问题吗,因为不同的列在不同的范围内,这可能会影响使用它们进行训练的 ML 模型?
是否有一套黄金规则用于缩放/处理给定数据集中的不同数字列/属性?
【问题讨论】:
标签: python-3.x pandas scikit-learn