Skip to content

Instantly share code, notes, and snippets.

@FrancescoBorzi
Created March 31, 2015 09:28
Show Gist options
  • Save FrancescoBorzi/043f7ef3239e7e16e439 to your computer and use it in GitHub Desktop.
Save FrancescoBorzi/043f7ef3239e7e16e439 to your computer and use it in GitHub Desktop.
Decision tree
% Abbiamo un dataset contenente 5300 records relativi a due
% specie di banane.
% Le prime due colonne di data(:, 1) e data(:, 2) rappresentano le caratteristiche di ogni
% banana, mentre la terza colonna data(:, 3) rappresenta la specie di appartenenza della banana,
% che può assumere valori 1 o 2.
% Pulisco l'ambiente
clear all;
% Carico il dataset
load banana;
% Assegno le etichette
xlabel('Feature 1');
ylabel('Feature 2');
% Numero totale di record (dimensione del dataset)
N = size(data, 1);
% Scelgo la dimensione del training set (dev'essere ovviamente inferiore
% alla dimensione totale N del dataset)
TrainingSetSize = 300;
% Grafico
gscatter(data(:, 1), data(:, 2), data(:, 3))
% fitctree(X,Y) restituisce un decision tree basato sulle variabili di
% input X (in questo caso le features delle banane) e la variabile di
% output Y (in questo caso la specie di appartenenza)
% costruisco il decision tree con il training set, cioè la prima metà
% del dataset
tree = fitctree(data(1:TrainingSetSize, 1:2), data(1:TrainingSetSize, 3));
% stampo
view(tree,'Mode','graph')
% utilizzo il decision tree ricavato con il trainig set dandogli in pasto il
% test set, cioè la seconda metà del dataset
prediction = predict(tree, data(TrainingSetSize+1:N, 1:2));
% matrice che confronta i risultati con i dati reali
matrix(:,1) = prediction;
matrix(:,2) = data(TrainingSetSize+1:N, 3);
% accuracy
TestSetSize = size(matrix, 1);
correct = 0;
for i = 1:TestSetSize
if matrix(i, 1) == matrix(i, 2)
correct = correct + 1;
end
end
wrong = TestSetSize - correct;
correct_percentage = correct/TestSetSize * 100;
wrong_percentage = wrong/TestSetSize * 100;
TrainingSet_percentage = TrainingSetSize / N * 100;
TestSet_percentage = TestSetSize / N * 100;
sprintf('Dimensione data set: %d (100 %%)\nDimensione training set: %d (%f %%)\nDimensione test set: %d (%f %%)\n\nTotale elementi classificati correttamente: %d (%f %%)\nTotale elementi classificati NON correttamente: %d (%f %%)\n', N, TrainingSetSize, TrainingSet_percentage, TestSetSize, TestSet_percentage, correct, correct_percentage, wrong, wrong_percentage)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment