Colección de citas famosas - Colección de poesías - Algoritmo del diccionario MATLAB

Algoritmo del diccionario MATLAB

función [ccr, pgroupt]=knnt(x, group, K, dist, xt, groupt)

#

# OBJETIVO: usar

# K más cercano Método vecino

#

#Principio: KNN es un método de clasificación supervisado, determinista y no paramétrico

#. Utiliza la regla de la mayoría para

# asignar nuevos objetos a una clase.

#Supongamos que el número de objetos en cada clase

# también es similar.

#Sin suposiciones sobre la distribución de datos

#Matriz de varianza-covarianza para cada clase.

#En los siguientes casos, no hay límite en el número de variables

#Usa distancia euclidiana.

#Sin embargo, cuando se utiliza el coeficiente de correlación

#El número de variables debe ser mayor que 1.

# Referencias: Massart D. L., Vandeginste B. G. M., Deming S. N.

# Michotte Y. and Kaufman L., Chemometrics: A Textbook,

p>

#Capítulo 23, págs. 395-397, Elsevier Science Publisher B. V.,

#Amsterdam 1988.

#

# ENTRADA: x: (mxn) matriz de datos de m objetos y n variables,

# Contiene varias categorías de muestras (conjunto de entrenamiento)

# grupo: (MX 1) etiqueta de

#conjunto de entrenamiento

# K: número entero, número de vecinos más cercanos

# dist : entero,

# = 1, distancia euclidiana

# = 2, coeficiente de correlación, (número de variables gt1)

# XT: (mtxn) Datos matriz que contiene objetos mt y n variables

#(conjunto de prueba o desconocido)

# groupt: (MTX 1) Vector de columna que marca objetos mt

p>

# Conjunto de prueba

#- gt; Si el nuevo objeto es desconocido, ingrese [].

#

#Salida: ccr: escalar, tasa de clasificación correcta

# pgroupt: vector de fila, etiqueta de clase prevista del conjunto de prueba

# 0 significa que el objeto no pertenece a ninguna categoría

#Categoría

#

#Subrutina: sortlab.m: Clasificar vector de etiqueta de grupo

p>

#

#Autor: Wu Wen

# Copyright de chemo AC (c) 1997

# FABI, Universidad Libre de Bruselas

#Laarbeeklaan 103 1090 Jette

#

#Versión: 1.1 (28/02/1998)

#

#Test: Andrea Candolfi

#

función [ccr, pgroupt]=knnt(x,group,K,dist,xt,groupt);

p>

Si nargin==5, groupt =[]; porcentaje final del objeto desconocido

Distancia = variable de cambio de porcentaje de distancia clara

if tamaño(grupo, 1) >1,

group = group ';Cambiar vector de columna a vector de fila

groupt = groupt ';Cambiar vector de columna a vector de fila

End; p>

[m, n] = tamaño (x); porcentaje del tamaño del conjunto de entrenamiento

Si distancia == 2 ampn lt2, error ('El número de variables debe ser gt1'), fin viene Verifique el número de variables cuando use el coeficiente de correlación

[mt, n] = size(XT porcentaje del tamaño del conjunto de prueba

dis = zero(mt, m); porcentaje del valor de distancia inicial (matriz cero)

Calcular la distancia para cada objeto del conjunto de prueba

Para i=1: mt

Para cada objeto del conjunto de entrenamiento y cada j = 1 entre objetos del conjunto de prueba: m

Si distancia==1

dis(i,j)=(xt(i,:)-x(j,: )*( xt(i,:)-x(j,:)'; distancia euclidiana

Otros

r=corrcoef(xt(i,:)', x(j,:) ; Matriz de coeficientes de correlación

r=r(1, 2); Coeficiente de correlación

dis(i, j)= 1-r * 1 - Potencia del coeficiente de correlación

r=r(1, 2); p>

Fin

Fin

Fin

Porcentaje de vecinos más cercanos encontrados

lab=zeros (1, mt); porcentaje del valor inicial del laboratorio

Para cada objeto de prueba, I = 1: mt

[a, b]=sort(dis(i,) ; Distancia de clasificación

b=b(find(a lt= a(K))); encontrar índice del vecino más cercano

b = grupo(b); objeto vecino más cercano

[ng, l group] = sort lab(b); Cuente el número de objetos de cada clase en el vecino más cercano

a = find(ng = = max(ng)); objeto

Si longitud(a) = = 1 solo hay una clase

lab(I) = lgroup(a); etiqueta de clase

Otro

p>

lab(I)= 0; más de una clase

Fin

Fin

Calcular tasa de éxito

if ~isempty(groupt)

dif = groupt-lab; etiquetas de categorías previstas y etiquetas de categorías conocidas

Diferencia porcentual entre ticks

CCR = sum(dif = = 0)/mt; porcentaje de tasa de éxito

Fin

pgroupt = vector de salida de laboratorio

p>