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

调用scipy.curve_fit拟合变量关系时报object too deep for desired array错误

报错解决方法

核心报错原因

  1. scipy.optimize.curve_fit要求输入的自变量、因变量都为一维浮点数组,你当前传入的数组存在二维(形状为(n,1))的情况,触发object too deep for desired array报错。
  2. 你自定义的Quadratic_Relation、sigmoid、Exponential_Relation拟合函数返回的不是一维浮点数组,触发Result from function call is not a proper array of floats报错。
  3. 代码存在变量名大小写错误,X_Value未定义,后续运行也会触发报错。

具体解决步骤

  • 所有传入curve_fit的数组都用.ravel()方法转为一维,修改拟合调用代码:
ppot_Quad, pcov_Quad = curve_fit(Quadratic_Relation, X_value.values.ravel(), y_train.values.ravel())
ppot_sig, pcov_sig =  curve_fit(sigmoid, X_value.values.ravel(), y_train.values.ravel())
ppot_Exp, ppcov_Exp = curve_fit(Exponential_Relation, X_value.values.ravel(), y_train.values.ravel())
  • 检查自定义拟合函数的返回值,确保输出为一维数组,示例正确的函数写法:
# 二次关系函数示例
def Quadratic_Relation(x, a, b, c):
    return a * x**2 + b * x + c

# Sigmoid关系函数示例
def sigmoid(x, L ,x0, k, b):
    return L / (1 + np.exp(-k*(x-x0))) + b
  • 测试集输入适配不同函数的维度要求,同时修正变量名和线性回归调用错误:
# 普通拟合函数用一维数组
X_test_1d =  x_test[columns].values.ravel()
# 多项式/线性模型如果要求二维输入,单独做维度转换
X_test_2d = X_test_1d.reshape(-1,1)

# 修正变量名大小写错误
regr_Linear =  Polynomial_Relation(X_value)

accuracy_dict["Quadratic"] = sm.r2_score(Quadratic_Relation(X_test_1d,*ppot_Quad),y_test)
accuracy_dict["Sigmoid"] = sm.r2_score(sigmoid(X_test_1d,*ppot_sig),y_test)
accuracy_dict["Exponential"] =  sm.r2_score(Exponential_Relation(X_test_1d,*ppot_Exp),y_test)
accuracy_dict["Polynomial"] =  sm.r2_score(regr_poly.predict(X_test_2d),y_test)
# 修正线性回归预测调用错误
accuracy_dict["Linear"] =  sm.r2_score(regr_Linear.predict(X_test_2d),y_test)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 04:39:03