在python中优化多变量方程

时间:2017-02-21 17:17:47

标签: python scipy least-squares

我有一个形式的等式:

z = a x + b y + c

其中x,y,z是变量,a,b,c是常数。

我想找到a,b和c的最佳值。在python中执行此操作的最佳方法是什么? WITH "id" as pointToDelete MATCH (P:Point {id: pointToDelete}) OPTIONAL MATCH (Prev:Point)-[:NEXT]->(P) OPTIONAL MATCH (P)-[:NEXT]->(Next:Point) FOREACH (x in CASE WHEN Prev IS NOT NULL THEN [1] ELSE [] END | MERGE (Prev)-[:NEXT]->(Next) ) DETACH DELETE P 仅适用于两个变量,而不是三个。

1 个答案:

答案 0 :(得分: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 ])