规范化数据集特征的子集

原文标题Normalise subset of a dataset features

我的数据框有 5 种不同旅行模式的 10 个特征。前 5 个特征(sp_min - sp_median)是speed特定旅行模式的特征(例如bikecar),后 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

原文链接:https://stackoverflow.com//questions/71470792/normalise-subset-of-a-dataset-features

回复

我来回复
  • Philip Ciunkiewicz的头像
    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年前 0条评论
  • Muhammad Hassan的头像
    Muhammad Hassan 评论

    您可以使用:

    from sklearn.preprocessing import Normalizer
    cols = df.columns[5:]
    normalizer = Normalizer().fit(df[cols])
    df[cols] = normalizer.transform(df[cols])
    
    2年前 0条评论