Main Content

Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

ClassificationKNN

-Clasificación de vecinos más cercanosk

Descripción

es un modelo de clasificación de vecino más cercano en el que puede modificar tanto la métrica de distancia como el número de vecinos más cercanos.ClassificationKNN Dado que un clasificador almacena datos de entrenamiento, puede usar el modelo para calcular las predicciones de resustitución.ClassificationKNN Como alternativa, utilice el modelo para clasificar nuevas observaciones mediante el método.predict

Creación

Cree un modelo utilizando .ClassificationKNNfitcknn

Propiedades

expandir todo

Propiedades knN

Algoritmo de desempate utilizado por predict cuando varias clases tienen el mismo costo más pequeño, especificado como uno de los siguientes:

  • — Utilice el índice más pequeño entre los grupos atados.'smallest'

  • — Utilice la clase con el vecino más cercano entre los grupos empatados.'nearest'

  • — Utilice un desempate aleatorio entre los grupos empatados.'random'

De forma predeterminada, los vínculos se producen cuando varias clases tienen el mismo número de puntos más cercanos entre los vecinos más cercanos. se aplica cuando es .kBreakTiesIncludeTiesfalse

Cambiar usando notación de puntos: .BreakTiesmdl.BreakTies = newBreakTies

Métrica de distancia, especificada como un vector de caracteres o un identificador de función. Los valores permitidos dependen de la propiedad.NSMethod

NSMethodMétrica de distancia permitida
'exhaustive'Cualquier métrica de distancia deExhaustiveSearcher
'kdtree'O'cityblock''chebychev''euclidean''minkowski'

En la tabla siguiente se enumeran las métricas de distancia.ExhaustiveSearcher

ValorDescripción
'cityblock'Distancia del bloque de la ciudad.
'chebychev'Distancia de Chebychev (diferencia máxima de coordenadas).
'correlation'Uno menos la correlación lineal de la muestra entre observaciones (tratadas como secuencias de valores).
'cosine'Uno menos el coseno del ángulo incluido entre las observaciones (tratados como vectores).
'euclidean'Distancia euclidiana.
'hamming'Distancia de hamming, el porcentaje de coordenadas que difieren.
'jaccard'Uno menos el coeficiente Jaccard, el porcentaje de coordenadas distintas de cero que difieren.
'mahalanobis'Distancia Mahalanobis, calculada utilizando una matriz de covarianza definida positiva.C El valor predeterminado de es la matriz de covarianza de ejemplo de , calculado por .CXnancov(X) Para especificar un valor diferente para , establezca la propiedad de usar notación de puntos.CDistParametermdl
'minkowski'Distancia de Minkowski. El exponente predeterminado es .2 Para especificar un exponente diferente, establezca la propiedad de usar la notación de puntos.DistParametermdl
'seuclidean'Distancia euclidiana estandarizada. Cada diferencia de coordenadas entre y un punto de consulta se escala, lo que significa dividido por un valor de escala.XS El valor predeterminado de es la desviación estándar calculada desde , .SXS = nanstd(X) Para especificar otro valor para , establezca la propiedad de usar notación de puntos.SDistParametermdl
'spearman'Uno menos la correlación de rango de Spearman de la muestra entre las observaciones (tratadas como secuencias de valores).
@distfun

Mango de función de distancia. distfun tiene la forma donde

function D2 = distfun(ZI,ZJ) % calculation of distance ...

  • es un vector -por- que contiene una fila de o .ZI1NXY

  • es una matriz -por- que contiene varias filas de o .ZJM2NXY

  • es un vector -por- de distancias, y es la distancia entre las observaciones y .D2M21D2(k)ZIZJ(k,:)

Para obtener más información, consulte .Métricas de distancia

Cambiar usando notación de puntos: .Distancemdl.Distance = newDistance

Si es , puede utilizar la notación de puntos para cambiar solo para las métricas , , , y .NSMethod'kdtree'Distance'cityblock''chebychev''euclidean''minkowski'

Tipos de datos: char | function_handle

Función de ponderación de distancia, especificada como uno de los valores de esta tabla.

ValorDescripción
'equal'Sin ponderación
'inverse'El peso es 1/distance
'squaredinverse'El peso es 1/distance2
@fcnfcn es una función que acepta una matriz de distancias no negativas y devuelve una matriz del mismo tamaño que contiene pesos de distancia no negativos. Por ejemplo, es equivalente a .'squaredinverse'@(d)d.^(–2)

Cambiar usando notación de puntos: .DistanceWeightmdl.DistanceWeight = newDistanceWeight

Tipos de datos: char | function_handle

Parámetro para la métrica de distancia, especificado como uno de los valores descritos en esta tabla.

Métrica de distanciaParámetro
'mahalanobis'Matriz de covarianza definida positivaC
'minkowski'Exponente de distancia Minkowski, un escalar positivo
'seuclidean'Vector de valores de escala positivos con longitud igual al número de columnas deX

Para cualquier otra métrica de distancia, el valor de debe ser .DistParameter[]

Puede modificar mediante la notación de puntos: .DistParametermdl.DistParameter = newDistParameter Sin embargo, si es o , entonces no se puede modificar .Distance'mahalanobis''seuclidean'DistParameter

Tipos de datos: single | double

Empate indicador de inclusión que indica si predict incluye todos los vecinos cuyos valores de distancia son iguales a la distancia más pequeña, especificada como o .kfalsetrue Si es , incluye todos estos vecinos.IncludeTiestruepredict De lo contrario, utiliza exactamente vecinos (consulte la propiedad).predictkBreakTies

Cambiar usando notación de puntos: .IncludeTiesmdl.IncludeTies = newIncludeTies

Tipos de datos: logical

Esta propiedad es de solo lectura.

Método de búsqueda de vecino más cercano, especificado como .'kdtree''exhaustive'

  • : crea y utiliza un árbol d para encontrar los vecinos más cercanos.'kdtree'K

  • : utiliza el algoritmo de búsqueda exhaustivo.'exhaustive' Al predecir la clase de un nuevo punto, el software calcula los valores de distancia de todos los puntos para buscar los vecinos más cercanos.xnewXxnew

El valor predeterminado es cuando tiene o menos columnas, no es disperso y la métrica de distancia es un tipo.'kdtree'X10X'kdtree' De lo contrario, el valor predeterminado es .'exhaustive'

Número de vecinos más cercanos que se utilizan para clasificar cada punto durante la predicción, especificado como un valor entero positivo.X

Cambiar usando notación de puntos: .NumNeighborsmdl.NumNeighbors = newNumNeighbors

Tipos de datos: single | double

Otras propiedades de clasificación

Esta propiedad es de solo lectura.

Los índices predictores categóricos, especificados como un vector de enteros positivos. contiene valores de índice correspondientes a las columnas de los datos predictores que contienen predictores categóricos.CategoricalPredictors Si ninguno de los predictores es categórico, esta propiedad está vacía ( ).[]

Tipos de datos: double

Esta propiedad es de solo lectura.

Nombres de las clases de los datos de entrenamiento con duplicados eliminados, especificados como una matriz categórica o de caracteres, un vector lógico o numérico o una matriz de celdas de vectores de caracteres. tiene el mismo tipo de datos que .YClassNamesY (The software treats string arrays as cell arrays of character vectors.)

Tipos de datos: categorical | char | logical | single | double | cell

Coste de la clasificación errónea de un punto, especificado como una matriz cuadrada. es el costo de clasificar un punto en clase si su clase verdadera es (es decir, las filas corresponden a la clase verdadera y las columnas corresponden a la clase predicha).Cost(i,j)ji El orden de las filas y columnas en corresponde al orden de las clases en .CostClassNames El número de filas y columnas en es el número de clases únicas en la respuesta.Cost

De forma predeterminada, if , y if .Cost(i,j) = 1i ~= jCost(i,j) = 0i = j En otras palabras, el coste es para la clasificación correcta y para la clasificación incorrecta.01

Cambiar una matriz mediante notación de puntos: .Costmdl.Cost = costMatrix

Tipos de datos: single | double

Esta propiedad es de solo lectura.

Nombres de predictorexpandido expandido, especificados como una matriz de celdas de vectores de caracteres.

Si el modelo utiliza codificación para variables categóricas, incluye los nombres que describen las variables expandidas.ExpandedPredictorNames De lo contrario, es lo mismo que .ExpandedPredictorNamesPredictorNames

Tipos de datos: cell

Esta propiedad es de solo lectura.

Parámetros utilizados en el entrenamiento del modelo, especificados como una estructura.ClassificationKNN

Tipos de datos: struct

Esta propiedad es de solo lectura.

Predictor significa, especificado como un vector numérico de longitud .numel(PredictorNames)

Si no estandariza al entrenar el modelo utilizando , entonces está vacío ( ).mdlfitcknnMu[]

Tipos de datos: single | double

Esta propiedad es de solo lectura.

Número de observaciones utilizadas en el entrenamiento del modelo, especificado como un escalar entero positivo.ClassificationKNN Este número puede ser menor que el número de filas de los datos de entrenamiento porque las filas que contienen valores no forman parte del ajuste.NaN

Tipos de datos: double

Esta propiedad es de solo lectura.

Nombres de variables predictoras, especificados como una matriz de celdas de vectores de caracteres. Los nombres de las variables están en el mismo orden en el que aparecen en los datos de entrenamiento.X

Tipos de datos: cell

Probabilidades anteriores para cada clase, especificadas como un vector numérico. El orden de los elementos en corresponde al orden de las clases en .PriorClassNames

Añadir o cambiar un vector mediante notación de puntos: .Priormdl.Prior = priorVector

Tipos de datos: single | double

Esta propiedad es de solo lectura.

Nombre de la variable de respuesta, especificado como vector de caracteres.

Tipos de datos: char

Esta propiedad es de solo lectura.

Filas de los datos originales utilizados para ajustar elX ClassificationKNN modelo, especificado como vector lógico. Esta propiedad está vacía si se utilizan todas las filas.

Tipos de datos: logical

Transformación de puntuación, especificada como un vector de caracteres o un identificador de función.

Esta tabla resume los vectores de caracteres disponibles.

ValorDescripción
'doublelogit'1/(1 +e–2x)
'invlogit'log( / (1 – ))xx
'ismax'Establece la puntuación de la clase con la puntuación más alta en , y establece las puntuaciones de todas las demás clases en10
'logit'1/(1 +ex)
O'none''identity'(sin transformación)x
'sign'–1 para <0 0 para 0 0 para 0 1 para > 0x
x
x
'symmetric'2 – 1x
'symmetricismax'Establece la puntuación de la clase con la puntuación más alta en , y establece las puntuaciones de todas las demás clases en1–1
'symmetriclogit'2/(1 +ex) – 1

Para una función o una función que defina, utilice su identificador de función para la transformación de puntuación.MATLAB® El identificador de función debe aceptar una matriz (las puntuaciones originales) y devolver una matriz del mismo tamaño (las puntuaciones transformadas).

Cambiar usando notación de puntos: .ScoreTransformmdl.ScoreTransform = newScoreTransform

Tipos de datos: char | function_handle

Esta propiedad es de solo lectura.

Desviaciones estándar predictoras, especificadas como un vector numérico de longitud.numel(PredictorNames)

Si no estandariza las variables predictoras durante el entrenamiento, entonces está vacía ( ).Sigma[]

Tipos de datos: single | double

Esta propiedad es de solo lectura.

Pesos de observación, especificados como un vector de valores no negativos con el mismo número de filas que .Y Cada entrada especifica la importancia relativa de la observación correspondiente en .WY

Tipos de datos: single | double

Esta propiedad es de solo lectura.

Datos predictores no estandarizados, especificados como una matriz numérica. Cada columna de representa un predictor (variable), y cada fila representa una observación.X

Tipos de datos: single | double

Esta propiedad es de solo lectura.

Etiquetas de clase, especificadas como una matriz categórica o de caracteres, un vector lógico o numérico o una matriz de celdas de vectores de caracteres. Cada valor en es la etiqueta de clase observada para la fila correspondiente en .YX

tiene el mismo tipo de datos que los datos utilizados para entrenar el modelo.YY (The software treats string arrays as cell arrays of character vectors.)

Tipos de datos: single | double | logical | char | cell | categorical

Propiedades de optimización de hiperparámetros

Esta propiedad es de solo lectura.

Optimización de validación cruzada de hiperparámetros, especificada como un objeto o una tabla de hiperparámetros y valores asociados.BayesianOptimization Esta propiedad no está vacía cuando el argumento de par nombre-valor no está vacío al crear el modelo mediante .'OptimizeHyperparameters'fitcknn El valor depende de la configuración del argumento de par nombre-valor al crear el modelo:'HyperparameterOptimizationOptions'

  • (predeterminado) — Objeto de clase'bayesopt'BayesianOptimization

  • o — Tabla de hiperparámetros utilizados, valores de función objetivo observados (pérdida de validación cruzada) y rango de observaciones de menor (mejor) a mayor (peor)'gridsearch''randomsearch'

Funciones del objeto

compareHoldoutCompare accuracies of two classification models using new data
crossvalCross-validated k-nearest neighbor classifier
edgeEdge of k-nearest neighbor classifier
lossLoss of k-nearest neighbor classifier
Margin of k-nearest neighbor classifier
predictPredict labels using k-nearest neighbor classification model
resubEdgeEdge of k-nearest neighbor classifier by resubstitution
resubLossLoss of k-nearest neighbor classifier by resubstitution
resubMarginMargin of k-nearest neighbor classifier by resubstitution
resubPredictPredict resubstitution labels of k-nearest neighbor classifier
MargenMargin of k-nearest neighbor classifier

Ejemplos

contraer todo

Entrene a un clasificador de vecinos más cercano para los datos de iris de Fisher, donde, el número de vecinos más cercanos en los predictores, es 5.kk

Cargue los datos del iris de Fisher.

load fisheriris X = meas; Y = species;

es una matriz numérica que contiene cuatro medidas de pétalos para 150 iris. es una matriz de células de vectores de caracteres que contiene las especies de iris correspondientes.XY

Entrena a un clasificador de vecinos 5 más cercano. Estandarizar los datos del predictor no categórico.

Mdl = fitcknn(X,Y,'NumNeighbors',5,'Standardize',1)
Mdl =    ClassificationKNN              ResponseName: 'Y'     CategoricalPredictors: []                ClassNames: {'setosa'  'versicolor'  'virginica'}            ScoreTransform: 'none'           NumObservations: 150                  Distance: 'euclidean'              NumNeighbors: 5     Properties, Methods  

es un clasificador entrenado, y algunas de sus propiedades aparecen en la ventana de comandos.MdlClassificationKNN

Para acceder a las propiedades de , utilice la notación de puntos.Mdl

Mdl.ClassNames
ans = 3x1 cell array
    {'setosa'    }
    {'versicolor'}
    {'virginica' }

Mdl.Prior
ans = 1×3

    0.3333    0.3333    0.3333

contiene las probabilidades anteriores de la clase, que puede especificar mediante el argumento de par nombre-valor en .Mdl.Prior'Prior'fitcknn El orden de las probabilidades anteriores de la clase corresponde al orden de las clases en .Mdl.ClassNames De forma predeterminada, las probabilidades anteriores son las respectivas frecuencias relativas de las clases en los datos.

También puede restablecer las probabilidades anteriores después del entrenamiento. Por ejemplo, establezca las probabilidades anteriores en 0,5, 0,2 y 0,3, respectivamente.

Mdl.Prior = [0.5 0.2 0.3];

Puede pasar a etiquetar nuevas medidas o validar cruzadamente el clasificador.Mdlpredictcrossval

Sugerencias

  • La función reduce el tamaño de la mayoría de los modelos de clasificación quitando las propiedades de datos de entrenamiento y cualquier otra propiedad que no sea necesaria para predecir las etiquetas de las nuevas observaciones.compact Dado que los modelos de clasificación de vecinos más cercanos requieren que todos los datos de entrenamiento predigan etiquetas, no se puede reducir el tamaño de un modelo.kClassificationKNN

Funcionalidad alternativa

encuentra a los vecinos más cercanos de puntos. encuentra todos los puntos dentro de una distancia fija.knnsearchkrangesearch Puede utilizar estas funciones para la clasificación, como se muestra en .Clasificar datos de consulta Si desea realizar la clasificación, el uso de modelos puede ser más conveniente porque puede entrenar un clasificador en un paso (usando ) y clasificar en otros pasos (usando ).ClassificationKNNfitcknnpredict Como alternativa, puede entrenar un modelo de clasificación de vecino sin vecinos mediante una de las opciones de validación cruzada de la llamada a .kfitcknn En este caso, devuelve un objeto de modelo validado entre referencias cruzadas.fitcknnClassificationPartitionedModel

Capacidades ampliadas

Introducido en R2012a