社区
C语言
帖子详情
多元非线性回归问题的算法(500分以上求解)
dfkoko
2007-07-26 06:59:53
公式见
http://blog.csdn.net/dfkoko/archive/2007/07/26/1708278.aspx
能够提供完整算法或C++/VC++代码者另开贴500分相送.如需要分可再加
我的Email:dfkoko@163.com
...全文
1229
12
打赏
收藏
多元非线性回归问题的算法(500分以上求解)
公式见 http://blog.csdn.net/dfkoko/archive/2007/07/26/1708278.aspx 能够提供完整算法或C++/VC++代码者另开贴500分相送.如需要分可再加 我的Email:dfkoko@163.com
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
Forsure
2010-08-31
打赏
举报
回复
我现在也需要这个,谁有可以发给我一份么luanwpp#163.com
yinxx11
2010-07-08
打赏
举报
回复
学习了,谢谢,楼主有典型相关分析的代码么有的话发给我分行么?yinxx11@yahoo.com.cn谢谢
dfkoko
2007-08-21
打赏
举报
回复
To likeEnglish:
我很需要,发给我,谢先.
dfkoko@163.com
交个朋友.
IlikeEnglish
2007-08-12
打赏
举报
回复
曾经编过一个,因为学习数据挖掘,lz需要联系我
dfkoko
2007-08-12
打赏
举报
回复
To expter(My Dream):能解决问题的一个没有
expter
2007-08-09
打赏
举报
回复
up...
google 一大把哇
fire_woods
2007-07-31
打赏
举报
回复
http://www.chinavib.com/forum/archiver/tid-48646.html
先用matlab的工具包测试那种方法的效果好.
如果有有效的方法
你有2个选择,一个是用matlab和c混合编程,把matlab的包编译成dll,这个执行效率低.
另外一个是看对应的matlab的源代码,自己转换成c代码.这个改写有一定的工作量.
NowCan
2007-07-30
打赏
举报
回复
有算法还不会写程序?而且你这个公式怎么和我见到的不同呢?
/*
多元线性回归分析
*/
#include <iostream>
#include <fstream>
#include <math>
#include "matrix.h"
////////////////////////////////
// Note: The following conditional compilation statements are included
// so that you can (likely to) compile this sample, without any
// modification, using a compiler which does not support any or
// all of the ANSI C++ features like NAMEPACE, TEMPLATE, and
// EXCEPTION, used in this class.
//
// If you have a compiler, such as C++ Builder, Borland C++ 5.0,
// MS Visual C++ 5.0 or higher, etc., which supports most of the ANSI
// C++ features used in this class, you do not need to include these
// statements in your program.
//
#ifndef _NO_NAMESPACE
using namespace std;
using namespace math;
#define STD std
#else
#define STD
#endif
#ifndef _NO_TEMPLATE
typedef matrix<double> Matrix;
#else
typedef matrix Matrix;
#endif
#ifndef _NO_EXCEPTION
#define TRYBEGIN() \
try \
{
#define CATCHERROR() \
} \
\
/* */ \
catch(const STD::exception &e) \
{ \
cerr << "Error: " << e.what() << endl; \
}
#else
#define TRYBEGIN()
#define CATCHERROR()
#endif
static Matrix m_x, m_y, m_a;
/*
从数据文件中读取数据,格式如下
第一行是观测点的个数n
第二行是自变量的个数m
然后是n行数据x,自变量x(0)~x(m-1)
然后是n行应变量y
*/
long read_data(char *datfile)
{
long n, m, i, j;
fstream fs(datfile);
fs >> n;
fs >> m;
//cout<<"n="<<n<<",m="<< m<<endl;
m_x.SetSize(n, m); //row=n, col=m
m_y.SetSize(n, 1); //row=n, col=1
fs >> m_x;
fs >> m_y;
//cout << "x=" << endl << m_x << endl;
//cout << "y=" << endl << m_y << endl;
return n;
}
/* */
long solve(void)
{
Matrix c, cct, cy;
long x, y;
x=m_x.ColNo();
y=m_x.RowNo();
m_a.SetSize(x + 1, 1);
c.SetSize(x + 1, y);
for(long i=0; i < x; i++)
{
for(long j=0; j < y; j++)
{
c(i, j)=m_x(j, i);
}
}
for(long j=0; j < y; j++)
{
c(x, j)=1;
}
//cout << "c=" << endl << c << endl;
cct=c *~c;
cy=c * m_y;
//cct*a=cy
m_a=cct.Solve(cy);
//cout << "m_a=" << endl << m_a << endl;
return 0;
}
/* */
void eval(void)
{
double q, s, r, u, y, t, ye, ax;
Matrix v, qm;
long n, m;
m=m_x.ColNo();
n=m_x.RowNo();
v.SetSize(m, 1);
qm.SetSize(m, 1);
q=0;
for(long i=0; i < n; i++)
{
y=0;
for(long j=0; j < m; j++)
{
y+=m_a(j, 0) * m_x(i, j);
}
y+=m_a(m, 0);
q+=(m_y(i, 0) - y) * (m_y(i, 0) - y);
}
cout << "偏差平方和, q=" << q << endl; //偏差平方和
s=sqrt(q / n);
cout << "平均标准差, s=" << s << endl; //平均标准偏差
ye=0;
for(long i=0; i < n; i++)
{
ye+=m_y(i, 0) / n;
}
t=0;
for(long i=0; i < n; i++)
{
t+=(m_y(i, 0) - ye) * (m_y(i, 0) - ye);
}
r=sqrt(1 - q / t);
cout << "复相关系数, r=" << r << endl; //复相关系数
u=0;
for(long i=0; i < n; i++)
{
y=0;
for(long j=0; j < m; j++)
{
y+=m_a(j, 0) * m_x(i, j);
}
y+=m_a(m, 0);
u+=(ye - y) * (ye - y);
}
cout << "回归平方和, u=" << u << endl; //回归平方和
for(long i=0; i < m; i++)
{
qm(i, 0)=0;
for(long j=0; j < n; j++)
{
ax=0;
for(long k=0; k < m; k++)
{
if(k != j)
{
ax+=m_a(k, 0) * m_x(j, k);
}
}
qm(i, 0)+=(m_y(i, 0) - (m_a(m, 0) + ax)) * (m_y(i, 0) - (m_a(m, 0) + ax));
}
v(i, 0)=sqrt(1 - q / qm(i, 0));
}
cout << "偏相关系数, v=" << endl << v << endl; //偏相关系数
}
/* */
int main(int argc, char **argv)
{
if(argc != 2)
{
cout << "mls <datafile name>" << endl;
return 0;
}
TRYBEGIN() //try
read_data(argv[1]);
solve();
cout << "回归系数, a=" << endl << m_a << endl; //回归系数
eval();
CATCHERROR() //catch
return 0;
}
当然,这个程序用了一个矩阵类,用来求解方程组
dfkoko
2007-07-30
打赏
举报
回复
能够解决A0,A1,A2,A3,B,C六个未知数也行,其它的我慢慢做
dfkoko
2007-07-30
打赏
举报
回复
To :fire_woods(风林火山)
没有看见有m,
Ai,B,C,这些都是未知的吗?
有多少组Xi,Y数据?
1)
Ai:最多八个(A0~A8)
B: 一个
C: 一个
2)
m部分我没写,加上m部分太复杂了,暂时先不考虑.
3)
大约有30组以上Xi,Y数据
To: NowCan(城市浪人)
有算法还不会写程序?而且你这个公式怎么和我见到的不同呢?
1)提供算法和代码都可以.
2)你见到的公式是什么样的?
这是多元非线性回归算法.化成线性可能无解(原谅我数学不好)
fire_woods
2007-07-30
打赏
举报
回复
没有看见有m,
Ai,B,C,这些都是未知的吗?
有多少组Xi,Y数据?
bing3joe
2007-07-26
打赏
举报
回复
顶下再看
机器学习实战-42: 非线性回归
算法
(Non-linear Regression)
机器学习之非线性回归
算法
(Non-linear Regression)属于有监督的回归(Regression)学习
算法
。很多场合线性模型无法很好的拟合目标数据曲线,这就需要引入非线性回归模式。非线性回归(Non-linear Regression)
算法
就是将非线性回归转化为线性回归,再按照线性回归
求解
。线性回归通常采用给定的函数值与模型预测值之差的平方和最小为损失函数, 并使用最小二乘法和梯度下降法来计算最终的拟合参数。
python进行
多元非线性回归
_免费Python机器学习课程二:多元线性回归
从头开始学习为Python中任意数量的变量开发多元线性回归。线性回归可能是最简单的机器学习
算法
。对于初学者来说非常好,因为它使用简单的公式。因此,这对学习机器学习概念很有帮助。在本文中,我将尝试逐步解释多元线性回归。概念和公式线性回归使用我们在学校都学过的简单公式:Y = C + AX提醒一下,Y是输出或因变量,X是输入或自变量,A是斜率,C是截距。对于线性回归,对于相同的公式,我们遵循以下符号:...
MATLAB-遗传
算法
-
求解
多元非线性规划
问题
MATLAB-遗传
算法
求解
多约束非线性规划
问题
多元回归
求解
机器学习_机器学习:多元线性回归
一、多元线性回归基础简单线性回归
算法
只有一个特征值(x),通常线性回归
算法
中有多个特征值,有的甚至有成千上万个特征值;多元线性回归中有多种特征,每一种特征都与 y 呈线性关系,只是线性关系的系数不同;多元线性回归的模型可以解决一元线性回归
问题
;多元线性回归模型中,每一种特征都与值(也就是 y)呈线性关系,从θ1 到θn ,以此为第一个特征到第 n 个特征与值的线性关系系数,θ1 是第一个特征(...
最小二乘法
求解
非线性回归
问题
式子(2)中的 S(X) 包含函数 r 的二阶导数,数值较小可以忽略;我们想根据这些已知的输入输出数据,估计未知参数 A、α、β。其中,A、α、β 为未知参数,我们有一系列的输入输出数据。为了能使用牛顿法
求解
,需要计算梯度和 hesse 矩阵。利用公式(3)
求解
非线性最小二乘法的迭代
算法
,称之为。本文介绍 高斯-牛顿法,
求解
非线性最小二乘法
问题
。机器学习中称之为 ground truth。我们称此类
问题
为非线性最小二乘
问题
。我们期望每一个自变量的估计输出。的 Hesse 矩阵的第。
C语言
70,026
社区成员
243,244
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章