python - 如何在 MinMaxScaler 中对矩阵中的列使用 inverse_transform

标签 python scikit-learn

我根据它的列缩放了一个矩阵,如下所示:

scaler = MinMaxScaler(feature_range=(-1, 1))
data = np.array([[-1, 2], [-0.5, 6], [0, 10], [1, 18]])
scaler = scaler.fit(data)
data_scaled = scaler.transform(data)

data_scaled 给了我以下内容:

array([[-1. , -1. ],
       [-0.5, -0.5],
       [ 0. ,  0. ],
       [ 1. ,  1. ]])

这是期望的输出。但是,我试图反转该矩阵第一列的缩放比例,所以我尝试了以下操作(错误显示在每行代码下方):

scaler.inverse_transform(data_scaled[:,1].reshape(1,-1))
Traceback (most recent call last):
  File "c:\anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2862, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-38-6316f51586e7>", line 1, in <module>
    scaler.inverse_transform(data_scaled[:,1].reshape(1,-1))
  File "c:\anaconda3\lib\site-packages\sklearn\preprocessing\data.py", line 385, in inverse_transform
    X -= self.min_
ValueError: operands could not be broadcast together with shapes (1,4) (2,) (1,4) 

另外,我试过:

scaler.inverse_transform(data_scaled[:,1].reshape(-1,1))
Traceback (most recent call last):
  File "c:\anaconda3\lib\site-packages\IPython\core\interactiveshell.py", line 2862, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-39-397382ddb3fd>", line 1, in <module>
    scaler.inverse_transform(data_scaled[:,1].reshape(-1,1))
  File "c:\anaconda3\lib\site-packages\sklearn\preprocessing\data.py", line 385, in inverse_transform
    X -= self.min_
ValueError: non-broadcastable output operand with shape (4,1) doesn't match the broadcast shape (4,2)

那么,如何重新缩放该矩阵的第一列?

最佳答案

scaler 记住您向它传递了一个包含两列的 2D 输入,并假设传递给它的所有后续数据都将具有相同数量的特征/列。

如果它只是您想要的第一列,您仍然需要向inverse_transform 传递一个具有相同列数 的输入。从结果中取出第一列并丢弃其余列。

scaler.inverse_transform(data_scaled)[:, [0]]

array([[-1. ],
       [-0.5],
       [ 0. ],
       [ 1. ]])

这有点浪费,但也是 sklearn API 的限制。

关于python - 如何在 MinMaxScaler 中对矩阵中的列使用 inverse_transform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49330195/

相关文章:

python - 如何在 Scikit 中计算多类分类的混淆矩阵?

python - Precision_score和accuracy_score显示值错误

python - 从字符串中提取带有空格的整数

python - 这段 Python 代码块的作用是什么?

python - django-filter 乱用空字段

python - 值错误: Found input variables with inconsistent numbers of samples: [4, 103]

python - 有没有一种简单的方法来列出所有采用稀疏训练输入的 sklearn 实现?

python - Django - get_object_or_404() 需要至少 1 个参数(给定 0)

python - 哪个是执行命令的最佳 python 模块

python - 计算 SGDClassifier 数据损失函数值的方法?