我知道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:操作数无法与形状(100,23)(25,)(100,23)一起广播
这是inverse_transform
中的广播错误吗?任何建议都将有所帮助。提前感谢!
3条答案
按热度按时间pbwdgjma1#
虽然你没有具体说明,但我假设你使用的是scikit learn的
StandardScaler
中的inverse_transform()
。你需要先拟合数据。yzckvree2#
这里的问题是,缩放器没有执行“逆”函数所需的原始数据信息。缩放器对象跟踪执行逆变换所需的信息。当使用拟合函数将缩放器拟合到数据集时()方法,定标器计算统计数据(例如StandardScaler的均值和方差或MinMaxScaler的最小值和最大值)并将它们存储在其内部状态中。
1dkrff033#
看起来你正在使用sklearn. preprocessing的pre-fitscaler对象。如果是真的,根据我的说法,你用于拟合的数据是(x,25)维,而你的数据形状是(x,23)维,这就是你遇到这个问题的原因。