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

如何求自定义平方误差类函数的全局最小值并构造scipy优化函数

方法1:基于Scipy优化器的目标函数构造

你可以直接将两个输入列表转换为numpy数组,按如下方式编写目标函数:

import numpy as np
from scipy.optimize import minimize

# 替换为你的实际数据
d = np.array([0.0322, 0.245, 0.85])
d_prime = np.array([56, 200, 340])

def objective(s):
    # s是待求解的参数,直接按公式计算平方误差和返回即可
    return np.sum((d - s * d_prime) ** 2)

# 调用优化器求解,初值随便设个非0值即可,比如1
res = minimize(objective, x0=1.0)
optimal_s = res.x[0]
print(f"优化得到的最优s:{optimal_s}")

方法2:更优的精确解析解法(优先推荐)

你给出的损失函数属于无截距项的一元线性回归损失,不需要使用迭代式的数值优化器,可以直接推导得到闭式精确解,计算速度更快、结果无收敛误差:
对损失函数求导并令导数等于0,推导可得最优s的计算公式:
s = sum(d_i * d'_i) / sum( (d'_i)^2 )
对应代码仅需一行:

optimal_s = np.sum(d * d_prime) / np.sum(d_prime ** 2)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:51:02