单层感知机MATLAB代码
时间: 2024-06-13 16:02:24 浏览: 104
单层感知器MATLAB代码
单层感知机(Perceptron)是一种基本的人工神经网络模型,用于解决线性可分问题。在MATLAB中,你可以使用内置的`perceptron`函数或者自己编写代码实现。这里是一个简单的单层感知机的训练和预测示例:
```matlab
% 加载数据集(假设有一个二分类问题,数据存储在'X'和'y'变量中)
load('your_dataset.mat'); % 请替换为实际数据集
% 定义超参数
hidden_layer_size = 1; % 单个神经元的感知器
alpha = 0.01; % 学习率
max_epochs = 100; % 最大迭代次数
% 初始化权重矩阵
weights = randn(size(X,2), hidden_layer_size + 1);
% 假设y是二进制的,将0转换为-1
y = sign(y);
% 感知器训练函数
function [weights, error] = train_perceptron(X, y, weights, alpha, epochs)
for epoch = 1:epochs
for i = 1:size(X,1)
inputs = [ones(1, size(X,2)) X(i,:)]; % 添加偏置项
prediction = predict(inputs, weights); % 预测输出
if y(i) * prediction <= 0
weights = weights + alpha * inputs .* y(i); % 更新权重
end
end
error = mean(abs(y - predict(X, weights))); % 计算当前误差
end
end
% 预测函数
function output = predict(inputs, weights)
output = sign(inputs * weights(end:-1:2) + weights(1)); % 输出单元的计算
end
% 开始训练
[weights, error] = train_perceptron(X, y, weights, alpha, max_epochs);
% 预测新样本
new_data = [1; ... % 添加偏置项
your_new_data_vector]; % 替换为你要预测的新样本
predicted_class = predict(new_data, weights);
% 显示结果
fprintf('Predicted class: %d\n', predicted_class);
```
阅读全文