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

Python实现后向消除算法时出现'type float has no len()'报错如何解决

问题根因

调用backwardElimination函数时参数顺序传错:
函数定义的参数顺序为def backwardElimination(x, y),第一个入参是自变量矩阵,第二个入参是因变量向量。但实际调用时写为X_Modeled = backwardElimination(X_opt, SL),第二个参数传入了值为0.005的浮点数SL,而非因变量y。
statsmodels的OLS构造时会对因变量取长度计算权重,传入浮点数自然触发object of type 'float' has no len()报错。

修复方案

修改函数调用的参数即可:

X_Modeled = backwardElimination(X_opt, y)
可选优化项
  • 函数内部直接引用全局变量SL易引发异常,建议调整为函数参数传入,修改函数定义为:
def backwardElimination(x, y, sl=0.005):

调用时传入对应参数即可:

X_Modeled = backwardElimination(X_opt, y, SL)
  • 原代码中temp = np.zeros((len(x[0]),len(x[1]))).astype(int)的初始化逻辑存在维度隐患,样本数小于特征数时会触发错误,建议修改为:
temp = np.zeros(x.shape).astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 12:45:00