avatar
Untitled

Guest 97 23rd Apr, 2024

MARKUP 2.52 KB
                                           
                         file = 'iris.data';
opts = delimitedTextImportOptions("NumVariables",5,'DataLines',[1,Inf],"Delimiter",",","VariableNames",["sepalLength","sepalWidth","petalLength","petaWidth","Species"],"VariableTypes",["double","double","double","double","string"],"EmptyLineRule","skip","ConsecutiveDelimitersRule","join","LeadingDelimitersRule","ignore");

url = 'https://archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data';
data = readtable(file, opts);
%data = textscan(data, '%f%f%f%f%C','Delimiter',',');
%data = table(data{1}, data{2}, data{3}, data{4}, data{5},"VariableNames",{"sepalLength","sepalWidth","petalLength","petaWidth","species"});
data.Species = categorical(data.Species);
data.Species = double(data.Species);
inputData = table2array(data(:, 1:4));
outputData = data.Species;

rng(1);
numData = size(inputData, 1);
idx = randperm(numData);
numTrain = round(numData * 0.7);
trainInput = inputData(idx(1:numTrain), :);
trainOutput = outputData(idx(1:numTrain));
testInput = inputData(idx(numTrain+1:end), :);
testOutput = outputData(idx(numTrain+1:end));

trainData = [trainInput, trainOutput];
testData = [testInput, testOutput];

inputRange = minmax(inputData');
numMFs = 3;
mfType = 'gaussmf';

fisOptions = genfisOptions('GridPartition');
fisOptions.NumMembershipFunctions = repmat(numMFs,1,size(inputData, 2));
fisOptions.InputMembershipFunctionType = mfType;
fisOptions.OutputMembershipFunctionType = 'linear';

fis = genfis(inputData, outputData, fisOptions, 'FISType','mamdani');
maxEpochs = 100;
trainingOptions = anfisOptions('InitialFIS', fis, 'EpochNumber', maxEpochs, 'DisplayANFISInformation',false,'DisplayErrorValues',true,'DisplayStepSize',false,'DisplayFinalResults',false,'ValidationData',testData);

[trainedFis, trainError, ~,chkFIS,chkError] = anfis(trainData, trainingOptions);

yPred = evalfis(trainedFis, testInput);
yPred = round(yPred);
confMatrix = confusionmat(testOutput, yPred);

accuracy = sum(diag(confMatrix)) / sum(confMatrix, 'all') * 100;
fprintf('Macierz bledu:\n');
disp(confMatrix);
fprintf('Skutecznosc klasyfikacji: %.2f%%\n', accuracy);

figure;
plot(trainError, 'LineWidtth',2);
hold on;
plot(chkError, 'LineWidtth',2);
grid on;
hold off;
                      
                                       
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