Escolar Documentos
Profissional Documentos
Cultura Documentos
Utilizando o algoritmo de retropropagação consistiu em uma série de iterações para ajustar os pesos sinápticos
e biases. Os dados utilizados foram do conjunto de flores iris.
A rede foi configurada com uma camada oculta contendo 3 neurônios, a camada de saída também possui 3
neurônios, representando as 3 classes de espécies iris.
Durante o treinamento, os pesos sinápticos e biases foram ajustados a cada iteração com base nos erros de
saída e retropropagados através da rede.
Após o treinamento, a acurácia da rede foi avaliada e os resultados dos percentuais de acertos foram
calculados. Além disso, foi gerado um gráfico de dispersão das espécies iris, mostrando a distribuição dos
dados no espaço de entrada. Também foi gerada uma matriz de confusão, que apresenta a quantidade de
classificações corretas e incorretas para cada classe de espécie iris.
% Codificando as classes
Y_encoded = zeros(size(Y, 1), 3);
Y_encoded(strcmp(Y, 'setosa'), 1) = 1;
Y_encoded(strcmp(Y, 'versicolor'), 2) = 1;
Y_encoded(strcmp(Y, 'virginica'), 3) = 1;
1
X_norm = (X - min(X)) ./ (max(X) - min(X));
for k = 1:20
% Embaralhando os dados antes de dividir em treinamento e teste
idx = randperm(size(X_norm, 1));
X_shuffled = X_norm(idx, :);
Y_shuffled = Y_encoded(idx, :);
% Backward pass
outputError = output - Y_train;
outputDelta = outputError .* output .* (1 - output);
hiddenError = outputDelta * W2';
hiddenDelta = hiddenError .* hiddenOutput .* (1 - hiddenOutput);
2
% Atualização dos pesos e biases
W2 = W2 - learningRate * hiddenOutput' * outputDelta;
b2 = b2 - learningRate * sum(outputDelta);
W1 = W1 - learningRate * X_train' * hiddenDelta;
b1 = b1 - learningRate * sum(hiddenDelta);
end
% Calculando a acurácia
accuracy = sum(strcmp(predictedSpecies, trueSpecies)) / numel(trueClass);
accuracies(k) = accuracy;
3
Mínimo: 0.91111
Máximo: 1
Média: 0.96222
disp(weights_hidden);
disp(weights_output);
4
5