简单机器学习方法matlab模拟

本文介绍了如何使用Matlab进行简单的机器学习模拟,包括朴素的一维和二维贝叶斯分类以及线性回归分析。通过这些基础方法,读者可以理解并实践基本的机器学习算法。
摘要由CSDN通过智能技术生成

朴素一维贝叶斯分类

N=100;

x1_original=randn(N,2);
m1=[0 2];
x1=x1_original+kron(ones(N,1),m1);

x2_original=randn(N,2);
m2=[1.5 0.0];
x2=x2_original+kron(ones(N,1),m2);

C=[2,1;1,2];
T=chol(C);
x1=x1*T;
x2=x2*T;

plot(x1(:,1),x1(:,2),'mx');
hold on;
plot(x2(:,1),x2(:,2),'o');
axis([-10 10 -10 10]);
grid on;    

w=2*(C^-1)*(m2-m1)';
b=(m1*(C^-1)*m1')-(m2*(C^-1)*m2');

w1=w(1,1);
w2=w(2,1);
plot([-10,10],[(b-10*w1)/-w2,(b+10*w1)/-w2],'b','LineWidth',2);
pause(2);
%close();

% include column of ones for bias
X=[x1 ones(N,1)];
y=ones(N,1);
for iter1=1:N
    if rand<0.5
        y(iter1,1)=-1;
    end
end
disp(X);

% Separate into training and test sets (check: >> doc randperm)
ii = randperm(N);
Xtr = X(ii(1:N/2),:);
ytr = y(ii(1:N/2),:);
Xts = X(ii(N/2+1:N),:);
yts = y(ii(N/2+1:N),:);

% initialize weights
w = randn(3,1);
disp(w);

% Error correcting learning
eta = 0.001;
for iter=1:500
    j = ceil(rand*N/2);
    if ( ytr(j)*Xtr(j,:)*w < 0 )
        w = w + eta*ytr(j)*Xtr(j,:)';
    end
end

% Performance on test data
yhts = Xts*w;
disp([yts yhts])
disp(yts.*yhts);
%PercentageErro
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值