gpt4 book ai didi

python - 仅在选择的列上使用 sklearn StandardScaler

转载 作者:行者123 更新时间:2023-11-28 21:37:34 26 4
gpt4 key购买 nike

我有一个 numpy 数组 X,它有 3 列,如下所示:

array([[    3791,     2629,        0],
[ 1198760, 113989, 0],
[ 4120665, 0, 1],
...

前 2 列是连续值,最后一列是二进制 (0,1)。我只想将 StandardScaler 类应用于前 2 列。我目前正在通过以下方式执行此操作:
scaler = StandardScaler()
X_subset = scaler.fit_transform(X[:,[0,1]])
X_last_column = X[:, 2]
X_std = np.concatenate((X_subset, X_last_column[:, np.newaxis]), axis=1)

X_std 的输出是:
array([[-0.34141308, -0.18316715,  0.        ],
[-0.22171671, -0.17606473, 0. ],
[ 0.07096154, -0.18333483, 1. ],
...,

有没有办法一步完成这一切?我想将此作为管道的一部分,它将缩放前 2 列并将最后一个二进制列保持原样。

最佳答案

感谢您的回复。我最终使用一个类来选择这样的列:

class ItemSelector(BaseEstimator, TransformerMixin):

def __init__(self, columns):
self.columns = columns

def fit(self, x, y=None):
return self

def transform(self, data_array):
return data_array[:, self.columns]

然后我在我的管道中使用了 FeatureUnion,如下所示,使 StandardScaler 仅适用于连续变量:
FeatureUnion(
transformer_list=[
('continous', Pipeline([ # Scale the first 2 numeric columns
('selector', ItemSelector(columns=[0, 1])),
('scaler', StandardScaler())
])),
('categorical', Pipeline([ # Leave the last binary column as is
('selector', ItemSelector(columns=[2]))
]))
]
)

这对我来说效果很好。

关于python - 仅在选择的列上使用 sklearn StandardScaler,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49282889/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com