机器学习(三)之Matlab实现的函数总结

本文详细介绍了如何使用Matlab实现线性回归与逻辑回归,包括使用内置函数和梯度下降法进行线性回归,以及逻辑回归的实现方式。文章还总结了Matlab中的常用绘图函数,并提供了Matlab函数的使用指南。
摘要由CSDN通过智能技术生成

在学习了线性回归与逻辑回归后,对其进行Matlab实现并总结如下:

(一) 运用Matlab内函数进行回归

%linear regression with matlab inner function
x=[1;2;3;4;5;6;7];
y=[2.1;5;5.8;8.2;10.5;11;15];
temp=ones(7,1);
X=[temp x];
b=regress(y,X)
z=b(1)+X*b(2);
plot(x,y,'or',x,z,'g');
xlabel('x');
ylabel('y');
title('Linear Regression with Matlab inner function');
grid on;
这是用Matlab内部的函数进行实现的,实现图如下:

b =
    0.3143
    1.9786

这里需要说明的是:这个例子实现的是一元一次的回归,当对多特征数据进行回归时,运用regress函数,同样可以实现线性回归。

另外,函数内部中的polyfit函数可实一元多项式的回归,而rstool可以实现多元二项式的回归,具体可参见Matlab help文档。

(二)运用梯度下降法进行Linear Regression

代码如下:

(1)

function [J,Gradient]=costfunction(theta)
%J :costfunction;
%Gradient
x=[1;2;3;4;5;6;7];
y=[2.1;5;5.8;8.2;10.5;11;15];
[m,n]=size(x);
h=theta(1)+theta(2)*x;
J=sum((h-y).^2)/(2*m);
Gradient(1)=sum(h-y)/m;
Gradient(2)=sum((h-y).*x)/m;
end
(2)

function [optTheta,functionVal,exitFlag]=Gradient_descent( )
  options = optimset('GradObj','on','MaxIter',100); 
  initialTheta = zeros(2,1);
  [optTheta,functionVal,exitFlag] = fminunc(@costfunction,initialTheta,options); 
end
效果如下:

ans =

    0.3143
    1.9786

与(1)相比,结果是一样的。

这里需要说明的是optimset函数与fminunc函数,应该认真看下help说明。(运用这两个函数,函数内部自动取值learning rate)

(三)Logistic Regression

由于逻辑回归的实现与线性回归的实现在运用梯度下降法实现时,处cost function不同外其他皆同,故代码省略。

如果Logistic Regression的实现过程中用Regularizaion,只需要对cost function进项稍加改动即可。

(四)小结

1)这两个实例都是对简单数据的线性回归。

对Linear Regression而言:当处理多特征的数据时可以采用(a)regress(或profit等)函数进行回归,(b)运用梯度下降法实现的过程中增加cost function的元   数,另外再增加各个变量的梯度即可。

Logistic Regression而言:其本质是二值分类问题{0,1},这样就遇到一个问题。(a)当实际的训练数据集是 two classes时,不管是是多特征的训练数据还是特征比较     少的数据,都可以参考Linear Regression的实现方法进行。(b)当实际的训练数据时mult-classes时,这时可以建立多个hypothesis function,当predict新的数据时,取使得hypothesis function最大的那个即可得到。

2)再次重申下:

a)当训练样本的特征长度不一时,在对其进行回归前应进行Feature Scaling或者Mean Normalization,以更快的收敛;

b)在进行Logistic Regression时为避免ovrfit,通常都会(1)减少数据中无关的特征(2)Regularization

(五)Matlab函数总结

常见的三维绘图函数:

linspace

meshgrid

mesh(可画出立体网状图)

surf(立体曲面图

      peaks(为了方便测试立体绘图, MATLAB提供了一个peaks函数,可产生一个凹凸有致的曲面,包含了三个局部极大点及三个局部极小点,其方程式为:

      )、

      meshz(可将曲面加上围裙)

waterfall(可在x方向或y方向产水流效果)、

meshc(同时画出网状图与等高线)、

surfc(同时画出曲面图与等高线)

contour3(画出曲面在三度空间 中的等高线)、

contour(画出曲面等高线在XY平面的投影)、

plot3(可画出三度空间中的曲线)

Reference:

http://blog.csdn.net/abcjennifer/article/details/7732417

http://cs.nju.edu.cn/yangxc/dcc2003.files/matlab1/matlabsimple/index-1.htm

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值