对于一般多项式:

K为多项式最高项次,a为不确定的常数项,共k+1个;

有离散数据集对应,其方差:

β为,方差函数S对β自变量第j个参数的梯度(偏导数):

当以上梯度为零时,S函数值最小,即:

中的每个每个偏导数构成一个等式:

...

则:

...

变为矩阵形式:

这样就变成线性方程求解形式,可用高斯消元等方法求得,注意在计算过程中要判断对角线上的值是否为零,如果等于零可以通过换行的方法解决;

         /// <summary>
/// Function y = a0+a1*x+a2*x^2+ ... + an*x^n
/// </summary>
/// <param name="dataX">x values</param>
/// <param name="Y">y values</param>
/// <param name="N">Degree of a Polynomial</param>
/// <returns>[a0,a1,...,an]</returns>
public static double[] PolyRegress(double[] dataX, double[] Y,int N)
{
const double tiny = 0.00001;
int M = dataX.Length; // M = Number of data points
int D = N + ;
double x = , y = ;
double[,] V = new double[D, D];
double[] A = new double[D];
for (int i = ; i < M; i++)
{
x = dataX[i];
y = Y[i];
for(int j=;j<D;j++)
{
for(int k=;k<D;k++)
{
V[j, k] += Math.Pow(x, j + k);
}
A[j] += y * Math.Pow(x, j);
} }
for (int i = ; i < D; i++)
{
double m = V[i, i];
if (Math.Abs(m) < tiny)
{
for (int i2 = i + ; i2 < D; i2++)
{
if (Math.Abs(V[i2, i]) > tiny)
{
double tmp = ;
for (int c = ; c < D; c++)
{
tmp = V[i, c];
V[i, c] = V[i2, c];
V[i2, c] = tmp;
}
tmp = A[i];
A[i] = A[i2];
A[i2] = tmp;
break;
}
}
m = V[i, i];
} if (Math.Abs(m) > tiny)
{
for (int j = i; j < D; j++)
{
V[i, j] /= m;
}
A[i] /= m;
for (int k = ; k < D; k++)
{
if (k != i)
{
m = V[k, i];
for (int l = i; l < D; l++)
{
V[k, l] -= m * V[i, l];
}
A[k] -= m * A[i];
}
}
}
}
return A;
}

维基关于最小二乘的解释

一般多项式曲线的最小二乘回归(Linear Regression)的更多相关文章

  1. Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression

    原文:http://blog.csdn.net/abcjennifer/article/details/7732417 本文为Maching Learning 栏目补充内容,为上几章中所提到单参数线性 ...

  2. 2、单线性变量的回归(Linear Regression with One Variable)

    2.1 模型表示 我们通过一个例子来开始:这个例子是预测住房价格的,我们要使用一个数据集,数据集包含俄勒冈州波特兰市的住房价格.在这里,我要根据不同房屋尺寸所售出的价格,画出我的数据集.比方说,如果你 ...

  3. 机器学习系列-tensorflow-03-线性回归Linear Regression

    利用tensorflow实现数据的线性回归 导入相关库 import tensorflow as tf import numpy import matplotlib.pyplot as plt rng ...

  4. 机器学习---最小二乘线性回归模型的5个基本假设(Machine Learning Least Squares Linear Regression Assumptions)

    在之前的文章<机器学习---线性回归(Machine Learning Linear Regression)>中说到,使用最小二乘回归模型需要满足一些假设条件.但是这些假设条件却往往是人们 ...

  5. 机器学习方法:回归(一):线性回归Linear regression

    欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 开一个机器学习方法科普系列:做基础回顾之用,学而时习之:也拿出来与大家分享.数学水平有限,只求易懂,学习与工 ...

  6. 机器学习---三种线性算法的比较(线性回归,感知机,逻辑回归)(Machine Learning Linear Regression Perceptron Logistic Regression Comparison)

    最小二乘线性回归,感知机,逻辑回归的比较:   最小二乘线性回归 Least Squares Linear Regression 感知机 Perceptron 二分类逻辑回归 Binary Logis ...

  7. 机器学习---用python实现最小二乘线性回归算法并用随机梯度下降法求解 (Machine Learning Least Squares Linear Regression Application SGD)

    在<机器学习---线性回归(Machine Learning Linear Regression)>一文中,我们主要介绍了最小二乘线性回归算法以及简单地介绍了梯度下降法.现在,让我们来实践 ...

  8. 局部加权回归、欠拟合、过拟合(Locally Weighted Linear Regression、Underfitting、Overfitting)

    欠拟合.过拟合 如下图中三个拟合模型.第一个是一个线性模型,对训练数据拟合不够好,损失函数取值较大.如图中第二个模型,如果我们在线性模型上加一个新特征项,拟合结果就会好一些.图中第三个是一个包含5阶多 ...

  9. Linear regression with multiple variables(多特征的线型回归)算法实例_梯度下降解法(Gradient DesentMulti)以及正规方程解法(Normal Equation)

    ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, , ...

随机推荐

  1. python基础知识7——迭代器,生成器,装饰器

    迭代器 1.迭代器 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束.迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外,迭代器 ...

  2. JSON与XML优缺点对比分析

    本文从各个方面向大家对比展示了json和xml的优缺点,十分的全面细致,有需要的小伙伴可以参考下. 1. 定义介绍 1.1 XML定义 扩展标记语言 (Extensible Markup Langua ...

  3. 新建一个UI窗口-XproerUI(MFC)教程

    版权所有 2009-2015 荆门泽优软件有限公司 保留所有权利 产品首页:http://www.ncmem.com/apps/xproerui/index.asp 在线文档(XproerUI):Xp ...

  4. eclipse重定向输入输出到文件

    最近在学习算法第四版,为了要用作者给的测试数据alg4-data,需要将数据直接导入到程序中.在作者的示例代码里用了重定向来做这个事情,但是在eclipse里使用重定向很不方便,查了很多资料,都说是在 ...

  5. eclipse中的 Compiler compliance level含义

    The compiler compliance setting tells the compiler to pretend it's a different version of Java. The ...

  6. NFS实践练习

    实践要求: (CentOS 7)两台主机A/B,其中A主机搭建LAMP环境,B主机当做NFS服务器存放Mariadb的数据,并部署Discuz做测试,实现数据库可用. A主机:httpd2.4 php ...

  7. 三、HTTP抓包测试

    package testHTTP; import java.io.BufferedReader;import java.io.IOException;import java.io.InputStrea ...

  8. http之100-continue(转)

    1.http 100-continue用于客户端在发送POST数据给服务器前,征询服务器情况,看服务器是否处理POST的数据,如果不处理,客户端则不上传POST数据,如果处理,则POST上传数据.在现 ...

  9. modelsim搭建uvm环境及实例

    Modelsim SE-64 10.2c 自带编译好的uvm-1.1d 脚本new_run.do set UVM_DPI_HOME C:/modeltech64_10.2c/uvm-1.1d/win6 ...

  10. css:去掉手机浏览器上点击时的边框和阴影

    outline:none;(去掉蓝框) -webkit-tap-highlight-color:rgba(0,0,0,0) ;(去掉阴影)适用于ios,Android