规范化数据集特征的子集
machine-learning 398
原文标题 :Normalise subset of a dataset features
我的数据框有 5 种不同旅行模式的 10 个特征。前 5 个特征(sp_min - sp_median
)是speed
特定旅行模式的特征(例如bike
或car
),后 5 个是bearing
特征。
我不想标准化前 5 个功能,因为这与我预测的特定旅行模式有关(所以在测试时不知道)。但是,我想对最后 5 个进行归一化,因为无论旅行模式如何,方位范围都是从0 - 360
。
如何规范化我的数据框功能的这些子集?
df.head()
sp_min sp_max sp_mean sp_std sp_median br_min br_max br_mean br_std br_median
0 0.54 17.63 4.8409 5.448061 1.675 0.0 333.0 32.018 64.692071 11.0
1 0.54 4.78 1.8242 1.049490 1.610 0.0 280.0 26.330 43.658002 13.0
2 0.51 2.80 1.1624 0.526194 1.005 0.0 334.0 53.700 83.268181 20.0
3 0.51 15.57 5.4405 5.055061 2.965 0.0 310.0 23.272 50.490677 7.0
4 0.00 0.93 0.0345 0.155604 0.000 0.0 309.0 4.900 32.809297 0.0
回复
我来回复-
Philip Ciunkiewicz 评论
如果您的列的名称一致,则可以按如下方式全部选择它们:
target = [c for c in df if c.startswith('br_')
然后,您可以使用
numpy
和底层 DataFrame 数组来规范化您的列:x = df[target].values x_norm = (x - x.min(0)) / x.ptp(0)
然后,您可以根据需要将这些值分配给 DataFrame 中的现有列或新列。
2年前 -
Muhammad Hassan 评论
您可以使用:
from sklearn.preprocessing import Normalizer cols = df.columns[5:] normalizer = Normalizer().fit(df[cols]) df[cols] = normalizer.transform(df[cols])
2年前