一般多项式曲线的最小二乘回归(Linear Regression)
对于一般多项式:
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)的更多相关文章
- Matlab实现线性回归和逻辑回归: Linear Regression & Logistic Regression
原文:http://blog.csdn.net/abcjennifer/article/details/7732417 本文为Maching Learning 栏目补充内容,为上几章中所提到单参数线性 ...
- 2、单线性变量的回归(Linear Regression with One Variable)
2.1 模型表示 我们通过一个例子来开始:这个例子是预测住房价格的,我们要使用一个数据集,数据集包含俄勒冈州波特兰市的住房价格.在这里,我要根据不同房屋尺寸所售出的价格,画出我的数据集.比方说,如果你 ...
- 机器学习系列-tensorflow-03-线性回归Linear Regression
利用tensorflow实现数据的线性回归 导入相关库 import tensorflow as tf import numpy import matplotlib.pyplot as plt rng ...
- 机器学习---最小二乘线性回归模型的5个基本假设(Machine Learning Least Squares Linear Regression Assumptions)
在之前的文章<机器学习---线性回归(Machine Learning Linear Regression)>中说到,使用最小二乘回归模型需要满足一些假设条件.但是这些假设条件却往往是人们 ...
- 机器学习方法:回归(一):线性回归Linear regression
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. 开一个机器学习方法科普系列:做基础回顾之用,学而时习之:也拿出来与大家分享.数学水平有限,只求易懂,学习与工 ...
- 机器学习---三种线性算法的比较(线性回归,感知机,逻辑回归)(Machine Learning Linear Regression Perceptron Logistic Regression Comparison)
最小二乘线性回归,感知机,逻辑回归的比较: 最小二乘线性回归 Least Squares Linear Regression 感知机 Perceptron 二分类逻辑回归 Binary Logis ...
- 机器学习---用python实现最小二乘线性回归算法并用随机梯度下降法求解 (Machine Learning Least Squares Linear Regression Application SGD)
在<机器学习---线性回归(Machine Learning Linear Regression)>一文中,我们主要介绍了最小二乘线性回归算法以及简单地介绍了梯度下降法.现在,让我们来实践 ...
- 局部加权回归、欠拟合、过拟合(Locally Weighted Linear Regression、Underfitting、Overfitting)
欠拟合.过拟合 如下图中三个拟合模型.第一个是一个线性模型,对训练数据拟合不够好,损失函数取值较大.如图中第二个模型,如果我们在线性模型上加一个新特征项,拟合结果就会好一些.图中第三个是一个包含5阶多 ...
- Linear regression with multiple variables(多特征的线型回归)算法实例_梯度下降解法(Gradient DesentMulti)以及正规方程解法(Normal Equation)
,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, ,, , ...
随机推荐
- vue-cli webpack 引入jquery
首先在package.json里的dependencies加入"jquery" : "^2.2.3",然后install 在webpack.base.conf. ...
- ubuntu使用 服务
在这里写了很多篇linux,习惯了在这里写 centos中定时任务命令是crond ubuntu中定时任务命令是cron 这两种linux系统不一样的地方还是挺多的, 既然我目前的专注点是ubuntu ...
- ViewPager如下效果你研究过吗?
1:ViewPager实现欢迎页面动画效果 ViewPager实现欢迎页面动画滑动切换view效果,页面切换添加优美的动画, //主要代码实现 public void animateSecondScr ...
- JavaScript DOM编程艺术读书笔记(四)
第十章 实现动画效果 var repeat = "moveElement('"+elementID+"',"+final_x+","+fin ...
- bootstrap制作搜索框及添加回车搜索事件
下面是开发中用bootstrap制作的一个搜索框,以及给搜索框添加回车搜索事件的一个小案例. bootstrap制作搜索框及添加回车搜索事件 下面是功能实现的代码: <!DOCTYPE html ...
- [测]jieba分词
import jieba import os import jieba.analyse with open('src.txt', 'r') as file: data = file.read() se ...
- Android之设置横屏竖屏
方案一:在AndroidManifest.xml中配置 在项目的AndroidManifest.xml中找到你所指定的activity中加上Android:screenOrientation属性,它有 ...
- Unity3D中以任意格式获取时间(C# .net也可用)
最近楼主在开发中遇到了一个小问题 需要保存截图,同时把时间作为截图的名字存储 时间的保存格式为 2016-12-08 13:15:00 保存截图的流程就不说了,这篇博客只说一下以任意的格式保存时间. ...
- HotSpot虚拟机对象介绍
1.对象的创建 Java是一门面向对象语言,在运行过程中无时不刻不在创建对象.从语言层面,创建对象仅仅是一个new关键字而已,而在虚拟机中,对象(文中讨论的对象仅限于普通java对象,不包含数组和Cl ...
- ASP.NET ZERO 学习 HangFire的使用二
之前在ABP配置好了HangFire环境之后,那么如何才能添加Job到HangFire中让其执行呢 这就需要参考ABP的Background Jobs and Workers, 参考路径:http:/ ...