avatar
Untitled

Guest 103 23rd Apr, 2024

MARKUP 2.55 KB
                                           
                         % 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
Recent Pastes
Ta strona używa plików cookie w celu usprawnienia i ułatwienia dostępu do serwisu oraz prowadzenia danych statystycznych. Dalsze korzystanie z tej witryny oznacza akceptację tego stanu rzeczy.
Wykorzystywanie plików Cookie
Jak wyłączyć cookies?
ROZUMIEM