Vous êtes sur la page 1sur 6

PRIMEREXAMEN DE

APRENDIZAJE AUTOMTICO

Rodrigo Escobar Daz Guerrero


UAQ

k-NN
Se utiliz una base de datos que contiene las siguientes variables de entrada:
1 - fixed acidity
2 - volatile acidity
3 - citric acid
4 - residual sugar
5 - chlorides
6 - free sulfur dioxide
7 - total sulfur dioxide
8 - density
9 - pH
10 - sulphates
11 - alcohol

Y una salida censada por 3 expertos en vinos que daban una calificacin entre 0 y 10 (siendo 0
vinos muy malos y 10 vinos excelentes) la variable es llamada quality.
A lo largo de varias lecturas y pruebas se opt por tener los siguientes 6 datos de entrada como
importantes:
1
2
3
4
5
6

- volatile acidity
residual sugar
chlorides
-total sulfur dioxide
-pH
-alcohol

Teniendo cmo resultado las siguientes grficas:

Como datos iniciales se tomaron 1549 muestras y cmo banco de prueba existen 49 muestras.
Para calcular el mejor k se us en primera instancia el mtodo thumb
/2
El cual en este ejercicio es 27

Arrojando un error promedio del 5.7143 % y un error mximo del 20%

Bajando el nmero de k heursticamente se obtuvo que con un k = 11 se tienen resultados


similares.

Cdigo
clear; clc;
Dv = dataset('XLSFile','Vinos1_1.xls');
Dvp = dataset('XLSFile','pruebas.xls');
k=11;
figure(1)
gscatter(Dv.volatile_acidity,Dv.pH,round(Dv.quality))
xlabel('volatile acidity');
ylabel('Ph');
title('Muestra1');
figure(2)
gscatter(Dv.chlorides,Dv.residual_sugar,round(Dv.quality))
xlabel('chlorides');
ylabel('residual sugar');
title('Muestra2');
figure(3)
gscatter(Dv.total_sulfur_dioxide,Dv.alcohol,round(Dv.quality))
xlabel('total sulfur dioxide');
ylabel('alcohol');
title('Muestra3');
size(Dv);
s = size(Dvp);
%%CANTIDAD DE PRUEBAS
s=s(1);
for(i=1:1:s)
D1 = pdist2(Dv.volatile_acidity,Dvp.volatile_acidity,'euclidean'); %
euclidean distance
D1= [D1(:,i), Dv.quality];
%%ordenar en base a una columna
D1=sortrows(D1);
D1 = D1(1:k,2);
D1 = mode(D1);
%%Ph
D2 = pdist2(Dv.pH,Dvp.pH,'euclidean'); % euclidean distance
D2= [D2(:,i), Dv.quality];
%%ordenar en base a una columna
D2=sortrows(D2);
D2 = D2(1:k,2);
D2 = mode(D2);
%chlorides
D3 = pdist2(Dv.chlorides,Dvp.chlorides,'euclidean'); % euclidean distance
D3= [D3(:,i), Dv.quality];
%%ordenar en base a una columna
D3=sortrows(D3);
D3 = D3(1:k,2);
D3 = mode(D3);
%residual_sugar
D4 = pdist2(Dv.residual_sugar,Dvp.residual_sugar,'euclidean'); %
euclidean distance
D4= [D4(:,i), Dv.quality];
%%ordenar en base a una columna

D4=sortrows(D4);
D4 = D4(1:k,2);
D4 = mode(D4);
%total_sulfur_dioxide
D5 =
pdist2(Dv.total_sulfur_dioxide,Dvp.total_sulfur_dioxide,'euclidean'); %
euclidean distance
D5= [D5(:,i), Dv.quality];
%%ordenar en base a una columna
D5=sortrows(D5);
D5 = D5(1:k,2);
D5 = mode(D5);
%alcohol
D6 = pdist2(Dv.alcohol,Dvp.alcohol,'euclidean'); % euclidean distance
D6= [D6(:,i), Dv.quality];
%%ordenar en base a una columna
D6=sortrows(D6);
D6 = D6(1:k,2);
D6 = mode(D6);
%Dato final
Df = [D1 D2 D3 D4 D5 D6];
%%se alamecenan los valores en un vector
Df2(i,1) = mode(Df);
end

error = (Dvp.quality - Df2)*10;


errorp = mean(error)
figure(4)
plot(error)
xlabel('Nmero de Muestra');
ylabel('Porcentaje de Error');
title('Error %');
%prompt = 'Cual es el valor nuevo en forma de matrix? ';
%result = input(prompt)
%DvNew = [Dv;celldataset(result)];
%size(DvNew)

Referencias
P. Cortez, A. Cerdeira, F. Almeida, T. Matos and J. Reis. Modeling wine
preferences by data mining from physicochemical properties. In Decision
Support Systems, Elsevier, 47(4):547-553. ISSN: 0167-9236.
Pginas web (ltima revisin 06-11-14)
http://waterhouse.ucdavis.edu/whats-in-wine/fixed-acidity
http://onlinelibrary.wiley.com/doi/10.1002/jsfa.2740251105/abstract
http://oldemarrodriguez.com/yahoo_site_admin/assets/docs/Presentaci%C3%B3
n_-_KNN.20085205.pdf

Vous aimerez peut-être aussi