我最近遇到了一个问题。我的数据如下所示:
| 数值1|数值2|目标值|
| - -|- -|- -|
| 小行星1345|小行星4590|二点四五|
| 小行星1278|小行星3567|二点四八分|
| 小行星1378|小行星4890|二点四六分|
| 小行星1589|小行星4987|二点五十|
| 一个人。|一个人。|一个人。|
数据持续了几千行。
我需要找到两个值(A和B),当数据输入时,这两个值可以使误差最小化,如下所示:Value 1 * A + Value 2 * B = Target
我已经研究过scipy. optimiz.curve_fit,但是我似乎不明白它是如何工作的,因为函数在数据的每次迭代中都会改变(因为Value 1和Value 2在每行中并不相同)。
任何帮助都是非常感谢的,提前感谢!
2条答案
按热度按时间8ehkhllq1#
函数
curve_fit
有3个参数:f
,它接受一个 input 参数,我们将其命名为X
,参数为params
(数量不限)X_data
Y_data
这个函数的重点是给予你最好的
params
输入到f(X_data, params)
得到Y_data
。直观上,函数
f
的形式X
是一个简单的一维数组,但实际上它可以有你想要的形式。这里你输入的是一个由两个一维数组组成的元组(或者一个二维数组,如果你想这样实现它的话)。下面是一个代码示例:
7kjnsjlb2#
不幸的是,您没有提供任何测试数据,因此我提出了自己的测试数据:
df.head()
看起来像这样:您的问题的答案如下:
我更喜欢
scipy.optimize.minimize()
而不是curve_fit
,因为你可以自己定义错误函数。文档可以在here中找到。你需要:fun
,返回给定参数集x
的误差(此处为fmin
和RMSE)x0
(这里是[1,1]
),如果你的猜测完全错误,你可能找不到解决方案,或者(对于更复杂的问题)只是局部的一个fun
的附加自变量args
这里的数据df
对固定参数也有帮助options={"disp":True}
用于打印附加信息res
中的详细信息外,还可以找到参数对于这种情况,结果为:
类似于生成数据时给定的参数。