ValueError: operands could not be broadcast together with shapes - inverse_transform- Python
ValueError: operands could not be broadcast together with shapes - inverse_transform- Python
我知道 ValueError
问题已经被问了很多 times。我仍在努力寻找答案,因为我在代码中使用 inverse_transform
。
假设我有一个数组 a
a.shape
> (100,20)
和另一个数组b
b.shape
> (100,3)
当我做了 np.concatenate
、
hat = np.concatenate((a, b), axis=1)
现在 hat
的形状是
hat.shape
(100,23)
在此之后,我尝试这样做,
inversed_hat = scaler.inverse_transform(hat)
执行此操作时出现错误:
ValueError: operands could not be broadcast together with shapes (100,23) (25,) (100,23)
这是inverse_transform
中的广播错误吗?任何建议都会有所帮助。提前致谢!
虽然您没有指定,但我假设您使用的是来自 scikit learn 的 StandardScaler
的 inverse_transform()
。你需要先拟合数据。
import numpy as np
from sklearn.preprocessing import MinMaxScaler
In [1]: arr_a = np.random.randn(5*3).reshape((5, 3))
In [2]: arr_b = np.random.randn(5*2).reshape((5, 2))
In [3]: arr = np.concatenate((arr_a, arr_b), axis=1)
In [4]: scaler = MinMaxScaler(feature_range=(0, 1)).fit(arr)
In [5]: scaler.inverse_transform(arr)
Out[5]:
array([[ 0.19981115, 0.34855509, -1.02999482, -1.61848816, -0.26005923],
[-0.81813499, 0.09873672, 1.53824716, -0.61643731, -0.70210801],
[-0.45077786, 0.31584348, 0.98219019, -1.51364126, 0.69791054],
[ 0.43664741, -0.16763207, -0.26148908, -2.13395823, 0.48079204],
[-0.37367434, -0.16067958, -3.20451107, -0.76465428, 1.09761543]])
In [6]: new_arr = scaler.inverse_transform(arr)
In [7]: new_arr.shape == arr.shape
Out[7]: True
您似乎正在使用 sklearn.preprocessing 的预拟合 scaler 对象。
如果这是真的,根据我的说法,你用于拟合的数据是 (x,25) 维度,而你的数据形状是 (x,23) 维度,这就是你遇到这个问题的原因。
我知道 ValueError
问题已经被问了很多 times。我仍在努力寻找答案,因为我在代码中使用 inverse_transform
。
假设我有一个数组 a
a.shape
> (100,20)
和另一个数组b
b.shape
> (100,3)
当我做了 np.concatenate
、
hat = np.concatenate((a, b), axis=1)
现在 hat
的形状是
hat.shape
(100,23)
在此之后,我尝试这样做,
inversed_hat = scaler.inverse_transform(hat)
执行此操作时出现错误:
ValueError: operands could not be broadcast together with shapes (100,23) (25,) (100,23)
这是inverse_transform
中的广播错误吗?任何建议都会有所帮助。提前致谢!
虽然您没有指定,但我假设您使用的是来自 scikit learn 的 的 StandardScaler
inverse_transform()
。你需要先拟合数据。
import numpy as np
from sklearn.preprocessing import MinMaxScaler
In [1]: arr_a = np.random.randn(5*3).reshape((5, 3))
In [2]: arr_b = np.random.randn(5*2).reshape((5, 2))
In [3]: arr = np.concatenate((arr_a, arr_b), axis=1)
In [4]: scaler = MinMaxScaler(feature_range=(0, 1)).fit(arr)
In [5]: scaler.inverse_transform(arr)
Out[5]:
array([[ 0.19981115, 0.34855509, -1.02999482, -1.61848816, -0.26005923],
[-0.81813499, 0.09873672, 1.53824716, -0.61643731, -0.70210801],
[-0.45077786, 0.31584348, 0.98219019, -1.51364126, 0.69791054],
[ 0.43664741, -0.16763207, -0.26148908, -2.13395823, 0.48079204],
[-0.37367434, -0.16067958, -3.20451107, -0.76465428, 1.09761543]])
In [6]: new_arr = scaler.inverse_transform(arr)
In [7]: new_arr.shape == arr.shape
Out[7]: True
您似乎正在使用 sklearn.preprocessing 的预拟合 scaler 对象。 如果这是真的,根据我的说法,你用于拟合的数据是 (x,25) 维度,而你的数据形状是 (x,23) 维度,这就是你遇到这个问题的原因。