% Wczytanie danych filename = 'ścieżka_do_pliku/iris.data'; opts = delimitedTextImportOptions("NumVariables", 5, ... "DataLines", [1, Inf], ... "Delimiter", ",", ... "VariableTypes", ["double", "double", "double", "double", "categorical"], ... "VariableNames", ["sepal_length", "sepal_width", "petal_length", "petal_width", "species"]); irisData = readtable(filename, opts); % Konwersja etykiet gatunków na liczby irisData.species = grp2idx(irisData.species); % Podział danych na cechy i etykiety inputData = irisData(:, 1:4); outputData = irisData.species;% Wyświetlenie pierwszych kilku wierszy danych head(irisData) % Podział danych cv = cvpartition(size(inputData,1),'HoldOut',0.3); idx = cv.test; % Zbiór uczący trainInput = inputData(~idx,:); trainOutput = outputData(~idx,:); % Zbiór testowy testInput = inputData(idx,:); testOutput = outputData(idx,:); % Przygotowanie danych dla ANFIS trainFIS = [trainInput{:,:}, table2array(trainOutput)]; % Tworzenie początkowej struktury FIS numMFs = 2; mfType = 'gaussmf'; fis = genfis1(trainFIS, numMFs, mfType); % Uczenie modelu ANFIS numEpochs = 100; [trainedFis, trainError] = anfis(trainFIS, fis, numEpochs); % Testowanie ANFIS testFIS = [testInput{:,:}, table2array(testOutput)]; predicted = evalfis(testFIS(:,1:4), trainedFis); % Konwersja wyników i ocena predictedLabels = round(predicted); confMat = confusionmat(testFIS(:,5), predictedLabels); accuracy = sum(diag(confMat)) / sum(confMat(:)); disp(['Accuracy: ', num2str(accuracy * 100), '%']);