python - python中`curvefit()`模块背后的理论
问题描述
考虑我有以下数据:
0.000000000000000000e+00 4.698409927534825670e-01
1.052631578947368363e+00 8.864688755521996200e+00
2.105263157894736725e+00 1.554529316011567630e+01
3.157894736842105310e+00 9.767558170900922931e+00
4.210526315789473450e+00 2.670221074763470881e+01
现在,我想用这些数据做一些统计分析。
%pylab inline
# Loads numpty
my_data = loadtxt("numbers.dat")
dataxaxis = my_data[:,0]
datayaxis = my_data[:,1]
我知道我将数据存储为变量,因此将第一列作为 x 轴的 xdata,将第二列作为 y 轴的 y 数据。
我正在学习curvefit()
类似于polyfit()
寻找最佳拟合线(LOBF)梯度和截距的函数。
我明白首先我必须定义直线存在的函数y = mx+c
。
这就是我感到困惑的地方。
根据讲师的说法,我需要将 xdata 作为参数,还要将梯度和截距定义为参数:
def straightline(dataxaxis, m, c):
"Returns values of y according to y = mx + c"
return m*dataxaxis + c
后来我可以这样调用该curvefit()
函数:
lineinfo = curve_fit(line, dataxaxis, datayaxis)
lineparams = lineinfo[0]
m = lineparams[0]
c = lineparams[1]
给出了相应的值。
但是,当我将该函数straightline
作为 中的第一个参数调用时curve_fit
,我没有传递任何有关的信息dataxaxis
或任何有关的信息m
,c
但它仍然计算梯度和截距以返回矩阵。
这怎么可能?
解决方案
推荐阅读
- hugo - Hugo 将似乎格式正确的日期显示为“1 Jan 0001”
- javascript - Angular Change Detection Promises - 混合应用
- html - HTML 表单格式(表单太宽)
- javascript - 如何将变量设为私有?
- c# - 覆盖并行类层次结构中的方法
- git - 如何为 git clone 指定出站端口
- javascript - 页面加载时无法加载音乐文件
- excel - Power BI 将小数转换为自定义分数
- javascript - 保持在顶部的导航栏
- r - ggplot2 声称 `inherit` 必须是 R6ClassGenerator