感知机 MATLAB实现(数据+代码)

感知机 MATLAB实现(数据+代码)

1.数据如图片所示:(命名为data.xlsx)



2.代码如下:

clear;clc;
%% 载入数据
data = xlsread('data.xlsx');
%% 绘制数据点
sample = data(:,1:2); % 每一行代表一个数据点
label = data(:,end);
draw(sample, label)
hold on
%% 初始化w,b,alpha
w = [-1,-2];
b = 2;
alpha = 1;  % learning rate
%%  更新 w,b
while 1
    [idx_misclass, counter] = class(sample, label, w, b);    
    if (counter~=0)
        R = unidrnd(counter);
        w = w + alpha * sample(idx_misclass(R),:) * label(idx_misclass(R));
        b = b + alpha * label(idx_misclass(R));   
    else
        break
    end
end
%% 绘制线性分类器
x1 = 1:0.01:10;
x2 = (-b-w(1).*x1)./w(2);
plot(x1, x2)

function [idx_misclass, counter] = class(sample, label, w, b)
    counter = 0;
    idx_misclass = [];
    for i=1:length(label)
        if (label(i)*(w*sample(i,:)'+b)<=0)
            idx_misclass = [idx_misclass i];
            counter = counter + 1;        
        end   
    end
end
function draw(sample, label)
    idx_pos = find(label==1);
    idx_neg = find(label~=1);
    plot(sample(idx_pos, 1), sample(idx_pos, 2),'ro')
    hold on
    plot(sample(idx_neg, 1), sample(idx_neg, 2),'b*')
    axis([0 10 0 10])
    grid on
end



3. 结果如下:






  • 4
    点赞
  • 63
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
多层感知机(Multilayer Perceptron,MLP)是一种经典的前馈神经网络模型,可用于分类和回归问题。在MATLAB中,可以使用神经网络工具箱中的函数和类来实现多层感知机。 对于分类问题,可以使用MATLAB的`patternnet`函数来创建一个多层感知机模型。然后,可以使用`train`函数来训练模型,并使用`sim`函数来进行预测。以下是一个简单的多层感知机MATLAB实现的示例代码: ```matlab % 创建多层感知机模型 net = patternnet(hiddenSizes); % 设置训练参数 net.trainParam.epochs = 100; % 训练迭代次数 net.trainParam.lr = 0.01; % 学习率 % 加载训练数据和标签 load('trainData.mat'); load('trainLabel.mat'); % 训练模型 net = train(net, trainData, trainLabel); % 加载测试数据 load('testData.mat'); % 进行预测 predictedLabel = sim(net, testData); % 输出预测结果 disp(predictedLabel); ``` 对于回归问题,可以使用MATLAB的`feedforwardnet`函数来创建一个多层感知机模型,并使用`trainlm`函数来训练模型。以下是一个简单的多层感知机MATLAB实现的示例代码: ```matlab % 创建多层感知机模型 net = feedforwardnet(hiddenSizes); % 设置训练参数 net.trainParam.epochs = 100; % 训练迭代次数 net.trainParam.lr = 0.01; % 学习率 % 加载训练数据和标签 load('trainData.mat'); load('trainLabel.mat'); % 训练模型 net = train(net, trainData, trainLabel); % 加载测试数据 load('testData.mat'); % 进行预测 predictedLabel = sim(net, testData); % 输出预测结果 disp(predictedLabel); ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值