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 vecino más cercanok

Descripción

es un modelo de clasificación de vecino más cercano en el que puede alterar 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 reenvío.ClassificationKNN Alternativamente, utilice el modelo para clasificar las nuevas observaciones utilizando el método.Predecir

Creación

Cree un modelo utilizando.ClassificationKNNfitcknn

Propiedades

expandir todo

KNN Properties

Algoritmo de desempate utilizado por predict cuando varias clases tienen el mismo costo más pequeño, especificada como una de las siguientes:

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

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

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

De forma predeterminada, las relaciones 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 la notación de puntos:.BreakTiesmdl.BreakTies = newBreakTies

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

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

La siguiente tabla enumera las métricas de distancia.ExhaustiveSearcher

ValorDescripción
'cityblock'Distancia de bloque de ciudad.
'chebychev'Chebychev distancia (diferencia máxima de coordenadas).
'correlation'Uno menos la correlación lineal de muestra entre las observaciones (tratadas como secuencias de valores).
'cosine'Uno menos el coseno del ángulo incluido entre las observaciones (tratadas 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 de Mahalanobis, calculada utilizando una matriz de covarianza definida positiva.C El valor predeterminado de es la matriz de covarianza de ejemplo de, según lo calculado por.CXnancov(X) Para especificar un valor diferente para, establezca la propiedad de uso de notación de puntos.CDistParametermdl
'minkowski'Distancia Minkowski. El exponente predeterminado es.2 Para especificar un exponente diferente, establezca la propiedad de uso de notación de puntos.DistParametermdl
'seuclidean'Distancia euclidiana estandarizada. Cada diferencia de coordenada 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 a partir de,.SXS = nanstd(X) Para especificar otro valor para, establezca la propiedad de uso de notación de puntos.SDistParametermdl
'spearman'Uno menos la correlación de rango de Spearman de muestra entre las observaciones (tratadas como secuencias de valores).
@distfun

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

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

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

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

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

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

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

Si es así, puede usar 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 ponderaciones de distancia no negativas. Por ejemplo, equivale a.'squaredinverse'@(d)d.^(–2)

Cambiar usando la 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.

Distancia métricaParámetro
'mahalanobis'Matriz de covarianza definida positivaC
'minkowski'El exponente de distancia de Minkowski, un escalar positivo
'seuclidean'Vector de valores de escala positiva con una longitud igual al número de columnas deX

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

Puede alterar el uso de la notación de puntos:.DistParametermdl.DistParameter = newDistParameter Sin embargo, si es o, entonces usted no puede alterar.Distance'mahalanobis''seuclidean'DistParameter

Tipos de datos: single | double

Indicador de inclusión de empate 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 así, incluye todos estos vecinos.IncludeTiestruePredecir De lo contrario, utiliza exactamente vecinos (ver la propiedad).PredecirkBreakTies

Cambiar usando la 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 cualquiera o.'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 en para encontrar los vecinos más cercanos.xnewXxnew

El valor predeterminado es cuando tiene o menos columnas, no es escaso 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 en uso para clasificar cada punto durante la predicción, especificado como un valor entero positivo.X

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

Tipos de datos: single | double

Otras propiedades de clasificación

Esta propiedad es de solo lectura.

Índices predictores categóricos, especificados como un vector de enteros positivos. contiene valores de índice correspondientes a las columnas de los datos del predictor que contienen predictores categóricos.CategoricalPredictors Si ninguno de los predictores es categórico, entonces 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, Vector lógico o numérico, o 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

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

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

Cambiar una matriz utilizando la notación de puntos:.Costomdl.Cost = costMatrix

Tipos de datos: single | double

Esta propiedad es de solo lectura.

Nombres de predictores ampliados, especificados como una matriz de vectores de caracteres de celda.

Si el modelo utiliza codificación para variables categóricas, incluye los nombres que describen las variables expandidas.ExpandedPredictorNames De lo contrario, es el 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 usando, 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, especificadas como una matriz de vectores de caracteres. Los nombres de las variables están en el mismo orden en que aparecen en los datos de entrenamiento.X

Tipos de datos: cell

Probabilidades previas 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 utilizando la notación de puntos:.Priormdl.Prior = priorVector

Tipos de datos: single | double

Esta propiedad es de solo lectura.

Nombre de variable de respuesta, especificado como un 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 grande y establece las puntuaciones de todas las demás clases para10
'logit'1/(1 +ex)
O'none''identity'(sin transformación)x
'sign'– 1 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 grande y establece las puntuaciones de todas las demás clases para1–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 la 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.

Ponderaciones de observación, especificadas como un vector de valores no negativos con el mismo número de filas que.Y Cada entrada en 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, Vector lógico o numérico o 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, especificado 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 cuando se crea el modelo mediante.'OptimizeHyperparameters'fitcknn El valor depende de la configuración del argumento de par nombre-valor cuando se crea el modelo:'HyperparameterOptimizationOptions'

  • (valor predeterminado) — objeto de la clase'bayesopt'BayesianOptimization

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

Funciones del objeto

compareHoldoutCompare las precisiones de dos modelos de clasificación utilizando nuevos datos
crossvalEl clasificador de vecino más cercano con validación cruzadak
BordeBorde del clasificador de vecino más cercanok
lossPérdida del clasificador de vecino más cercanok
MargenMargen del clasificador de vecino más cercanok
PredecirPredecir etiquetas utilizando el modelo de clasificación de vecino más cercanok
resubEdgeBorde del clasificador de vecino más cercano mediante la representaciónk
resubLossLa pérdida del clasificador de vecino más cercano mediante la representaciónk
resubMarginMargen del clasificador de vecino más cercano mediante el reenvíok
resubPredictPredecir las etiquetas de reenvío del clasificador de vecino más cercanok

Ejemplos

contraer todo

Entrena un clasificador de vecino 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 de iris de Fisher.

load fisheriris X = meas; Y = species;

es una matriz numérica que contiene cuatro mediciones de pétalo para 150 iris. es una matriz celular de vectores de caracteres que contiene las especies de iris correspondientes.XY

Entrena a un clasificador 5-vecino más cercano. Estandarice los Datos predictores no categóricos.

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 previas de la clase, que puede especificar utilizando el argumento de par nombre-valor en.Mdl.Prior'Prior'fitcknn El orden de las probabilidades previas 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 de los datos.

También puede restablecer las probabilidades previas 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 para etiquetar nuevas mediciones o para realizar una validación cruzada del clasificador.Mdlpredictcrossval

Sugerencias

  • La función reduce el tamaño de la mayoría de los modelos de clasificación eliminando las propiedades de los 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 todos los datos de entrenamiento para predecir etiquetas, no puede reducir el tamaño de un modelo.kClassificationKNN

Funcionalidad alternativa

encuentra 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 (utilizando) y clasificarlo en otros pasos (utilizando).ClassificationKNNfitcknnPredecir Como alternativa, puede entrenar un modelo de clasificación de vecino más cercano mediante una de las opciones de validación cruzada en la llamada a.kfitcknn En este caso, devuelve un objeto de modelo validado de forma cruzada.fitcknnClassificationPartitionedModel

Capacidades ampliadas

Introducido en R2012a