You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Sklearn PLSRegression X矩阵含二进制列时predict预测失败问题

问题原因

这个报错和二进制变量没有任何关联,完全是调用PLSRegression的fit()方法时参数顺序写反导致的调用错误。

sklearn所有有监督学习模型的fit()方法的参数顺序统一为fit(特征矩阵X, 标签矩阵y),你的代码中写的是pls_reg.fit(y_test, X_test),相当于把原本的标签矩阵y_test当成了输入特征喂给模型,把原本的特征矩阵X_test当成了要预测的目标标签,整个建模逻辑完全颠倒。

报错触发逻辑

  • 示例1中你fit时传入的“输入特征”是形状为(10,3)的y_test,所以模型默认输入特征维度为3,内部存储的均值_x_mean、标准差_x_std都是长度为3的数组。你predict时传入的是加了二进制列的X_test,形状为(10,4),归一化计算时4列的矩阵无法和长度为3的均值做广播运算,直接触发维度不匹配报错。
  • 示例2中你predict时传入的是X_test的前3列,刚好和模型“记住”的输入维度3匹配,所以没有触发维度错误,但这个拟合结果本身是完全错误的,本质是在用原本的标签预测原本的特征,没有任何实际意义。

解决方法

把fit方法的参数顺序调整为正确的“先特征后标签”即可,包含二进制列的特征矩阵也可以正常运行:

pls_reg = PLSRegression(n_components = 2)
# 正确参数顺序:fit(特征X, 标签y)
pls_reg.fit(X_test, y_test)
pls_reg.predict(X_test)

补充说明

PLS回归本身没有限制输入特征不能包含二进制变量,你碰到的问题属于API调用失误,和算法本身、sklearn的实现都没有关系。

内容的提问来源于stack exchange,提问作者Glen Moutrie

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 09:57:03