(十)最小二乘拟合二元直线

 1 #encoding=utf-8
 2 from  matplotlib import pyplot as plt
 3 import  numpy as np
 4 from mpl_toolkits.mplot3d import Axes3D
 5 # 生成画布
 6 fig = plt.figure();
 7 ax = Axes3D(fig);
 8
 9 point=[[2,3,48],[4,5,50],[5,7,51],[8,9,55],[9,12,56]];
10 plt.xlabel("X1")
11 plt.ylabel("X2")
12 Isum = 0.0;
13 X1sum = 0.0;
14 X2sum = 0.0;
15 X1_2sum = 0.0;
16 X1X2sum = 0.0;
17 X2_2sum = 0.0;
18 Ysum = 0.0;
19 X1Ysum = 0.0
20 X2Ysum = 0.0;
21
22 for i in range(0,len(point)):
23
24     x1i=point[i][0];
25     x2i=point[i][1];
26     yi=point[i][2];
27     # 显示数据点
28     ax.scatter(x1i, x2i, yi, color="red");
29     show_point = "["+ str(x1i) +","+ str(x2i)+","+str(yi) + "]";
30     ax.text(x1i,x2i,yi,show_point);
31     # 求矩阵中的值
32     Isum = Isum+1;
33     X1sum = X1sum+x1i;
34     X2sum = X2sum+x2i;
35     X1_2sum = X1_2sum+x1i**2;
36     X1X2sum = X1X2sum+x1i*x2i;
37     X2_2sum = X2_2sum+x2i**2;
38     Ysum = Ysum+yi;
39     X1Ysum = X1Ysum+x1i*yi;
40     X2Ysum = X2Ysum+x2i*yi;
41
42 # 将矩阵运算化为 mat1 * mat3 = mat2
43 # _mat1 设为 mat1 的逆矩阵
44 # 则有 mat3 =  _mat1 * mat2
45 m1=[[Isum,X1sum,X2sum],[X1sum,X1_2sum,X1X2sum],[X2sum,X1X2sum,X2_2sum]];
46 mat1 = np.matrix(m1);
47 m2=[[Ysum],[X1Ysum],[X2Ysum]];
48 mat2 = np.matrix(m2);
49 _mat1 =mat1.getI();
50 mat3 = _mat1*mat2
51
52 # 将矩阵转化为list来提取数据
53 # y = a0+a1x1+a2x2
54 m3=mat3.tolist();
55 a0 = m3[0][0];
56 a1 = m3[1][0];
57 a2 = m3[2][0];
58 # 绘制回归线
59 x1 = np.linspace(0,10)
60 x2 = np.linspace(0,15)
61 y = a0+a1*x1+a2*x2;
62 ax.plot(x1,x2,y);
63 # plt.plot(x,y)
64 show_line = "y="+str(a0)+"+"+str(a1)+"x1"+"+"+str(a2)+"x2";
65 ax.text(0,0,40,show_line);
66
67 plt.show();
时间: 2024-08-03 00:56:29

(十)最小二乘拟合二元直线的相关文章

halcon之最小二乘拟合直线

如果不了解最小二乘算法 请先阅读: Least squares的算法细节原理https://en.wikipedia.org/wiki/Least_squares 通常在halcon中拟合直线会用houghline或者 fitline.本文提供一种新的选择,用halcon的矩阵操作实现最小二乘拟合直线 首先随机生成一组数据 Mx:=[100:10:500] tuple_length(Mx,len) tuple_gen_const(len,5,r) Ma:=2 Mb:=40 tuple_rand(

最小二乘拟合(转)

在物理实验中经常要观测两个有函数关系的物理量.根据两个量的许多组观测数据来确定它们的函数曲线,这就是实验数据处理中的曲线拟合问题.这类问题通常有两种情况:一种是两个观测量x与y之间的函数形式已知,但一些参数未知,需要确定未知参数的最佳估计值:另一种是x与y之间的函数形式还不知道,需要找出它们之间的经验公式.后一种情况常假设x与y之间的关系是一个待定的多项式,多项式系数就是待定的未知参数,从而可采用类似于前一种情况的处理方法. 一.最小二乘法原理 在两个观测量中,往往总有一个量精度比另一个高得多,

非线性函数的最小二乘拟合——兼论Jupyter notebook中使用公式 [原创]

突然有个想法,利用机器学习的基本方法——线性回归方法,来学习一阶RC电路的阶跃响应,从而得到RC电路的结构特征——时间常数τ(即R*C).回答无疑是肯定的,但问题是怎样通过最小二乘法.正规方程,以更多的采样点数来降低信号采集噪声对τ估计值的影响.另外,由于最近在捣鼓Jupyter和numpy这些东西,正好尝试不用matlab而用Jupyter试试看.结果是意外的好用,尤其是在Jupyter脚本中插入LaTeX格式的公式的功能,真是太方便了!尝试了直接把纸上手写的公式转换到Jupyter脚本中的常

最小二乘拟合

拟合函数 function C = lspoly(X,Y,M) %This funciton implements the Least Squares Polynomial %By abcat at 2014.5.7 %Input -X is the 1*n abscissa vector % -Y is the 1*n ordinate vecotr % -M is the degree of the Least-Squares Polynomial %Output -C is the coe

opencv利用hough概率变换拟合得到直线后,利用DDA算法得到直线上的像素点坐标

图片霍夫变换拟合得到直线后,怎样获得直线上的像素点坐标? 这是我今天在图像处理学习中遇到的问题,霍夫变换采用的概率霍夫变换,所以拟合得到的直线信息其实是直线的两个端点的坐标,这样一个比较直接的思路就是利用DDA算法来获取. 一.算法简介 DDA算法是计算机图形学中最简单的绘制直线算法.其主要思想是由直线公式y = kx + b推导出来的. 我们已知直线段两个端点P0(x0,y0)和P1(x1,y1),就能求出 k 和 b . 在k,b均求出的条件下,只要知道一个x值,我们就能计算出一个y值.如果

WPF点补间、拟合回归直线

1,path画刷,绘制正弦 点,线: 生成正弦点 profilePoint.Value =76 * (1 - Math.Sin(i * Math.PI / 92)); profilePoint.Type = 1; 画点 1 EllipseGeometry el = new EllipseGeometry(); 2 el.Center = p; 3 el.RadiusX = 0.5; 4 el.RadiusY = 0.5; 5 6 Path mypath = new Path(); 7 mypat

最小二乘拟合(scipy实现)

原文地址:https://www.cnblogs.com/hqczsh/p/11297669.html

基于EM的多直线拟合实现及思考

作者:桂. 时间:2017-03-22  06:13:50 链接:http://www.cnblogs.com/xingshansi/p/6597796.html 声明:欢迎被转载,不过记得注明出处哦~ 前言 分布拟合与曲线拟合系列本想简单梳理,却啰嗦的没完没了.本文主要介绍:多直线的拟合,多曲线可以依次类推.全文主要包括: 1)背景介绍 2)理论推导 3)代码实现 4)关于拟合的思考 内容多有借鉴他人,最后一并附上链接. 一.背景介绍 对于单个直线,可以借助MLE或者最小二乘进行求参,对于多条

OpenCV 学习(直线拟合)

OpenCV 学习(直线拟合) Hough 变换可以提取图像中的直线.但是提取的直线的精度不高.而很多场合下,我们需要精确的估计直线的参数,这时就需要进行直线拟合. 直线拟合的方法很多,比如一元线性回归就是一种最简单的直线拟合方法.但是这种方法不适合用于提取图像中的直线.因为这种算法假设每个数据点的X 坐标是准确的,Y 坐标是带有高斯噪声的.可实际上,图像中的每个数据点的XY 坐标都是带有噪声的. 下面就来讲讲适用于提取图像中直线的直线拟合算法. 一个点 (xi,yi) 到直线的距离用 ri 来