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.

fitcknn

Ajuste-clasificador de vecino más cercanok

Descripción

Mdl = fitcknn(Tbl,ResponseVarName) Devuelve un modelo de clasificación de vecino más cercano basado en las variables de entrada (también conocidas como predictores, características o atributos) en la tabla y la salida (respuesta).kTblTbl.ResponseVarName

Mdl = fitcknn(Tbl,formula) Devuelve un modelo de clasificación de vecino más cercano basado en las variables de entrada de la tabla. es un modelo explicativo de la respuesta y un subconjunto de variables predictoras en.kTblFórmulaTbl

Mdl = fitcknn(Tbl,Y) Devuelve un modelo de clasificación de vecino más cercano basado en las variables predictoras de la tabla y la matriz de respuesta.kTblY

ejemplo

Mdl = fitcknn(X,Y) Devuelve un modelo de clasificación de vecino más cercano basado en los datos y la respuesta del predictor.kXY

ejemplo

Mdl = fitcknn(___,Name,Value) se ajusta a un modelo con opciones adicionales especificadas por uno o más argumentos de par nombre-valor, utilizando cualquiera de las sintaxis anteriores. Por ejemplo, puede especificar el algoritmo de desempate, la métrica de distancia o las ponderaciones de observación.

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

Cargue el conjunto de 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 un clasificador de 3 vecinos más cercanos usando la métrica Minkowski. Para utilizar la métrica Minkowski, debe utilizar un buscador exhaustivo. Es una buena práctica estandarizar los Datos predictores no categóricos.

Mdl = fitcknn(X,Y,'NumNeighbors',3,...     'NSMethod','exhaustive','Distance','minkowski',...     'Standardize',1);

es un clasificador.MdlClassificationKNN

Puede examinar las propiedades de haciendo doble clic en la ventana espacio de trabajo.MdlMdl Se abrirá el editor de variables.

Entrena un clasificador de vecino más cercano usando la distancia Chi-cuadrada.k

Cargue el conjunto de datos de iris de Fisher.

load fisheriris X = meas;    % Predictors Y = species; % Response

El Chi-cuadrado distancia entre los puntos dimensionales y esjxz

<math display="block">
<mrow>
<mi>χ</mi>
<mo stretchy="false">(</mo>
<mi>x</mi>
<mo>,</mo>
<mi>z</mi>
<mo stretchy="false">)</mo>
<mo>=</mo>
<msqrt>
<mrow>
<mstyle displaystyle="true" scriptlevel="0">
<mrow>
<munderover>
<mrow>
<mo></mo>
</mrow>
<mrow>
<mi>j</mi>
<mo>=</mo>
<mn>1</mn>
</mrow>
<mrow>
<mi>J</mi>
</mrow>
</munderover>
<msub>
<mrow>
<mi>w</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
<msup>
<mrow>
<mo>(</mo>
<msub>
<mrow>
<mi>x</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
<mo>-</mo>
<msub>
<mrow>
<mi>z</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
<mo>)</mo>
</mrow>
<mrow>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</mstyle>
</mrow>
</msqrt>
<mo>,</mo>
</mrow>
</math>

Dónde

<math display="block">
<mrow>
<msub>
<mrow>
<mi>w</mi>
</mrow>
<mrow>
<mi>j</mi>
</mrow>
</msub>
</mrow>
</math>
es un peso asociado a la cota.j

Especifique la función de distancia de Chi-cuadrado. La función de distancia debe:

  • Tome una fila de, por ejemplo,, y la matriz.XxZ

  • Compare con cada fila de.xZ

  • Devuelve un vector de longitudD

    <math display="block">
    <mrow>
    <msub>
    <mrow>
    <mi>n</mi>
    </mrow>
    <mrow>
    <mi>z</mi>
    </mrow>
    </msub>
    </mrow>
    </math>
    Dónde
    <math display="block">
    <mrow>
    <msub>
    <mrow>
    <mi>n</mi>
    </mrow>
    <mrow>
    <mi>z</mi>
    </mrow>
    </msub>
    </mrow>
    </math>
    es el número de filas de.Z Cada elemento de es la distancia entre la observación correspondiente y las observaciones correspondientes a cada fila de.DxZ

chiSqrDist = @(x,Z,wt)sqrt((bsxfun(@minus,x,Z).^2)*wt);

Este ejemplo utiliza ponderaciones arbitrarias para la ilustración.

Entrena un clasificador de 3 vecinos más cercano. Es una buena práctica estandarizar los Datos predictores no categóricos.

k = 3; w = [0.3; 0.3; 0.2; 0.2]; KNNMdl = fitcknn(X,Y,'Distance',@(x,Z)chiSqrDist(x,Z,w),...     'NumNeighbors',k,'Standardize',1);

es un clasificador.KNNMdlClassificationKNN

Cross valida el clasificador KNN usando la validación cruzada por defecto de 10 veces. Examine el error de clasificación.

rng(1); % For reproducibility CVKNNMdl = crossval(KNNMdl); classError = kfoldLoss(CVKNNMdl)
classError = 0.0600 

es un clasificador.CVKNNMdlClassificationPartitionedModel El error de clasificación de 10 veces es del 4%.

Compare el clasificador con uno que utilice un esquema de ponderación diferente.

w2 = [0.2; 0.2; 0.3; 0.3]; CVKNNMdl2 = fitcknn(X,Y,'Distance',@(x,Z)chiSqrDist(x,Z,w2),...     'NumNeighbors',k,'KFold',10,'Standardize',1); classError2 = kfoldLoss(CVKNNMdl2)
classError2 = 0.0400 

El segundo esquema de ponderación produce un clasificador que tiene un mejor rendimiento fuera de la muestra.

En este ejemplo se muestra cómo optimizar los hiperparámetros automáticamente mediante.fitcknn El ejemplo utiliza los datos de iris de Fisher.

Cargue los datos.

load fisheriris X = meas; Y = species;

Encuentre hiperparámetros que minimicen la pérdida de validación cruzada de cinco veces mediante la optimización automática de hiperparámetros.

Para reproducibilidad, establezca la semilla aleatoria y utilice la función de adquisición.'expected-improvement-plus'

rng(1) Mdl = fitcknn(X,Y,'OptimizeHyperparameters','auto',...     'HyperparameterOptimizationOptions',...     struct('AcquisitionFunctionName','expected-improvement-plus'))

|=====================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   | NumNeighbors |     Distance | |      | result |             | runtime     | (observed)  | (estim.)    |              |              | |=====================================================================================================| |    1 | Best   |    0.026667 |     0.94019 |    0.026667 |    0.026667 |           30 |       cosine | |    2 | Accept |        0.04 |     0.47339 |    0.026667 |    0.027197 |            2 |    chebychev | |    3 | Accept |     0.19333 |     0.56301 |    0.026667 |    0.030324 |            1 |      hamming | |    4 | Accept |     0.33333 |     0.41063 |    0.026667 |    0.033313 |           31 |     spearman | |    5 | Best   |        0.02 |     0.26923 |        0.02 |    0.020648 |            6 |       cosine | |    6 | Accept |    0.073333 |      0.3563 |        0.02 |    0.023082 |            1 |  correlation | |    7 | Accept |        0.06 |     0.33531 |        0.02 |    0.020875 |            2 |    cityblock | |    8 | Accept |        0.04 |     0.30502 |        0.02 |    0.020622 |            1 |    euclidean | |    9 | Accept |        0.24 |     0.53127 |        0.02 |    0.020562 |           74 |  mahalanobis | |   10 | Accept |        0.04 |     0.31729 |        0.02 |    0.020649 |            1 |    minkowski | |   11 | Accept |    0.053333 |     0.59827 |        0.02 |    0.020722 |            1 |   seuclidean | |   12 | Accept |     0.19333 |     0.40597 |        0.02 |    0.020701 |            1 |      jaccard | |   13 | Accept |        0.04 |     0.28991 |        0.02 |    0.029203 |            1 |       cosine | |   14 | Accept |        0.04 |     0.43427 |        0.02 |    0.031888 |           75 |       cosine | |   15 | Accept |        0.04 |     0.25781 |        0.02 |    0.020076 |            1 |       cosine | |   16 | Accept |    0.093333 |     0.36186 |        0.02 |    0.020073 |           75 |    euclidean | |   17 | Accept |    0.093333 |     0.20121 |        0.02 |     0.02007 |           75 |    minkowski | |   18 | Accept |         0.1 |     0.21394 |        0.02 |    0.020061 |           75 |    chebychev | |   19 | Accept |     0.15333 |     0.22257 |        0.02 |    0.020044 |           75 |   seuclidean | |   20 | Accept |         0.1 |     0.21176 |        0.02 |    0.020044 |           75 |    cityblock | |=====================================================================================================| | Iter | Eval   | Objective   | Objective   | BestSoFar   | BestSoFar   | NumNeighbors |     Distance | |      | result |             | runtime     | (observed)  | (estim.)    |              |              | |=====================================================================================================| |   21 | Accept |    0.033333 |     0.21574 |        0.02 |    0.020046 |           75 |  correlation | |   22 | Accept |    0.033333 |     0.32842 |        0.02 |     0.02656 |            9 |       cosine | |   23 | Accept |    0.033333 |     0.19955 |        0.02 |     0.02854 |            9 |       cosine | |   24 | Accept |        0.02 |     0.28649 |        0.02 |    0.028607 |            1 |    chebychev | |   25 | Accept |        0.02 |     0.41155 |        0.02 |    0.022264 |            1 |    chebychev | |   26 | Accept |        0.02 |     0.17658 |        0.02 |    0.021439 |            1 |    chebychev | |   27 | Accept |        0.02 |     0.20513 |        0.02 |    0.020999 |            1 |    chebychev | |   28 | Accept |     0.66667 |     0.26027 |        0.02 |    0.020008 |           75 |      hamming | |   29 | Accept |        0.04 |     0.37293 |        0.02 |    0.020008 |           12 |  correlation | |   30 | Best   |    0.013333 |     0.19192 |    0.013333 |    0.013351 |            6 |    euclidean |  __________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 118.7409 seconds. Total objective function evaluation time: 10.3478  Best observed feasible point:     NumNeighbors    Distance      ____________    _________           6          euclidean  Observed objective function value = 0.013333 Estimated objective function value = 0.013351 Function evaluation time = 0.19192  Best estimated feasible point (according to models):     NumNeighbors    Distance      ____________    _________           6          euclidean  Estimated objective function value = 0.013351 Estimated function evaluation time = 0.29809 
Mdl =    ClassificationKNN                          ResponseName: 'Y'                 CategoricalPredictors: []                            ClassNames: {'setosa'  'versicolor'  'virginica'}                        ScoreTransform: 'none'                       NumObservations: 150     HyperparameterOptimizationResults: [1x1 BayesianOptimization]                              Distance: 'euclidean'                          NumNeighbors: 6     Properties, Methods  

Argumentos de entrada

contraer todo

Datos de ejemplo utilizados para entrenar el modelo, especificado como una tabla. Cada fila de corresponde a una observación, y cada columna corresponde a una variable predictora.Tbl Opcionalmente, puede contener una columna adicional para la variable de respuesta.Tbl No se permiten las variables de varias columnas ni matrices de celdas que no sean matrices de celdas de vectores de caracteres.

Si contiene la variable de respuesta y desea utilizar todas las variables restantes como predictores, especifique la variable de respuesta mediante.TblTblResponseVarName

Si contiene la variable de respuesta y desea usar solo un subconjunto de las variables restantes como predictores, especifique una fórmula mediante.TblTblFórmula

Si no contiene la variable de respuesta, especifique una variable de respuesta mediante.TblY La longitud de la variable de respuesta y el número de filas en debe ser igual.Tbl

Tipos de datos: table

Nombre de variable de respuesta, especificado como el nombre de una variable en.Tbl

Debe especificar como un vector de caracteres o un escalar de cadena.ResponseVarName Por ejemplo, si la variable de respuesta se almacena como, a continuación, especifíquese como.YTbl.Y'Y' De lo contrario, el software trata todas las columnas de, incluidos, como predictores al entrenar el modelo.TblY

La variable de respuesta debe ser una matriz categórica, de caracteres o de cadena, un vector lógico o numérico o una matriz de vectores de caracteres. Si es una matriz de caracteres, cada elemento de la variable de respuesta debe corresponder a una fila de la matriz.Y

Es una buena práctica para especificar el orden de las clases mediante el argumento de par nombre-valor.ClassNames

Tipos de datos: char | string

Modelo explicativo de la respuesta y un subconjunto de las variables predictoras, especificadas como un vector de caracteres o un escalar de cadena en el formulario.'Y~X1+X2+X3' En este formulario, representa la variable de respuesta y, y representa las variables predictoras.YX1X2X3 Las variables deben ser nombres de variable en ().TblTbl.Properties.VariableNames

Para especificar un subconjunto de variables como predictores para entrenar el modelo, utilice una fórmula.Tbl Si especifica una fórmula, el software no utiliza ninguna variable en la que no aparezcan.TblFórmula

Tipos de datos: char | string

Etiquetas de clase, especificadas como una matriz categórica, de caracteres o de cadena, un vector lógico o numérico o una matriz de vectores de caracteres. Cada fila de representa la clasificación de la fila correspondiente de.YX

El software considera, (vector de carácter vacío), (cadena vacía), y los valores en que faltan valores.NaN''""<missing><undefined>Y Por lo tanto, el software no entrena utilizando observaciones con una respuesta faltante.

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

Datos predictores, especificados como matriz numérica.

Cada fila corresponde a una observación (también conocida como instancia o ejemplo), y cada columna corresponde a una variable predictora (también conocida como característica).

La longitud y el número de filas de deben ser iguales.YX

Para especificar los nombres de los predictores en el orden de su aparición en, utilice el argumento de par nombre-valor.XPredictorNames

Tipos de datos: double | single

Argumentos de par nombre-valor

Especifique pares de argumentos separados por comas opcionales. es el nombre del argumento y es el valor correspondiente. deben aparecer dentro de las cotizaciones.Name,ValueNameValueName Puede especificar varios argumentos de par de nombre y valor en cualquier orden como.Name1,Value1,...,NameN,ValueN

Ejemplo: especifica un clasificador para tres vecinos más cercanos utilizando el método de búsqueda de vecino más cercano y la métrica Minkowski.'NumNeighbors',3,'NSMethod','exhaustive','Distance','minkowski'

Nota

No puede usar ningún argumento de par nombre-valor de validación cruzada junto con el argumento de par nombre-valor.'OptimizeHyperparameters' Solo puede modificar la validación cruzada mediante el argumento de par nombre-valor.'OptimizeHyperparameters''HyperparameterOptimizationOptions'

Parámetros del modelo

contraer todo

Algoritmo de desempate utilizado por el predict método si varias clases tienen el mismo costo más pequeño, especificado como el par separado por comas que consta de y uno de los siguientes:'BreakTies'

  • : 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.K

Ejemplo: 'BreakTies','nearest'

Número máximo de puntos de datos en el nodo hoja del árbol-d, especificado como el par separado por comas y que consta de un valor entero positivo.k'BucketSize' Este argumento es significativo sólo cuando es.NSMethod'kdtree'

Ejemplo: 'BucketSize',40

Tipos de datos: single | double

Indicador de predictor categórico, especificado como el par separado por comas que consta de uno de los siguientes:'CategoricalPredictors'

  • — Todos los predictores son categóricos.'all'

  • — No hay predictores categóricos.[]

Cuando se establece en, el valor predeterminado es.CategoricalPredictors'all'Distance'hamming'

Ejemplo: 'CategoricalPredictors','all'

Nombres de las clases que se usarán para el entrenamiento, especificadas como el par separado por comas que consta de una matriz categórica, de caracteres o de cadena, un vector lógico o numérico o una matriz de vectores de caracteres. debe tener el mismo tipo de datos que.'ClassNames'ClassNamesY

Si es una matriz de caracteres, cada elemento debe corresponder a uno de la matriz.ClassNamesrow

Utilizar para:ClassNames

  • Ordene las clases durante el entrenamiento.

  • Especifique el orden de cualquier dimensión de argumento de entrada o de salida que corresponda al orden de la clase. Por ejemplo, se utiliza para especificar el orden de las dimensiones o el orden de columnas de las puntuaciones de clasificación devueltas por.ClassNamesCostoPredecir

  • Seleccione un subconjunto de clases para el entrenamiento. Por ejemplo, supongamos que el conjunto de todos los nombres de clase distintos en es.Y{'a','b','c'} Para entrenar el modelo utilizando observaciones de clases y sólo, especifique.'a''c''ClassNames',{'a','c'}

El valor predeterminado para es el conjunto de todos los nombres de clase distintos en.ClassNamesY

Ejemplo: 'ClassNames',{'b','g'}

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

Coste de clasificación errónea de un punto, especificado como el par separado por comas que consta de uno de los siguientes:'Cost'

  • Matriz cuadrada, donde es el costo de clasificar un punto en la clase si su clase verdadera es (es decir, las filas corresponden a la clase verdadera y las columnas corresponden a la clase pronosticada).Cost(i,j)ji Para especificar el orden de la clase de las filas y columnas correspondientes, especifique además el argumento de par nombre-valor.CostoClassNames

  • Estructura que tiene dos campos: que contiene los nombres de grupo como una variable del mismo tipo que, y que contiene la matriz de costes.SS.ClassNamesYS.ClassificationCosts

El valor predeterminado es if y if.Cost(i,j)=1i~=jCost(i,j)=0i=j

Tipos de datos: single | double | struct

Matriz de covarianza, especificada como el par separado por comas que consta de y una matriz definida positiva de valores escalares que representan la matriz de covarianza al calcular la distancia de Mahalanobis.'Cov' Este argumento sólo es válido cuando es.'Distance''mahalanobis'

No puede especificar simultáneamente ni ninguno de los dos.'Standardize''Scale''Cov'

Tipos de datos: single | double

Marca de inclusión de TIE, especificada como el par separado por comas que consta de un valor lógico que indica si'IncludeTies' predict incluye todos los vecinos cuyos valores de distancia son iguales a la distancia más pequeña del th.K Si es así, incluye a todos estos vecinos.IncludeTiestruePredecir De lo contrario, utiliza exactamente vecinos.PredecirK

Ejemplo: 'IncludeTies',true

Tipos de datos: logical

Método de búsqueda de vecino más cercano, especificado como el par separado por comas que consta de y o.'NSMethod''kdtree''exhaustive'

  • : Crea y utiliza un árbol-d para encontrar los vecinos más cercanos. es válida cuando la métrica de distancia es una de las siguientes:'kdtree'k'kdtree'

    • 'euclidean'

    • 'cityblock'

    • 'minkowski'

    • 'chebychev'

  • : 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; Lo contrario.'kdtree'X10X'kdtree''exhaustive'

Ejemplo: 'NSMethod','exhaustive'

Los nombres de variables predictoras, especificados como el par separado por comas que consta de y una matriz de cadenas de nombres únicos o matriz de celdas de vectores de caracteres únicos.'PredictorNames' La funcionalidad de depende de la forma en que proporcione los datos de entrenamiento.'PredictorNames'

  • Si se suministra y, a continuación, se puede utilizar para dar las variables predictoras en los nombres.XY'PredictorNames'X

    • El orden de los nombres en debe corresponder al orden de las columnas de.PredictorNamesX Es decir, es el nombre de, es el nombre de, y así sucesivamente.PredictorNames{1}X(:,1)PredictorNames{2}X(:,2) También, y debe ser igual.size(X,2)numel(PredictorNames)

    • De forma predeterminada, es.PredictorNames{'x1','x2',...}

  • Si usted suministra, entonces usted puede utilizar para elegir qué variables predictoras a utilizar en el entrenamiento.Tbl'PredictorNames' Es decir fitcknn utiliza únicamente las variables predictoras y la variable de respuesta en el entrenamiento.PredictorNames

    • debe ser un subconjunto de y no puede incluir el nombre de la variable de respuesta.PredictorNamesTbl.Properties.VariableNames

    • De forma predeterminada, contiene los nombres de todas las variables predictoras.PredictorNames

    • Es una buena práctica para especificar los predictores para el entrenamiento utilizando cualquiera o sólo.'PredictorNames'Fórmula

Ejemplo: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}

Tipos de datos: string | cell

Probabilidades previas para cada clase, especificadas como el par separado por comas que consta de y un valor en esta tabla.'Prior'

ValorDescripción
'empirical'Las probabilidades previas de clase son las frecuencias de clase relativas.Y
'uniform'Todas las probabilidades previas de clase son iguales a 1/, donde está el número de clases.KK
Vector numéricoCada elemento es una clase de probabilidad previa. Ordene los elementos según o especifique el orden mediante el argumento de par nombre-valor.Mdl.ClassNamesClassNames El software normaliza los elementos que suman.1
Estructura

Una estructura con dos campos:S

  • contiene los nombres de clase como una variable del mismo tipo que.S.ClassNamesY

  • contiene un vector de las probabilidades previas correspondientes.S.ClassProbs El software normaliza los elementos que suman.1

Si establece valores para ambos y, las ponderaciones se renormalizan para sumar el valor de la probabilidad anterior en la clase respectiva.WeightsPrior

Ejemplo: 'Prior','uniform'

Tipos de datos: char | string | single | double | struct

Nombre de variable de respuesta, especificado como el par separado por comas que consta de un vector de caracteres o un escalar de cadena.'ResponseName'

  • Si proporciona, puede usar para especificar un nombre para la variable de respuesta.Y'ResponseName'

  • Si usted suministra o, entonces usted no puede utilizar.ResponseVarNameFórmula'ResponseName'

Ejemplo: 'ResponseName','response'

Tipos de datos: char | string

Escala de distancia, especificada como el par separado por comas que consta de un vector que contiene valores escalares no negativos con una longitud igual al número de columnas.'Scale'X Cada diferencia de coordenadas entre y un punto de consulta se escala por el elemento correspondiente de.XScale Este argumento sólo es válido cuando es.'Distance''seuclidean'

No puede especificar simultáneamente ni ninguno de los dos.'Standardize''Scale''Cov'

Tipos de datos: single | double

Transformación de puntuación, especificada como el par separado por comas que consta de un vector de caracteres, un escalar de cadena o un identificador de función.'ScoreTransform'

Esta tabla resume los vectores de caracteres disponibles y los escalares de cadena.

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).

Ejemplo: 'ScoreTransform','logit'

Tipos de datos: char | string | function_handle

Ponderaciones de observación, especificadas como el par separado por comas que consta de un vector numérico de valores positivos o el nombre de una variable en.'Weights'Tbl El software pesa las observaciones en cada fila o con el valor correspondiente en.XTblWeights El tamaño de debe ser igual al número de filas de o.WeightsXTbl

Si especifica los datos de entrada como una tabla, puede ser el nombre de una variable que contenga un vector numérico.TblWeightsTbl En este caso, debe especificar como un vector de caracteres o un escalar de cadena.Weights Por ejemplo, si el vector de ponderaciones se almacena como, a continuación, especifíquese como.WTbl.W'W' De lo contrario, el software trata todas las columnas de, incluidos, como predictores o la respuesta al entrenar el modelo.TblW

El software normaliza para resumir hasta el valor de la probabilidad anterior en la clase respectiva.Weights

De forma predeterminada, esWeights ones(n,1)Dónde n es el número de observaciones en o.XTbl

Tipos de datos: double | single | char | string

Validación cruzada

contraer todo

Indicador de validación cruzada, especificado como el par separado por comas que consta de y o.'Crossval''on''off'

Si se especifica, el software implementa la validación cruzada de 10 veces.'on'

Para invalidar esta configuración de validación cruzada, use uno de estos argumentos de par nombre-valor:,, o.CVPartitionHoldoutKFoldLeaveout Para crear un modelo validado de forma cruzada, puede usar un argumento de par nombre-valor de validación cruzada a la vez.

Alternativamente, valide de forma cruzada más adelante pasando aMdl crossval.

Ejemplo: 'CrossVal','on'

Partición de validación cruzada, especificada como el par separado por comas que consta de un objeto de partición creado por.'CVPartition'cvpartitioncvpartition El objeto de partición especifica el tipo de validación cruzada y la indización para los conjuntos de entrenamiento y validación.

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: Supongamos que crea una partición aleatoria para la validación cruzada de 5 veces en 500 observaciones mediante el uso de.cvp = cvpartition(500,'KFold',5) A continuación, puede especificar el modelo con validación cruzada mediante.'CVPartition',cvp

Fracción de los datos utilizados para la validación de exclusión, especificado como el par separado por comas que consta de y un valor escalar en el intervalo (0,1).'Holdout' Si usted especifica, después el software completa estos pasos:'Holdout',p

  1. Seleccione aleatoriamente y Reserve% de los datos como datos de validación y capacite al modelo con el resto de los datos.p*100

  2. Almacene el modelo compacto y entrenado en la propiedad del modelo con validación cruzada.Trained

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'Holdout',0.1

Tipos de datos: double | single

Número de pliegues que se utilizarán en un modelo con validación cruzada, especificado como el par separado por comas y que consta de un valor entero positivo mayor que 1.'KFold' Si usted especifica, después el software completa estos pasos:'KFold',k

  1. Particionar aleatoriamente los datos en sets.k

  2. Para cada conjunto, Reserve el conjunto como datos de validación y entrene el modelo utilizando el otro k – 1 Establece.

  3. Almacene los modelos compactos y entrenados en las celdas de un vector de celda a-por-1 en la propiedad del modelo validado de forma cruzada.kkTrained

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'KFold',5

Tipos de datos: single | double

Marca de validación cruzada de Leave-One-out, especificada como el par separado por comas que consta de y o.'Leaveout''on''off' Si especifica, a continuación, para cada una de las observaciones (donde está el número de observaciones excluyendo las observaciones faltantes, especificadas en la propiedad del modelo), el software completa estos pasos:'Leaveout','on'nnNumObservations

  1. Reservar la observación como datos de validación, y entrenar el modelo utilizando el otro – 1 observaciones.n

  2. Almacene los modelos compactos y entrenados en las celdas de un vector de celda-por-1 en la propiedad del modelo validado de forma cruzada.nnTrained

Para crear un modelo con validación cruzada, puede usar uno de estos cuatro argumentos de par nombre-valor solamente:,,, o.CVPartitionHoldoutKFoldLeaveout

Ejemplo: 'Leaveout','on'

La optimización de hiperparámetros

contraer todo

Distancia métrica, especificada como el par separado por comas que consta de un nombre de métrica de distancia válido o un identificador de función.'Distance' Los nombres de métrica de distancia permitidos dependen de la elección de un método de buscador de vecinos (consulte).NSMethod

NSMethodLos nombres de métrica de distancia
exhaustiveCualquier métrica de distancia deExhaustiveSearcher
kdtreeO'cityblock''chebychev''euclidean''minkowski'

Esta tabla incluye métricas de distancia válidas de.ExhaustiveSearcher

Los nombres de métrica de distanciaDescripció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, 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, utilice el argumento de par nombre-valor.C'Cov'
'minkowski'Distancia Minkowski. El exponente predeterminado es.2 Para especificar un exponente diferente, utilice el argumento de par nombre-valor.'Exponent'
'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, utilice el argumento de par nombre-valor.SScale
'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,:)

Si especifica como, la métrica de distancia predeterminada es.CategoricalPredictors'all''hamming' De lo contrario, la métrica de distancia predeterminada es.'euclidean'

Para las definiciones, vea.Las métricas de distancia

Ejemplo: 'Distance','minkowski'

Tipos de datos: char | string | function_handle

Función de ponderación de distancia, especificada como el par separado por comas que consta de un identificador de función o uno de los valores de esta tabla.'DistanceWeight'

ValorDescripción
'equal'Sin ponderación
'inverse'El peso es 1/distancia
'squaredinverse'El peso es 1/distancia2
@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)

Ejemplo: 'DistanceWeight','inverse'

Tipos de datos: char | string | function_handle

Exponente de distancia Minkowski, especificado como el par separado por comas que consta de un valor escalar positivo.'Exponent' Este argumento sólo es válido cuando es.'Distance''minkowski'

Ejemplo: 'Exponent',3

Tipos de datos: single | double

Número de vecinos más cercanos que se encuentran para clasificar cada punto al predecir, especificado como el par separado por comas y que consta de un valor entero positivo.X'NumNeighbors'

Ejemplo: 'NumNeighbors',3

Tipos de datos: single | double

Marca para estandarizar los predictores, especificados como el par separado por comas que consta de y () o.'Standardize'true1false(0)

Si establece, el software centra y escala cada columna de los Datos predictores () por la media de la columna y la desviación estándar, respectivamente.'Standardize',trueX

El software no estandariza los predictores categóricos y produce un error si todos los predictores son categóricos.

No puede especificar simultáneamente ni ninguno de los dos.'Standardize',1'Scale''Cov'

Es una buena práctica estandarizar los Datos predictores.

Ejemplo: 'Standardize',true

Tipos de datos: logical

La optimización de hiperparámetros

contraer todo

Parámetros para optimizar, especificados como el par separado por comas que consta de uno de los siguientes:'OptimizeHyperparameters'

  • — No optimice.'none'

  • Uso.'auto'{'Distance','NumNeighbors'}

  • : Optimice todos los parámetros elegibles.'all'

  • Matriz de cadenas o matriz de celdas de nombres de parámetro elegibles.

  • Vector de objetos, normalmente la salida de.optimizableVariablehiperparámetros

La optimización intenta minimizar la pérdida de validación cruzada (error) para variando los parámetros.fitcknn Para obtener información sobre la pérdida de validación cruzada (aunque en un contexto diferente), consulte.Pérdida de clasificación Para controlar el tipo de validación cruzada y otros aspectos de la optimización, utilice el par nombre-valor.HyperparameterOptimizationOptions

Nota

valores reemplazan los valores que se establecen con otros argumentos de par nombre-valor.'OptimizeHyperparameters' Por ejemplo, si se establece en hace que los valores se apliquen.'OptimizeHyperparameters''auto''auto'

Los parámetros elegibles para son:fitcknn

  • — busca entre,,,,,,,,,, y.Distancefitcknn'cityblock''chebychev''correlation''cosine''euclidean''hamming''jaccard''mahalanobis''minkowski''seuclidean''spearman'

  • — busca entre, y.DistanceWeightfitcknn'equal''inverse''squaredinverse'

  • — busca entre valores reales positivos, por defecto en el rango.Exponentfitcknn[0.5,3]

  • : busca entre valores enteros positivos, de forma predeterminada, con escala de registro en el intervalo.NumNeighborsfitcknn[1, max(2,round(NumObservations/2))]

  • : busca entre los valores y.Standardizefitcknn'true''false'

Establezca parámetros no predeterminados pasando un vector de objetos que tienen valores no predeterminados.optimizableVariable Por ejemplo,

load fisheriris params = hyperparameters('fitcknn',meas,species); params(1).Range = [1,20];

Pase como el valor de.paramsOptimizeHyperparameters

De forma predeterminada, la visualización iterativa aparece en la línea de comandos y los trazados aparecen según el número de hiperparámetros de la optimización. Para la optimización y los trazados, la función objetivo es log(1 + cross-validation loss) para la regresión y la tasa de clasificación errónea para la clasificación. Para controlar la visualización iterativa, establezca el campo del argumento de par nombre-valor.Verbose'HyperparameterOptimizationOptions' Para controlar los trazados, establezca el campo del argumento de par nombre-valor.ShowPlots'HyperparameterOptimizationOptions'

Para ver un ejemplo, vea.Optimice el clasificador KNN ajustado

Ejemplo: 'auto'

Opciones de optimización, especificadas como el par separado por comas que consta de una estructura.'HyperparameterOptimizationOptions' Este argumento modifica el efecto del argumento de par nombre-valor.OptimizeHyperparameters Todos los campos de la estructura son opcionales.

Nombre de campoValoresPredeterminado
Optimizer
  • — Utilice la optimización bayesiana.'bayesopt' Internamente, esta configuración llama.bayesopt

  • : Utilice la búsqueda de cuadrícula con valores por dimensión.'gridsearch'NumGridDivisions

  • — Búsqueda aleatoria entre puntos.'randomsearch'MaxObjectiveEvaluations

búsquedas en orden aleatorio, utilizando muestreo uniforme sin sustitución de la rejilla.'gridsearch' Después de la optimización, puede obtener una tabla en orden de cuadrícula mediante el comando.sortrows(Mdl.HyperparameterOptimizationResults)

'bayesopt'
AcquisitionFunctionName

  • 'expected-improvement-per-second-plus'

  • 'expected-improvement'

  • 'expected-improvement-plus'

  • 'expected-improvement-per-second'

  • 'lower-confidence-bound'

  • 'probability-of-improvement'

Las funciones de adquisición cuyos nombres incluyen no producen resultados reproducibles porque la optimización depende del tiempo de ejecución de la función objetiva.per-second Las funciones de adquisición cuyos nombres incluyen modificar su comportamiento cuando están sobreexplotando un área.plus Para obtener más información, consulte.Tipos de función de adquisición

'expected-improvement-per-second-plus'
MaxObjectiveEvaluationsNúmero máximo de evaluaciones de funciones objetivas.para o, y toda la rejilla para30'bayesopt''randomsearch''gridsearch'
MaxTime

Límite de tiempo, especificado como real positivo. El límite de tiempo es en segundos, medido por y.tictoc El tiempo de ejecución puede exceder porque no interrumpe las evaluaciones de funciones.MaxTimeMaxTime

Inf
NumGridDivisionsPara el número de valores de cada dimensión.'gridsearch' El valor puede ser un vector de enteros positivos que da el número de valores para cada dimensión, o un escalar que se aplica a todas las dimensiones. Este campo se omite para las variables categóricas.10
ShowPlotsValor lógico que indica si se mostrarán los trazados. Si, este campo traza el mejor valor de la función objetiva con respecto al número de iteración.true Si hay uno o dos parámetros de optimización, y si es así, también traza un modelo de la función objetiva contra los parámetros.Optimizer'bayesopt'ShowPlotstrue
SaveIntermediateResultsValor lógico que indica si se guardan los resultados cuando es.Optimizer'bayesopt' Si, este campo sobrescribe una variable de espacio de trabajo denominada en cada iteración.true'BayesoptResults' La variable es un objeto.BayesianOptimizationfalse
Verbose

Mostrar en la línea de comandos.

  • — Sin visualización iterativa0

  • — Visualización iterativa1

  • — Visualización iterativa con información adicional2

Para obtener información detallada, vea el argumento de par nombre-valor.bayesoptVerbose

1
UseParallelValor lógico que indica si se debe ejecutar la optimización bayesiana en paralelo, lo que requiere.Parallel Computing Toolbox™ Para obtener más información, consulte.Optimización bayesiana paralelafalse
Repartition

Valor lógico que indica si se vuelve a particionar la validación cruzada en cada iteración. Si, el optimizador utiliza una sola partición para la optimización.false

normalmente proporciona los resultados más sólidos, ya que esta configuración tiene en cuenta el ruido de partición.true Sin embargo, para obtener buenos resultados, requiere al menos el doble de evaluaciones de función.true

false
No utilice más de uno de los tres nombres de campo siguientes.
CVPartitionUn objeto, creado por.cvpartitioncvpartitionSi no especifica ningún campo de validación cruzada'Kfold',5
HoldoutUn escalar en el rango que representa la fracción de exclusión.(0,1)
KfoldUn entero mayor que 1.

Ejemplo: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)

Tipos de datos: struct

Argumentos de salida

contraer todo

Entrenado-modelo de clasificación de vecino más cercano, devuelto como un objeto de modelo o un objeto de modelo validado de forma cruzada.kClassificationKNNClassificationPartitionedModel

Si establece cualquiera de los argumentos de par nombre-valor,, o, a continuación, es un objeto de modelo validado por Cruz.KFoldHoldoutCrossValCVPartitionMdlClassificationPartitionedModel De lo contrario, es un objeto de modelo.MdlClassificationKNN

Para hacer referencia a las propiedades de, utilice notación de puntos.Mdl Por ejemplo, para mostrar la métrica de distancia en la ventana de comandos, escriba.Mdl.Distance

Más acerca de

contraer todo

Predicción

predice la clasificación de un punto utilizando un procedimiento equivalente a esto:ClassificationKNNxnew

  1. Encuentra los puntos en el conjunto de entrenamiento más cercano.NumNeighborsXxnew

  2. Encuentre los valores de respuesta a los puntos más cercanos.NumNeighborsY

  3. Asigne la etiqueta de clasificación que tiene la probabilidad posterior más grande entre los valores en.ynewY

Para obtener más información, consulte laProbabilidad posterior predict Documentación.

Sugerencias

Después de entrenar un modelo, puede generar código de C/C++ que predice etiquetas para nuevos datos. La generación de código C/C++ requiere MATLABCoder™. Para obtener más información, consulte.Introducción a la generación de código

Algoritmos

  • o s indican las observaciones faltantes.NaNs<undefined> A continuación se describe el comportamiento de cuando el conjunto de datos o las ponderaciones contienen observaciones faltantes.fitcknn

    • Si falta cualquier valor de o cualquier peso, a continuación, quita esos valores de, las ponderaciones y las filas correspondientes de los datos.YfitcknnYX El software renormaliza los pesos a sumar.1

    • Si especifica estandarizar predictores () o la distancia euclidiana estandarizada () sin una escala, a continuación, elimina las observaciones faltantes de predictores individuales antes de calcular la media y la desviación estándar.'Standardize',1'Distance','seuclidean'fitcknn En otras palabras, el software implementa y en cada predictor.nanmeannanstd

    • Si especifica la distancia Mahalanobis () sin su matriz de covarianza, a continuación, elimina las filas de que contienen al menos un valor que falta.'Distance','mahalanbois'fitcknnX En otras palabras, el software implementa en la matriz predictora.nancovX

  • Supongamos que se establece.'Standardize',1

    • Si también especifica o, a continuación, el software tiene en cuenta los pesos de observación.PriorWeights Específicamente, la media ponderada del predictor esj

      x¯j=Bjwkxjk

      y la desviación estándar ponderada es

      sj=Bjwk(xjkx¯j),

      Dónde Bj es el conjunto de índices para los quek Xjk Y Wk no faltan.

    • Si también establece o, a continuación, no puede especificar o.'Distance','mahalanobis''Distance','seuclidean'ScaleCov En su lugar, el software:

      1. Calcula los medios y las desviaciones estándar de cada predictor

      2. Estandariza los datos utilizando los resultados del paso 1

      3. Calcula los valores de los parámetros de distancia utilizando su respectivo valor predeterminado.

  • Si especifica y uno de los dos o, entonces el software escala las distancias observadas por las desviaciones estándar ponderadas.ScalePriorWeights

  • Si especifica y uno de los dos o, a continuación, el software aplica la matriz de covarianza ponderada a las distancias.CovPriorWeights En otras palabras,

    Cov=Bwj(Bwj)2Bwj2Bwj(xjx¯)(xjx¯),

    ¿Dónde está el conjunto de índices para los que la observaciónBj Xj no tiene valores faltantes y Wj no falta.

Alternativas

Aunque puede entrenar un clasificador KNN de varias clases, puede reducir un problema de aprendizaje multiclase a una serie de alumnos binarios de KNN utilizando.fitcknnfitcecoc

Capacidades ampliadas

Introducido en R2014a