如何通过 scikit-learn 规范化一个特征?

数据挖掘 Python scikit-学习 正常化 特征缩放
2022-03-09 08:24:16

想要在特定功能上应用特定的缩放器,比如StandardScaler,同时保持其他功能不变。

数据集格式类似于:[ [1, 0.2, 1000], [2, 0.1, 2400], [3, 0.9, 7620] ]

我只需要转换一列,在这个例子中是第三列。

我不想使用pandas

2个回答

如前所述,最简单的方法是StandardScaler仅将 应用于需要缩放的特征子集,然后将结果与其余特征连接起来。

或者,scikit-learn 还提供(仍然是实验性的,即可能会更改)ColumnTransformerAPI。它的工作原理类似于pipeline

from sklearn.compose import ColumnTransformer 
from sklearn.preprocessing import  StandarScaler 
column_trans = ColumnTransformer(
    [('scaler', StandardScaler(),2],
    remainder='passthrough') 
column_trans.fit_transform(X)

元组的第三个条目(此处为 : 2)可以是单个或列索引列表(或使用 pandas DataFrame 时的列名)。

只需将一列传递给缩放器,然后更改数据,例如:

x[i,:] = scaler.transform(x[i,:])

一旦安装了缩放器。