Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python scipy:如何在有约束的情况下最小化最小剩余平方和?_Python_Scipy_Scipy Optimize Minimize - Fatal编程技术网

Python scipy:如何在有约束的情况下最小化最小剩余平方和?

Python scipy:如何在有约束的情况下最小化最小剩余平方和?,python,scipy,scipy-optimize-minimize,Python,Scipy,Scipy Optimize Minimize,当使用普通最小二乘线性回归方法拟合x和y时,它将得到一个函数y=a*x+b,但在我的情况下,我需要使b像注释中已经提到的sascha一样,不需要y函数,因为(y-f(x,a,b))**2总是正的。通过使用,您可以这样做: 从scipy.optimize导入最小化 将numpy作为np导入 #x=np.数组([139,…]) #y=np.数组([151,…]) #定义模型 def(x,a,b):返回a*x+b #最小化的目标函数(最小二乘回归) def obj(x,y,a,b):返回np.sum(

当使用普通最小二乘线性回归方法拟合
x
y
时,它将得到一个函数
y=a*x+b
,但在我的情况下,我需要使
b像注释中已经提到的sascha一样,不需要
y
函数,因为(y-f(x,a,b))**2
总是正的。通过使用,您可以这样做:

从scipy.optimize导入最小化
将numpy作为np导入
#x=np.数组([139,…])
#y=np.数组([151,…])
#定义模型
def(x,a,b):返回a*x+b
#最小化的目标函数(最小二乘回归)
def obj(x,y,a,b):返回np.sum((y-f(x,a,b))**2)

#定义界限-inftyabs
函数,因为
(y-f(x,a,b))**2始终是正的。通过使用,您可以这样做:

从scipy.optimize导入最小化
将numpy作为np导入
#x=np.数组([139,…])
#y=np.数组([151,…])
#定义模型
def(x,a,b):返回a*x+b
#最小化的目标函数(最小二乘回归)
def obj(x,y,a,b):返回np.sum((y-f(x,a,b))**2)

#定义界限-inftyabs
函数在您的代码中是多余的,您不希望在基于梯度的解算器中使用它)有没有一个示例?有大量高质量的文档@。还要注意常规的
scipy.optimize.minimize
用法,因为您的函数还没有准备好使用它的API(您需要在1d向量中对所有变量进行sqash;希望文档能够清楚地说明这一点)。然后这是一个绑定约束(变量绑定)。scipy.minimize中的某些解算器(例如L-BFGS-B)支持此功能。就用它吧!(备注:非平滑的
abs
函数在您的代码中是多余的,您不希望在基于梯度的解算器中使用它)有没有一个示例?有大量高质量的文档@。还要注意常规的
scipy.optimize.minimize
用法,因为您的函数还没有准备好使用它的API(您需要在1d向量中对所有变量进行sqash;希望文档能够清楚地说明这一点)。
x = [139, 162, 147, 110, 145, 144, 131, 132, 135, 85, 77, 90, 103, 163, 102, 31, 71, 95, 143, 94, 81, 82, 79, 64, 102, 122, 130, 117, 109, 46, 26, 26, 36, 105, 135, 14, 63, 93, 75, 128, 86, 107, 137, 49, 99, 96, 112, 124, 129, 68, 111, 128, 11, 13, 63, 104, 127, 98, 95, 85, 87, 98, 76, 119, 69, 103, 86, 87, 91, 90, 100, 102, 105, 116, 127, 127, 82, 126, 99, 116, 61, 64, 83, 85, 83, 83, 82, 97, 105, 116, 130, 91, 120, 102, 124, 66, 79, 83, 82, 80, 80, 91, 91, 122, 99, 126, 49, 92, 76, 80, 97, 107, 109, 117, 62, 120, 111, 75, 130, 75, 105, 118, 115, 97, 62, 123, 98, 57, 109, 104, 51, 102, 60, 65, 113, 117, 18, 83, 88, 93, 31, 57, 39, 25, 37, 26, 27, 36, 109, 113, 68, 100, 110, 108, 109, 109, 96, 61, 55, 78, 97, 115, 109, 105, 107, 50, 98, 99, 89, 68, 107, 112, 119, 126, 117, 112, 104, 72, 38, 35, 30, 82, 101, 92, 98, 103, 97, 85, 37, 33, 73, 56, 49, 100, 63, 24]

y = [151, 170, 53, 182, 188, 181, 137, 186, 149, 76, 149, 156, 168, 147, 102, 107, 132, 150, 148, 57, 109, 110, 87, 151, 163, 152, 109, 131, 85, 63, 73, 102, 129, 155, 49, 89, 151, 157, 126, 136, 72, 150, 78, 142, 45, 171, 127, 132, 67, 139, 131, 73, 77, 34, 162, 131, 159, 61, 132, 100, 116, 106, 152, 164, 127, 104, 125, 100, 111, 122, 140, 139, 139, 160, 159, 91, 159, 150, 136, 122, 22, 100, 109, 108, 116, 115, 115, 147, 169, 167, 51, 143, 100, 145, 110, 89, 103, 98, 99, 102, 140, 153, 156, 88, 178, 168, 89, 105, 27, 152, 154, 60, 179, 129, 122, 146, 44, 157, 91, 142, 118, 155, 138, 72, 140, 146, 59, 168, 138, 74, 108, 121, 28, 141, 159, 172, 69, 112, 126, 103, 127, 95, 86, 79, 65, 43, 66, 71, 155, 139, 132, 139, 139, 161, 141, 73, 122, 97, 126, 77, 156, 141, 161, 169, 145, 116, 148, 141, 83, 138, 94, 120, 137, 149, 164, 139, 116, 94, 92, 79, 79, 134, 129, 110, 130, 138, 156, 129, 74, 128, 104, 50, 127, 107, 48, 58]

# Define the Model
f = lambda x, a, b: a * x + b

# The objective Function to minimize (least-squares regression)
obj = lambda x, y, a, b: np.sum(np.abs(y - f(x, a, b))**2)