2017-02-21 57 views
0

一個多變量方程我具有以下形式的公式:優化在python

Z =一個X + B Y + C

其中x,y,z是變量並且a,b ,c是常數。

我想找到的,b和c的最佳值。在python中做這件事最好的方法是什麼? optimize.curve_fit只適用於兩個變量,而不是三個。

+1

是變量實​​數?因爲在這種情況下,根據'a'和'b'的歌詞,'x'和'y'永遠是正無限或負無窮...... –

+2

什麼定義了這個應用程序的「最優」? – Prune

+0

是的,這是一個迴歸問題。 'x','y'和'z'是已知的數據,所以我試圖最小化已知'z'和'ax + by + c'之間的差異 – 218

回答

2

你在做迴歸嗎?如果是這樣,optimize.curve_fit作品兩個以上的變量,你只需要通過你的變量列表:

def line(x, a, b, c): 
    return a * x[0] + b * x[1] + c 

from scipy.optimize import curve_fit 
import numpy as np 

x = np.random.uniform(0., 100., 100) 
y = np.random.uniform(0., 200., 100) 
z = 3. * x + 2. * y + np.random.normal(0., 10., 100) 

popt, pcov = curve_fit(line, [x, y], z) 
print(popt) 

結果:

array([ 2.99156418, 2.00992449, -0.2434515 ])