在 fit_transform 之后缩放新值

scalling new values after fit_transform

我有以下特点:

 array([[290.,  50.],
       [290.,  46.],
       [285.,  44.],
       ...,
       [295.,  46.],
       [299.,  46.],
       [  0.,   0.]])

转换后:

from sklearn.preprocessing import StandardScaler
self.scaler = StandardScaler()  
self.scaled_features = self.scaler.fit_transform(self.features)

我有 scaled_features:

array([[ 0.27489919,  0.71822864],
       [ 0.27489919,  0.26499222],
       [ 0.18021955,  0.03837402],
       ...,
       [ 0.36957884,  0.26499222],
       [ 0.44532255,  0.26499222],
       [-5.2165202 , -4.94722653]])

现在我希望从 self.scaler 中获取样本,所以我将我的新特征示例发送到 t:

t = [299.0, 46.0] 
new_data = np.array(t).reshape(-1, 1)
new_data_scaled = self.scaler.transform(t)

我明白了

non-broadcastable output operand with shape (2,1) doesn't match the broadcast shape (2,2)

我做错了什么?为什么 new_data 没有被调用?

有两件事,首先是将列表 t 放入 transform 而不是 new_data。其次,new_date 具有形状 (2,1) 但应该具有形状 (1,2)。所以如果你把它改成

t = [299.0, 46.0] 
new_data = np.array(t).reshape(1, -1)
new_data_scaled = self.scaler.transform(new_data)

你应该得到缩放数据。