基于最小二乘法拟合函数

A = np.vander(x, 2) #生成矩阵(数据,输出列数)
C = np.diag(yerr * yerr)
ATA = np.dot(A.T, A / (yerr ** 2)[:, None]) #获取乘积
cov = np.linalg.inv(ATA)
w = np.linalg.solve(ATA, np.dot(A.T, y / yerr ** 2))

np.diag(array) 中,array是一个1维数组时,结果形成一个以一维数组为对角线元素的矩阵,array是一个二维矩阵时,结果输出矩阵的对角线元素。
np.linalg.inv():矩阵求逆
numpy.linalg.solve(a, b)以矩阵形式解一个线性矩阵方程,或线性标量方程组。a为系数矩阵,b为纵坐标或参数值
其中Y为Y的列矩阵

A为x的二维矩阵(结构解释在之后)

C为方差的对角矩阵

设[m b]T =X
则 AX=Y,即 mx+b=y
ATC-1AX=ATC-1Y
所以 X=[ATC-1A]-1 ATC-1Y
代码中的ATA即ATC-1A
详情参考:https://arxiv.org/abs/1008.4686

基于pyplot拟合函数

def fund(x,a,b):b=-bi=np.log10(x+a)n=b*ireturn n
x=[]
x = np.array(x)
y = []
#使y变为数组格式
y = np.array(y)
#求lgy
#y=np.log10(y)
#y的误差
yerr =[]
yerr = np.array(yerr)
#求lgyerr
#yerr=np.log10(yerr)
#拟合函数,其中popt是参数结果集,pcov是方差集,curve_fit参数中,found是目标函数格式,sigma是y的误差值
popt, pcov = curve_fit(fund, x, y,sigma=yerr)
#y2为求出拟合函数预测的y值,方便画图对比评估拟合效果
y2 = [fund(i,popt[0],popt[1]) for i in x]
plt.axes(yscale = "log")
plt.axes(xscale = "log")
plt.loglog(x, y1,"k", marker='.')
plt.loglog(x, y3,"g", 'r--')
plt.show()
print(popt)
print(pcov)

基于神经网络拟合函数

缺点:无法求出具体参数值

x=
x = np.array(x)
y =
y = np.log10(np.array(y))
X = np.reshape(x, (25, 1))
Y = np.reshape(y, (25, 1))
with tf.name_scope('Input'):xin = tf.placeholder('float', shape=[None, 1])yin = tf.placeholder('float', shape=[None, 1])
with tf.name_scope('Layer'):W1 = tf.Variable(tf.random_normal([1, 4], mean=1, stddev=0.2), name='w1')b1 = tf.Variable(tf.constant(0.1, shape=[4], dtype=tf.float32), name='b1')out1 = tf.nn.sigmoid(tf.add(tf.matmul(xin, W1), b1))
with tf.name_scope('Output'):W2 = tf.Variable(tf.random_normal([4, 1], mean=1, stddev=0.2), name='w2')b2 = tf.Variable(tf.constant(0.1, shape=[1], dtype=tf.float32), name='b2')out2 = tf.add(tf.matmul(out1, W2), b2)
with tf.name_scope('Evaluate'):Loss = tf.reduce_mean(tf.square(out2 - yin))trainstep = tf.train.GradientDescentOptimizer(0.1).minimize(Loss)
# %% Train
with tf.Session() as sess:step = 0sess.run(tf.global_variables_initializer())while step < 5000:Tstep = sess.run(trainstep, feed_dict={xin: X, yin: Y})if step % 3 == 0:loss = sess.run(Loss, feed_dict={xin: X, yin: Y})print('Train step: ', Tstep)print('Loss: ', loss)step += 1# print(sess.run(W1))# print(sess.run(b1))# print(sess.run(W2))# print(sess.run(b2))# TestY_ = sess.run(out2, feed_dict={X_in: X})# print(sess.run(feed_dict={X_in: X}))
plt.plot(X, Y, X, Y_)
plt.show()

拟合线性函数的几种方法相关推荐

  1. 图像处理中拟合直线的几种方法

    1.最小二乘拟合 最简单,但是受离群点的影响比较大,鲁棒性不强. 2.梯度下降法 3.高斯牛顿.列-马算法

  2. Gps高程拟合matlab代码,几种GPS高程拟合方法分析与比较.doc

    几种GPS高程拟合方法分析与比较 几种GPS高程拟合方法分析与比较 摘 要:文章论述了几种常用的GPS高程拟合的方法,并在MATLAB中编制了相应的程序,建立了相应的GPS高程拟合模型,并通过实例数据 ...

  3. matlab图像增强分段线性函数_图像增强、锐化,利用 PythonOpenCV 来实现 4 种方法!...

    图像增强目的使得模糊图片变得更加清晰.图片模糊的原因是因为像素灰度差值变化不大,图片各区域产生视觉效果似乎都是一样的, 没有较为突出的地方,看起来不清晰的感觉 解决这个问题的最直接简单办法,放大像素灰 ...

  4. python读取二维数组的行列数_Python获取二维数组的行列数的2种方法

    Python获取二维数组的行列数的2种方法 这篇文章主要介绍了Python获取二维数组的行列数的2种方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考 ...

  5. 时间序列平稳化的 8 种方法比较及Matlab实现

    时间序列平稳化的 8 种方法比较及Matlab实现 文章目录 时间序列平稳化的 8 种方法比较及Matlab实现 平稳化方法 趋势项处理 趋势拟合法 实验报告 程序源代码 k 阶差分法 实验报告 程序 ...

  6. keras添加正则化全连接_收藏!改善TensorFlow模型的4种方法你需要了解的关键正则化技术(2)...

    上一篇文章和同学们分享了两种方法,今天我们继续分享另外两种方法. Batch Normalization 批处理规范化背后的主要思想是,在我们的案例中,我们通过使用几种技术(sklearn.prepr ...

  7. 独家 | 将时间信息编码用于机器学习模型的三种编码时间信息作为特征的三种方法...

    作者:Eryk Lewinson 翻译:汪桉旭 校对:zrx本文约4400字,建议阅读5分钟 本文研究了三种使用日期相关的信息如何创造有意义特征的方法. 标签:时间帧,机器学习,Python,技术演示 ...

  8. 独家 | 使用Python实现机器学习特征选择的4种方法(附代码)

    作者:Sugandha Lahoti 翻译:李洁 校对:杨光 本文约3500字,建议阅读13分钟. 本文中,我们将研究从数据集中选择特征的不同方法;同时通过使用Python中Scikit-learn  ...

  9. 8种方法用Python实现线性回归,为你解析最高效选择

    来源:大数据文摘 编译:丁慧.katherine Hou.钱天培 作者:TirthajyotiSarkar 本文共1856字,建议阅读6分钟. 本文为大家对比了8种用Python实现线性回归的方法哪个 ...

最新文章

  1. yum -y --downloadonly --downloaddir=/ruiy upggrde;
  2. C语言ODBC方式连接DM数据库
  3. 记我面试6家公司的感悟
  4. 前端学习(1751):前端调试值之编辑源并同步到本地文件
  5. IRP和IO_STACK_LOCATION
  6. 2008铁路旅客列车时刻表_重要消息!唐山站100多列旅客列车调整,12月30日起开始实行...
  7. python中空间的位置怎么放置_python / django,名称空间的根在哪里?
  8. html浮动提示框,JavaScript浮动提示框Tooltip效果
  9. 【企业微信】自建应用可信域名验证
  10. 电脑连上网络,浏览器上不了网?
  11. 游戏建模入门教程:绝地求生—PUBG的游戏模型制作流程
  12. LeetCode——字节跳动系列题目
  13. EPSON ESC/POS打印机指令
  14. Kafka分区副本分配规则
  15. Avformat_open_input函数的分析 结合HTTP协议
  16. Java第三方接口鉴权(springboot + 腾讯开放平台)
  17. 夜神模拟器 安卓7.0 burp抓包 https流量
  18. [jzoj 3461]【NOIP2013模拟联考5】小麦亩产一千八 {Fibonacci数列}
  19. python基础练习3(学python的多多少少听说过)
  20. 【洛谷】P1747 好奇怪的游戏(bfs)

热门文章

  1. 67 再做一次小学弟哈哈哈哈 -------最长公共子序列
  2. 做seo优化,更新文章要有规律
  3. 阿里云基础产品技术月刊 2019年3月
  4. electron常用的快捷键组件
  5. AliOS Things 技术架构
  6. 深度学习/神经网络PPt绘图工具
  7. (一)Shell的条件判断符及特殊变量
  8. 瓦里安北京生产基地成全球最全产品线的研发和生产基地
  9. Web安全之充分利用 X-Content-Type-Options
  10. 绘画用电容笔还是触控笔?适合ipad画画的电容笔推荐