对于一般多项式:

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. 关于C转汇编(转自网上)

    ②在KILE软件的菜单中,选择Project-->Options for  Target 'Target 1',-->Listing选择Assembly code就能生产*.LST文件.在 ...

  2. Python 3.X简史——记录3.0之后的重要更新

    Python 3.0在2008年12月3日正式发布,在之后又经历了多个小版本(3.1,3.2,3.3……),本文梳理Python 3.0之后的新特性. 其实每个版本都有大量更新,都写出来要几百页,这里 ...

  3. 博客代码:iframe—网页中嵌入其他网页

    iframe 是一个可以把另外一个网页嵌入到一个网页里的代码,非常有用.对于一个内容不错的网页,要方便地把它搬到自己的博客里,用这个代码最合适.而对于在新浪博客里不支持的一些网页效果和代码,可先把他们 ...

  4. WCF Routing 服务

    WCF4.0支持路由机制,通过RoutingService实现请求分发.拦截处理. 一.应用场景 1.暴露一个endpoint在外网,其余服务部署于内网: 2.请求分发,能对服务做负载功能: 二.WC ...

  5. mvc、三次握手

    1.所谓MVC便是: ① View:(查看,观察)就只处理View的事情,其它神马都不要管 ② 数据由Model处理,并且为View提供渲染需要的数据 ③ 由于后端可能抽风可能将name变成Name坑 ...

  6. U-Mail反垃圾邮件网关过滤Locky勒索邮件

    近期,不少朋友圈有朋友发布相关的邮件提醒,说有关于Locky病毒勒索邮件的.看来这个病毒影响不小啊!下面就说说怎么来防止Locky勒索病毒的侵扰. 什么是Locky勒索病毒 Locky勒索病毒主要以邮 ...

  7. position与z-index的关系

    .simulationgame .gameranking .rankinginfo{ width:140px; margin:0 auto; font-family:Arial, Microsoft ...

  8. JavaScript基础认知

    此文只适用于初学者,大神们就不要看了,嘿嘿~ 一.定义变量 关键字 var,由此关键字定义变量,例如:var a =21:就把21这个数定义给了变量a 二.基本数据类型 1.Number类型 表示数字 ...

  9. asp.net web api添加自定义认证

    1.定义认证失败结果生成器 /// <summary> /// 认证失败结果生成器 /// </summary> public class AuthenticationFail ...

  10. perl 引用

    数组的数组 $a = [ [1, 2, 3], [4, 5, 6], [7, 8, 9] ] 哈希的哈希 my $student_properties_of = { 'zdd' => { 'ag ...