假设,我想找到那些最小化MAE或MSE的参数w
模型y(x,z)
:
y = (w_1 * x_1 + ... + w_n * x_n) / (w_1 * z_1 + ... + w_n * z_n)
我怎么能在python中做到这一点?
答案 0 :(得分:1)
您可以使用scipy.optimize.curve_fit
。如果您有n
变量x和n
变量z,则可以让自变量X
具有2n
行,列应该是每个变量的观察值。
通过这种方式,X
是行2n和列M的二维数组。我们想要预测的参数也是长度为n
的数组w。这样,OP的功能表示为:
y = w@x/w@z = w@X[:n, :]/w@X[n:, :]
其中@
是numpy
中的矩阵乘法。这是完整的代码:
def my_model(x, *args):
N, _ = x.shape
w = np.array(args)
# assuming x and z have same number of variables = N/2
y = w@x[:N//2, :] / (w@x[N//2:, :])
return y
popts, pcov = curve_fit(my_model, x, y)
其中popts
包含所有优化的w变量。