[Machine-Learning] 一个线性回归的简单例子
这篇博客中做一个使用最小二乘法实现线性回归的简单例子。
代码来自《图解机器学习》 图3-2,使用MATLAB实现。
用到的matlab函数
由于以前对MATLAB也不是非常熟悉,这里用到了一些MATLAB的 内建函数 ,顺便学习一下。
linespace
linspace
用于产生指定范围内的指定数量点数,相邻数据跨度相同,并返回一个行向量:
如果我们需要产生列向量,我们使用'
就可以了:
pi
内置的常量,圆周率。
代码
line 1
n=50; N=1000; x=linspace(-3,3,n)'; X=linspace(-3,3,N)';
这句先定义了n和N两个整形变量,然后生成了2个长度分别为50和100的列向量,数据结构为:
大概看下x
,是这个样子的:
x是列向量(这么细致是为了能在数学上面有一个更加深刻的了解)。pix
的内容就是x的内容都乘了一个π
。
line 2
pix=pi*x; y=sin(pix)./(pix)+0.1*x+0.05*randn(n,1);
获取y轴坐标,并加入一些随机的“噪声”,用于回归。
line 3
p(:,1)=ones(n,1); P(:,1)=ones(N,1);
这里建立了二个列向量,分别是p
和P
,形状是这样的:
这两个列向量里面所有元素都是1;其实我奇怪为什么不p = ones(n,1);
,可能是方便后面的格式统一吧。
line 4-7 (for循环)
for j=1:15
p(:,2*j)=sin(j/2*x); p(:,2*j+1)=cos(j/2*x);
P(:,2*j)=sin(j/2*X); P(:,2*j+1)=cos(j/2*X);
end
直接循环不是很直观,先手动做一两步试试:
我们这次仅对p
这个矩阵进行操作,当j = 1
的时候:
然后j = 2
的时候:
我们会发现,每次执行一次循环,p
矩阵就会增加2列,我们可以根据语句的内容看出来增加了的内容和x与j的关系。在循环结束的时候,这个矩阵会有31列。
line 8
t=p\y; F=P*t;
我觉得这行t = p \ y;
这句最关键了,\
是左除,用于解出矩阵t 使得 p * t = y
。
然后通过解出的t,算出F = p * t
。
line 9-10
figure(1); clf; hold on; axis([-2.8 2.8 -0.5 1.2]);
plot(X,F,'g-'); plot(x,y,'bo');
这两行技术含量不大,就是画图了:
这个示意图可以让我们大致看出回归的过程。
[Machine-Learning] 一个线性回归的简单例子的更多相关文章
- 一个epoll的简单例子
epoll事件机制的触发方式有两种:LT(电平触发)和ET(边沿触发) EPOLLIN事件: 内核中的socket接收缓冲区 为空(低电平) 内核中的socket接受缓冲区 不为空(高电平) EPOL ...
- 一个poll的简单例子
该程序使用poll事件机制实现了一个简单的消息回显的功能,其服务器端和客户端的代码如下所示: 服务器端: //start from the very beginning,and to create g ...
- [笔记]机器学习(Machine Learning) - 01.线性回归(Linear Regression)
线性回归属于回归问题.对于回归问题,解决流程为: 给定数据集中每个样本及其正确答案,选择一个模型函数h(hypothesis,假设),并为h找到适应数据的(未必是全局)最优解,即找出最优解下的h的参数 ...
- php mysql 一个查询优化的简单例子
PHP+Mysql是一个最经常使用的黄金搭档,它们俩配合使用,能够发挥出最佳性能,当然,如果配合Apache使用,就更加Perfect了. 因此,需要做好对mysql的查询优化.下面通过一个简单的例子 ...
- SpringMvc+Mybatis+Maven+Mysql做一个CRUD的简单例子
本文档结合 SpringMVC. Mybatis. MySQL,说明如何实现一个简单的数据库单表 CRUD操作.开发工具使用集成了spring mvc的eclipse(Spring Tool Suit ...
- [Machine Learning] 多变量线性回归(Linear Regression with Multiple Variable)-特征缩放-正规方程
我们从上一篇博客中知道了关于单变量线性回归的相关问题,例如:什么是回归,什么是代价函数,什么是梯度下降法. 本节我们讲一下多变量线性回归.依然拿房价来举例,现在我们对房价模型增加更多的特征,例如房间数 ...
- Java中死锁的简单例子及其避免
死锁:当一个线程永远地持有一个锁,并且其他线程都尝试获得这个锁时,那么它们将永远被阻塞.比如,线程1已经持有了A锁并想要获得B锁的同时,线程2持有B锁并尝试获取A锁,那么这两个线程将永远地等待下去. ...
- Machine Learning分类:监督/无监督学习
从宏观方面,机器学习可以从不同角度来分类 是否在人类的干预/监督下训练.(supervised,unsupervised,semisupervised 以及 Reinforcement Learnin ...
- 队列BlockingQueue的简单例子
队列,当进行多线程编程的时候,很多时候可能会用到,队列是先进先出的,我们可以将要执行的任务放置在队列内缓存起来,当线程池中线程可以使用的时候,我们就从队列中获取一个任务执行.. 当前是一个队列的简单例 ...
随机推荐
- 10、桥接模式(Bridge)
桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化.桥接的用意是:将抽象化与实现化解耦,使得二者可以独立变化,像我们常用的JDBC桥DriverManager一样,JDBC进行连接数据库的时 ...
- VC分发包版本问题
来源:http://www.cnblogs.com/mixiyou/archive/2010/02/09/1663620.html 之前曾经写过一篇个人经历,是关于VC2005分发包版本不一致而引起应 ...
- MySQL解决"is marked as crashed and should be repaired"故障
具体报错如下: Table '.\Tablename\posts' is marked as crashed and should be repaired 提示说论坛的帖子表posts被标记有问题,需 ...
- LayoutInflater 类的使用
转 http://yxwang0615.iteye.com/blog/1711147 一个Activity里如果直接用findViewById(),对应的是setConentView()的那个layo ...
- EXCEL读写NPOI
1.第一步: 可以使用ExcelAutomation进行EXCEl文件的读写,但是需要电脑上安装EXCEL,对EXCEL版本有要求,速度慢,有安全性,并发性问题,不适合网站类项目. 第二种方法: NP ...
- C# 经典入门15章 RichTextBox
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAsEAAAIRCAIAAAAk7fcMAAAgAElEQVR4nOy9+SOU3/////pHuswYyz
- UIView 视图切换
UIView之间常用视图之间切换方式 转载自:http://www.jianshu.com/p/0d53f9402c07 在平时编写代码的过程中,页面之间的跳转可以说就和MVC模式一样是开发必须的.但 ...
- CDOJ UESTC 1220 The Battle of Guandu
The 2015 China Collegiate Programming Contest 2015第一届中国大学生程序设计竞赛 F题 本质就是求单源最短路!注意会爆int 对于每一个村庄i,其实就是 ...
- db2 sqlcode
DB2错误信息(按sqlcode排序) sqlcode sqlstate 说明 000 00000 SQL语句成功完成 01xxx SQL语句成功完成,但是有警告 +012 01545 未限定的列名被 ...
- 【Todo】AMQP示例学习
这个网站非常好: http://www.rabbitmq.com/getstarted.html 把AMQP的各种用法都讲了,还带上了各种语言: 第一篇 http://www.rabbitmq.com ...