神经网络matlab代码
时间: 2023-10-06 12:14:43 浏览: 47
以下是一个简单的神经网络 MATLAB 代码示例:
```matlab
% 初始化神经网络参数
input_layer_size = 2; % 输入层大小
hidden_layer_size = 3; % 隐藏层大小
num_labels = 2; % 输出层大小(分类数)
% 生成随机初始化参数
Theta1 = rand(hidden_layer_size, input_layer_size + 1);
Theta2 = rand(num_labels, hidden_layer_size + 1);
% 加载训练数据
data = load('data.txt');
X = data(:, 1:2);
y = data(:, 3);
% 将 y 转化为向量形式
Y = zeros(length(y), num_labels);
for i = 1:length(y)
Y(i, y(i)) = 1;
end
% 定义代价函数
function J = costFunction(X, Y, Theta1, Theta2)
m = size(X, 1);
a1 = [ones(m, 1) X];
z2 = a1 * Theta1';
a2 = [ones(size(z2, 1), 1) sigmoid(z2)];
z3 = a2 * Theta2';
h = sigmoid(z3);
J = 1 / m * sum(sum(-Y .* log(h) - (1 - Y) .* log(1 - h)));
end
% 定义 sigmoid 函数
function g = sigmoid(z)
g = 1 ./ (1 + exp(-z));
end
% 训练神经网络
options = optimset('MaxIter', 50);
lambda = 1;
fminunc(@(t)(costFunction(X, Y, Theta1, Theta2)), [Theta1(:); Theta2(:)], options);
% 预测新数据
function p = predict(Theta1, Theta2, X)
m = size(X, 1);
a1 = [ones(m, 1) X];
z2 = a1 * Theta1';
a2 = [ones(size(z2, 1), 1) sigmoid(z2)];
z3 = a2 * Theta2';
h = sigmoid(z3);
[~, p] = max(h, [], 2);
end
% 测试模型准确率
p = predict(Theta1, Theta2, X);
fprintf('Train Accuracy: %f\n', mean(double(p == y)) * 100);
```
请注意,这只是一个简单的神经网络实现,更复杂的模型需要更复杂的代码。此代码仅供参考。