Untitled
Guest 204 23rd Apr, 2024
% Pobranie danych zbioru Iris
url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data';
opts = delimitedTextImportOptions("NumVariables", 5, ...
"DataLines", [1, Inf], ...
"Delimiter", ",", ...
"VariableNames", ["SepalLength", "SepalWidth", "PetalLength", "PetalWidth", "Species"], ...
"VariableTypes", ["double", "double", "double", "double", "categorical"], ...
"EmptyLineRule", "skip", ...
"ConsecutiveDelimitersRule", "join", ...
"LeadingDelimitersRule", "ignore");
irisData = readtable(url, opts);
% Konwersja kategorii na liczby dla klasyfikacji
irisData.Species = grp2idx(irisData.Species);
% Rozdzielenie danych na wejściowe i wyjściowe
inputData = irisData(:, 1:4);
outputData = irisData(:, 5);
% Losowy podział danych na zestaw uczący i testujący
cv = cvpartition(size(inputData, 1), 'HoldOut', 0.3);
idxTrain = training(cv);
idxTest = test(cv);
trainInput = table2array(inputData(idxTrain, :));
trainOutput = table2array(outputData(idxTrain, :));
testInput = table2array(inputData(idxTest, :));
testOutput = table2array(outputData(idxTest, :));
% Parametry ANFIS
numMFs = 3;
mfType = 'gaussmf'; % Typ funkcji przynależności: gaussowska
% Tworzenie początkowego systemu rozmytego
fis = genfis(trainInput, trainOutput, 'NumMFs', numMFs, 'MFType', mfType);
% Opcje trenowania
anfisOptions = anfisOptions('InitialFIS', fis, 'EpochNumber', 100, 'DisplayANFISInformation', true, 'DisplayErrorValues', true);
% Trenowanie systemu ANFIS
[trainedFIS, trainError] = anfis([trainInput, trainOutput], anfisOptions);
% Ocena modelu na zbiorze testowym
yPred = evalfis(trainedFIS, testInput);
yPred = round(yPred); % Zaokrąglenie, aby uzyskać klasy
confMatrix = confusionmat(testOutput, yPred);
% Wyświetlenie macierzy pomyłek i błędów
disp('Macierz pomyłek:');
disp(confMatrix);
% Wykres błędu
figure;
plot(trainError, 'LineWidth', 2);
title('Błąd trenowania ANFIS');
xlabel('Numer epoki');
ylabel('Błąd średniokwadratowy (MSE)');
legend('Błąd trenowania');
grid on;
To share this paste please copy this url and send to your friends
RAW Paste Data