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.
Clasificador de vecinos más cercanok
devuelve un modelo de clasificación de vecino sin nombre basado en las variables de entrada (también conocidas como predictores, entidades o atributos) en la tabla y la salida (respuesta).kMdl
= fitcknn(Tbl
,ResponseVarName
)Tbl
Tbl.ResponseVarName
se ajusta a un modelo con opciones adicionales especificadas por uno o varios 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 los pesos de observación.Mdl
= fitcknn(___,Name,Value
)
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.X
Y
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.Mdl
ClassificationKNN
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.Mdl
predict
crossval
Cargue el conjunto de datos de 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.X
Y
Entrena a un clasificador de 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 de predictores no categóricos.
Mdl = fitcknn(X,Y,'NumNeighbors',3,... 'NSMethod','exhaustive','Distance','minkowski',... 'Standardize',1);
es clasificador.Mdl
ClassificationKNN
Puede examinar las propiedades haciendo doble clic en la ventana Espacio de trabajo.Mdl
Mdl
Se abrirá el Editor de variables.
Entrene a un clasificador de vecinos más cercano utilizando la distancia chi-cuadrada.k
Cargue el conjunto de datos de iris de Fisher.
load fisheriris X = meas; % Predictors Y = species; % Response
La distancia chi-cuadrada entre los puntos -dimensionales y esjxz
Dónde
Especifique la función de distancia chi-cuadrada. La función de distancia debe:
Tome una fila de , por ejemplo, , y la matriz .X
x
Z
Compárese con cada fila de .x
Z
Devolver un vector de longitudD
Z
Cada elemento de es la distancia entre la observación correspondiente a y las observaciones correspondientes a cada fila de .D
x
Z
chiSqrDist = @(x,Z,wt)sqrt((bsxfun(@minus,x,Z).^2)*wt);
En este ejemplo se utilizan ponderaciones arbitrarias para la ilustración.
Entrena a un clasificador de vecinos más cercano. Es una buena práctica estandarizar los datos de 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 clasificador.KNNMdl
ClassificationKNN
Valide cruzadamente el clasificador KNN utilizando la validación cruzada predeterminada de 10 veces. Examine el error de clasificación.
rng(1); % For reproducibility CVKNNMdl = crossval(KNNMdl); classError = kfoldLoss(CVKNNMdl)
classError = 0.0600
es clasificador.CVKNNMdl
ClassificationPartitionedModel
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
En el ejemplo se utilizan los datos del iris de Fisher.
Cargue los datos.
load fisheriris X = meas; Y = species;
Busque hiperparámetros que minimicen la pérdida de validación cruzada 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 | 1.3083 | 0.026667 | 0.026667 | 30 | cosine |
| 2 | Accept | 0.04 | 0.3831 | 0.026667 | 0.027197 | 2 | chebychev |
| 3 | Accept | 0.19333 | 0.18118 | 0.026667 | 0.030324 | 1 | hamming |
| 4 | Accept | 0.33333 | 0.18304 | 0.026667 | 0.033313 | 31 | spearman |
| 5 | Best | 0.02 | 0.34416 | 0.02 | 0.020648 | 6 | cosine |
| 6 | Accept | 0.073333 | 0.17335 | 0.02 | 0.023082 | 1 | correlation |
| 7 | Accept | 0.06 | 0.096134 | 0.02 | 0.020875 | 2 | cityblock |
| 8 | Accept | 0.04 | 0.088269 | 0.02 | 0.020622 | 1 | euclidean |
| 9 | Accept | 0.24 | 0.54995 | 0.02 | 0.020562 | 74 | mahalanobis |
| 10 | Accept | 0.04 | 0.23643 | 0.02 | 0.020649 | 1 | minkowski |
| 11 | Accept | 0.053333 | 0.25507 | 0.02 | 0.020722 | 1 | seuclidean |
| 12 | Accept | 0.19333 | 0.082379 | 0.02 | 0.020701 | 1 | jaccard |
| 13 | Accept | 0.04 | 0.088889 | 0.02 | 0.029203 | 1 | cosine |
| 14 | Accept | 0.04 | 0.24764 | 0.02 | 0.031888 | 75 | cosine |
| 15 | Accept | 0.04 | 0.18948 | 0.02 | 0.020076 | 1 | cosine |
| 16 | Accept | 0.093333 | 0.16943 | 0.02 | 0.020073 | 75 | euclidean |
| 17 | Accept | 0.093333 | 0.16942 | 0.02 | 0.02007 | 75 | minkowski |
| 18 | Accept | 0.1 | 0.098829 | 0.02 | 0.020061 | 75 | chebychev |
| 19 | Accept | 0.15333 | 0.11362 | 0.02 | 0.020044 | 75 | seuclidean |
| 20 | Accept | 0.1 | 0.19065 | 0.02 | 0.020044 | 75 | cityblock |
|=====================================================================================================| | Iter | Eval | Objective | Objective | BestSoFar | BestSoFar | NumNeighbors | Distance | | | result | | runtime | (observed) | (estim.) | | | |=====================================================================================================| | 21 | Accept | 0.033333 | 0.12891 | 0.02 | 0.020046 | 75 | correlation |
| 22 | Accept | 0.033333 | 0.091456 | 0.02 | 0.02656 | 9 | cosine |
| 23 | Accept | 0.033333 | 0.18298 | 0.02 | 0.02854 | 9 | cosine |
| 24 | Accept | 0.02 | 0.09311 | 0.02 | 0.028607 | 1 | chebychev |
| 25 | Accept | 0.02 | 0.13392 | 0.02 | 0.022264 | 1 | chebychev |
| 26 | Accept | 0.02 | 0.10476 | 0.02 | 0.021439 | 1 | chebychev |
| 27 | Accept | 0.02 | 0.20871 | 0.02 | 0.020999 | 1 | chebychev |
| 28 | Accept | 0.66667 | 0.12634 | 0.02 | 0.020008 | 75 | hamming |
| 29 | Accept | 0.04 | 0.21571 | 0.02 | 0.020008 | 12 | correlation |
| 30 | Best | 0.013333 | 0.17671 | 0.013333 | 0.013351 | 6 | euclidean |
__________________________________________________________ Optimization completed. MaxObjectiveEvaluations of 30 reached. Total function evaluations: 30 Total elapsed time: 72.0891 seconds. Total objective function evaluation time: 6.612 Best observed feasible point: NumNeighbors Distance ____________ _________ 6 euclidean Observed objective function value = 0.013333 Estimated objective function value = 0.013351 Function evaluation time = 0.17671 Best estimated feasible point (according to models): NumNeighbors Distance ____________ _________ 6 euclidean Estimated objective function value = 0.013351 Estimated function evaluation time = 0.17408
Mdl = ClassificationKNN ResponseName: 'Y' CategoricalPredictors: [] ClassNames: {'setosa' 'versicolor' 'virginica'} ScoreTransform: 'none' NumObservations: 150 HyperparameterOptimizationResults: [1x1 BayesianOptimization] Distance: 'euclidean' NumNeighbors: 6 Properties, Methods
Tbl
— Datos de muestraDatos de ejemplo utilizados para entrenar el modelo, especificados 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 variables de varias columnas y matrices de celdas distintas de las 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 .Tbl
Tbl
ResponseVarName
Si contiene la variable de respuesta y desea utilizar solo un subconjunto de las variables restantes como predictores, especifique una fórmula mediante .Tbl
Tbl
Fórmula
Si no contiene la variable de respuesta, especifique una variable de respuesta mediante .Tbl
Y
La longitud de la variable de respuesta y el número de filas deben ser iguales.Tbl
Tipos de datos: table
ResponseVarName
— Nombre de la variable de respuestaTbl
Nombre de la variable de respuesta, especificado como el nombre de una variable en .Tbl
Debe especificar como vector de caracteres o escalar de cadena.ResponseVarName
Por ejemplo, si la variable de respuesta se almacena como , especifice como .Y
Tbl.Y
'Y'
De lo contrario, el software trata todas las columnas de , incluidos , como predictores al entrenar el modelo.Tbl
Y
La variable de respuesta debe ser una matriz categórica, de carácter o de cadena, un vector lógico o numérico o una matriz de celdas 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
Se recomienda especificar el orden de las clases mediante el argumento de par nombre-valor.ClassNames
Tipos de datos: char
| string
formula
— Modelo explicativo de variable de respuesta y subconjunto de variables predictorasModelo explicativo de la variable de respuesta y un subconjunto de las variables predictoras, especificadas como vector de caracteres o escalar de cadena en el formulario.'Y~X1+X2+X3'
En este formulario, representa la variable de respuesta y , , y representa las variables predictoras.Y
X1
X2
X3
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 que no aparezca en .Tbl
Fórmula
Los nombres de variable de la fórmula deben ser ambos nombres de variable en ( ) como identificadores válidos.Tbl
Tbl.Properties.VariableNames
MATLAB®
Puede verificar los nombres de las variables mediante la función.Tbl
isvarname
El código siguiente devuelve logical ( ) para cada variable que tiene un nombre de variable válido.1
true
Si los nombres de variable en no son válidos, a continuación, convertirlos mediante la función.
cellfun(@isvarname,Tbl.Properties.VariableNames)
Tbl
matlab.lang.makeValidName
Tbl.Properties.VariableNames = matlab.lang.makeValidName(Tbl.Properties.VariableNames);
Tipos de datos: char
| string
Y
— Etiquetas de claseEtiquetas de clase, especificadas como una matriz categórica, de carácter o de cadena, un vector lógico o numérico, o una matriz de celdas de vectores de caracteres. Cada fila de representa la clasificación de la fila correspondiente de .Y
X
El software considera que faltan valores , (vector de caracteres vacíos), (cadena vacía) y 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
X
— Datos del predictorDatos del predictor, 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 entidad).
La longitud y el número de filas de debe ser igual.Y
X
Para especificar los nombres de los predictores en el orden de su aparición en , utilice el argumento de par nombre-valor.X
PredictorNames
Tipos de datos: double
| single
Especifique pares opcionales separados por comas de argumentos. es el nombre del argumento y es el valor correspondiente. deben aparecer entre comillas.Name,Value
Name
Value
Name
Puede especificar varios argumentos de par de nombre y valor en cualquier orden como .Name1,Value1,...,NameN,ValueN
'NumNeighbors',3,'NSMethod','exhaustive','Distance','minkowski'
Nota
No puede utilizar ningún argumento de par nombre-valor de validación cruzada junto con el argumento de par nombre-valor.'OptimizeHyperparameters'
Puede modificar la validación cruzada solo mediante el argumento de par nombre-valor.'OptimizeHyperparameters'
'HyperparameterOptimizationOptions'
'BreakTies'
— Algoritmo de desempate'smallest'
(predeterminado) | 'nearest'
| 'random'
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 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.K
Ejemplo: 'BreakTies','nearest'
'BucketSize'
— Máximo de puntos de datos en el nodo50
(predeterminado) | valor entero positivoNúmero máximo de puntos de datos en el nodo hoja del árbol d, especificado como el par separado por comas que consta de y un valor entero positivo.k'BucketSize'
Este argumento es significativo solo cuando es .NSMethod
'kdtree'
Ejemplo: 'BucketSize',40
Tipos de datos: single
| double
'CategoricalPredictors'
— Bandera predictora categórica[]
| 'all'
Indicador categórico, especificado como el par separado por comas que consta de y uno de los siguientes:'CategoricalPredictors'
— Todos los predictores son categóricos.'all'
— Ningún predictor es categórico.[]
Los datos del predictor para fitcknn
debe ser todo continuo o todo categórico.
Si los datos del predictor están en una tabla ( ),Tbl
fitcknn
supone que una variable es categórica si es un vector lógico, vector categórico, matriz de caracteres, matriz de cadenas o matriz de celdas de vectores de caracteres. Si incluye valores continuos y categóricos, debe especificar el valor deTbl
'CategoricalPredictors'
fitcknn
puede determinar cómo tratar todos los predictores, ya sea como variables continuas o categóricas.
Si los datos del predictor son una matriz ( ),X
fitcknn
asume que todos los predictores son continuos. Para identificar todos los predictores como categóricos, especifique como .X
'CategoricalPredictors'
'all'
Cuando se establece en , el valor predeterminado es .CategoricalPredictors
'all'
Distance
'hamming'
Ejemplo: 'CategoricalPredictors','all'
'ClassNames'
— Nombres de las clases a utilizar para la formaciónNombres de clases que se usan para el entrenamiento, especificados como el par separado por comas que consta de y una matriz categórica, de carácter o de cadena, un vector lógico o numérico, o una matriz de celdas de vectores de caracteres. debe tener el mismo tipo de datos que .'ClassNames'
ClassNames
Y
Si es una matriz de caracteres, cada elemento debe corresponder a uno de la matriz.ClassNames
Fila
Utilícelo para:ClassNames
Ordene las clases durante el entrenamiento.
Especifique el orden de cualquier dimensión de argumento de entrada o salida que corresponda al orden de clases. Por ejemplo, se utiliza para especificar el orden de las dimensiones o el orden de columna de las puntuaciones de clasificación devueltas por .ClassNames
Cost
predict
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 mediante observaciones de clases y solo, especifique .'a'
'c'
'ClassNames',{'a','c'}
El valor predeterminado para es el conjunto de todos los nombres de clase distintos en .ClassNames
Y
Ejemplo: 'ClassNames',{'b','g'}
Tipos de datos: categorical
| char
| string
| logical
| single
| double
| cell
'Cost'
— Costo de la clasificación erróneaCoste de la clasificación incorrecta de un punto, especificado como el par separado por comas que consta de y uno de los siguientes:'Cost'
Matriz cuadrada, donde está 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)
j
i
Para especificar el orden de clases para las filas y columnas correspondientes de , especifique además el argumento de par nombre-valor.Cost
ClassNames
Estructura que tiene dos campos: que contiene los nombres de grupo como una variable del mismo tipo que , y que contiene la matriz de coste.S
S.ClassNames
Y
S.ClassificationCosts
El valor predeterminado es if , y if .Cost(i,j)=1
i~=j
Cost(i,j)=0
i=j
Tipos de datos: single
| double
| struct
'Cov'
— Matriz de covarianzanancov(X)
(predeterminado) | matriz definitiva positiva de valores escalaresMatriz 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 Mahalanobis.'Cov'
Este argumento solo es válido cuando es .'Distance'
'mahalanobis'
No se puede especificar simultáneamente y cualquiera de o .'Standardize'
'Scale'
'Cov'
Tipos de datos: single
| double
'Distance'
— Métrica de distancia'cityblock'
| 'chebychev'
| 'correlation'
| 'cosine'
| 'euclidean'
| 'hamming'
| manija de la función | ...Métrica de distancia, 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étricas de distancia permitidos dependen de su elección de un método de buscador de vecinos (consulte ).NSMethod
NSMethod | Nombres de métricas de distancia |
---|---|
exhaustive | Cualquier métrica de distancia deExhaustiveSearcher |
kdtree | O'cityblock' 'chebychev' 'euclidean' 'minkowski' |
Esta tabla incluye métricas de distancia válidas de .ExhaustiveSearcher
Nombres de métricas de distancia | Descripció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, 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 .C X nancov(X) Para especificar un valor diferente para , utilice el argumento de par nombre-valor.C 'Cov' |
'minkowski' | Distancia de 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 coordenadas entre y un punto de consulta se escala, lo que significa dividido por un valor de escala.X S El valor predeterminado de es la desviación estándar calculada desde , .S X S = nanstd(X) Para especificar otro valor para , utilice el argumento de par nombre-valor.S Scale |
'spearman' | Uno menos la correlación de rango de Spearman de la muestra entre las observaciones (tratadas como secuencias de valores). |
@ |
Mango de función de distancia. function D2 = distfun(ZI,ZJ) % calculation of distance ...
|
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 obtener definiciones, consulte .Métricas de distancia
Ejemplo: 'Distance','minkowski'
Tipos de datos: char
| string
| function_handle
'DistanceWeight'
— Función de ponderación de distancia'equal'
(predeterminado) | 'inverse'
| 'squaredinverse'
| manija de la funciónFunció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'
Valor | Descripción |
---|---|
'equal' | Sin ponderación |
'inverse' | El peso es de 1/distancia |
'squaredinverse' | El peso es de 1/distancia2 |
@ | fcn 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) |
Ejemplo: 'DistanceWeight','inverse'
Tipos de datos: char
| string
| function_handle
'Exponent'
— Exponente de distancia de Minkowski2
(predeterminado) | valor escalar positivoExponente de distancia Minkowski, especificado como el par separado por comas que consta de y un valor escalar positivo.'Exponent'
Este argumento solo es válido cuando es .'Distance'
'minkowski'
Ejemplo: 'Exponent',3
Tipos de datos: single
| double
'IncludeTies'
— Bandera de inclusión de corbatafalse
(predeterminado) | true
Marca de inclusión de empate, especificada como el par separado por comas que consta de y 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.K
Si es , incluye todos estos vecinos.IncludeTies
true
predict
De lo contrario, utiliza exactamente vecinos.predict
K
Ejemplo: 'IncludeTies',true
Tipos de datos: logical
'NSMethod'
— Método de búsqueda de vecino más cercano'kdtree'
| 'exhaustive'
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álido 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 para buscar los vecinos más cercanos.xnew
X
xnew
El valor predeterminado es cuando tiene o menos columnas, no es dispersa y la métrica de distancia es un tipo; Lo contrario.'kdtree'
X
10
X
'kdtree'
'exhaustive'
Ejemplo: 'NSMethod','exhaustive'
'NumNeighbors'
— Número de vecinos más cercanos para encontrar1
(predeterminado) | valor entero positivoNúmero de vecinos más cercanos para buscar para clasificar cada punto al predecir, especificado como el par separado por comas que consta de y un valor entero positivo.X
'NumNeighbors'
Ejemplo: 'NumNeighbors',3
Tipos de datos: single
| double
'PredictorNames'
— Nombres de variables predictorasNombres 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 proporciona y , entonces puede utilizar para dar las variables predictoras en los nombres.X
Y
'PredictorNames'
X
El orden de los nombres en debe corresponder al orden de columna de .PredictorNames
X
Es decir, es el nombre de , es el nombre de , y así sucesivamente.PredictorNames{1}
X(:,1)
PredictorNames{2}
X(:,2)
Además, y debe ser igual.size(X,2)
numel(PredictorNames)
De forma predeterminada, es .PredictorNames
{'x1','x2',...}
Si proporciona , entonces puede utilizar para elegir qué variables predictoras utilizar en el entrenamiento.Tbl
'PredictorNames'
Es decir fitcknn
utiliza sólo las variables predictoras en 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.PredictorNames
Tbl.Properties.VariableNames
De forma predeterminada, contiene los nombres de todas las variables predictoras.PredictorNames
Es una buena práctica especificar los predictores para el entrenamiento usando uno o solo.'PredictorNames'
Fórmula
Ejemplo: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}
Tipos de datos: string
| cell
'Prior'
— Probabilidades anteriores'empirical'
(predeterminado) | 'uniform'
| vector de valores escalares | EstructuraProbabilidades anteriores para cada clase, especificadas como el par separado por comas que consta de y un valor en esta tabla.'Prior'
Valor | Descripción |
---|---|
'empirical' | Las probabilidades anteriores de la clase son las frecuencias relativas de la clase en .Y |
'uniform' | Todas las probabilidades anteriores de clase son iguales a 1/ , donde está el número de clases.KK |
vector numérico | Cada elemento es una probabilidad previa de clase. Ordene los elementos según o especifique el orden utilizando el argumento de par nombre-valor.Mdl .ClassNames ClassNames El software normaliza los elementos de tal forma que sume a .1 |
Estructura | Una estructura con dos campos:
|
Si establece valores para ambos y , las ponderaciones se vuelven a normalizar para sumar el valor de la probabilidad anterior en la clase respectiva.Weights
Prior
Ejemplo: 'Prior','uniform'
Tipos de datos: char
| string
| single
| double
| struct
'ResponseName'
— Nombre de la variable de respuesta'Y'
(predeterminado) | vector de caracteres | cuerda escalarNombre de la 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 suministra o , entonces no puede utilizar .ResponseVarName
Fórmula
'ResponseName'
Ejemplo: 'ResponseName','response'
Tipos de datos: char
| string
'Scale'
— Escala de distanciananstd(X)
(predeterminado) | vector de valores escalares no negativosEscala de distancia, especificada como el par separado por comas que consta de y un vector que contiene valores escalares no negativos con longitud igual al número de columnas en .'Scale'
X
Cada diferencia de coordenadas entre y un punto de consulta se escala mediante el elemento correspondiente de .X
Scale
Este argumento solo es válido cuando es .'Distance'
'seuclidean'
No se puede especificar simultáneamente y cualquiera de o .'Standardize'
'Scale'
'Cov'
Tipos de datos: single
| double
'ScoreTransform'
— Transformación de puntuación'none'
(predeterminado) | 'doublelogit'
| 'invlogit'
| 'ismax'
| 'logit'
| manija de la función | ...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'
En esta tabla se resumen los vectores de caracteres disponibles y los escalares de cadena.
Valor | Descripció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 en1 0 |
'logit' | 1/(1 +e–x) |
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 +e–x) – 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
'Standardize'
— Bandera para estandarizar predictoresfalse
(predeterminado) | true
Marcar para estandarizar los predictores, especificados como el par separado por comas que consta de y ( ) o .'Standardize'
true
1
false
(0)
Si establece , el software centra y escala cada columna de los datos del predictor ( ) por la media de columna y la desviación estándar, respectivamente.'Standardize',true
X
El software no estandariza los predictores categóricos, y produce un error si todos los predictores son categóricos.
No se puede especificar simultáneamente y cualquiera de o .'Standardize',1
'Scale'
'Cov'
Es una buena práctica estandarizar los datos del predictor.
Ejemplo: 'Standardize',true
Tipos de datos: logical
'Weights'
— Pesos de observaciónTbl
Pesos de observación, especificados 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 sopesa las observaciones en cada fila de o con el valor correspondiente en .X
Tbl
Weights
El tamaño de debe ser igual al número de filas de o .Weights
X
Tbl
Si especifica los datos de entrada como una tabla , puede ser el nombre de una variable que contenga un vector numérico.Tbl
Weights
Tbl
En este caso, debe especificar como vector de caracteres o escalar de cadena.Weights
Por ejemplo, si el vector de ponderaciones se almacena como , especifice como .W
Tbl.W
'W'
De lo contrario, el software trata todas las columnas de , incluidos , como predictores o la respuesta al entrenar el modelo.Tbl
W
El software se normaliza para sumar hasta el valor de la probabilidad anterior en la clase respectiva.Weights
De forma predeterminada, esWeights
ones(
Dónde n
,1)n
es el número de observaciones en o .X
Tbl
Tipos de datos: double
| single
| char
| string
'CrossVal'
— Bandera de validación cruzada'off'
(predeterminado) | 'on'
Marca de validación cruzada, especificada como el par separado por comas que consta de y o .'Crossval'
'on'
'off'
Si especifica , el software implementa 10 veces la validación cruzada.'on'
Para invalidar esta configuración de validación cruzada, utilice uno de estos argumentos de par nombre-valor: , , o .CVPartition
Holdout
KFold
Leaveout
Para crear un modelo validado entre referencias cruzadas, puede usar un argumento de par nombre-valor de validación cruzada a la vez.
Alternativamente, valide más adelante pasando aMdl
crossval
.
Ejemplo: 'CrossVal','on'
'CVPartition'
— Partición de validación cruzada[]
(predeterminado) | objeto de particióncvpartition
Partición de validación cruzada, especificada como el par separado por comas que consta de y un objeto de partición creado por .'CVPartition'
cvpartition
cvpartition
El objeto de partición especifica el tipo de validación cruzada y la indexación de los conjuntos de entrenamiento y validación.
Para crear un modelo validado entre referencias cruzadas, puede utilizar uno de estos cuatro argumentos de par nombre-valor solo: , , , o .CVPartition
Holdout
KFold
Leaveout
Ejemplo: Supongamos que crea una partición aleatoria para la validación cruzada de 5 veces en 500 observaciones mediante .cvp = cvpartition(500,'KFold',5)
A continuación, puede especificar el modelo validado entre cruces mediante .'CVPartition',cvp
'Holdout'
— Fracción de datos para la validación de retenciónFracción de los datos utilizados para la validación de retención, especificada 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
Seleccione y reserve aleatoriamente % de los datos como datos de validación y entrene el modelo con el resto de los datos.p*100
Almacene el modelo compacto y entrenado en la propiedad del modelo validado de forma cruzada.Trained
Para crear un modelo validado entre referencias cruzadas, puede utilizar uno de estos cuatro argumentos de par nombre-valor solo: , , , o .CVPartition
Holdout
KFold
Leaveout
Ejemplo: 'Holdout',0.1
Tipos de datos: double
| single
'KFold'
— Número de pliegues10
(predeterminado) | valor entero positivo mayor que 1Número de pliegues que se van a utilizar en un modelo validado por cruz, especificado como el par separado por comas que consta de y un valor entero positivo mayor que 1.'KFold'
Si usted especifica, después el software completa estos pasos:'KFold',k
Particione aleatoriamente los datos en conjuntos.k
Para cada conjunto, reserve el conjunto como datos de validación y entrene el modelo con el otro k
– 1 Establece.
Almacene los modelos compactos y entrenados en las celdas de un vector de celda -by-1 en la propiedad del modelo validado cruzadamente.k
k
Trained
Para crear un modelo validado entre referencias cruzadas, puede utilizar uno de estos cuatro argumentos de par nombre-valor solo: , , , o .CVPartition
Holdout
KFold
Leaveout
Ejemplo: 'KFold',5
Tipos de datos: single
| double
'Leaveout'
— Dejar un indicador de validación cruzada'off'
(predeterminado) | 'on'
Deje el indicador de validación cruzada uno-out, especificado como el par separado por comas que consta de y o .'Leaveout'
'on'
'off'
Si especifica , entonces, 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
Reserve la observación como datos de validación y entrene el modelo utilizando las otras observaciones – 1.n
Almacene los modelos compactos y entrenados en las celdas de un vector de celda -by-1 en la propiedad del modelo validado cruzadamente.nnTrained
Para crear un modelo validado entre referencias cruzadas, puede utilizar uno de estos cuatro argumentos de par nombre-valor solo: , , , o .CVPartition
Holdout
KFold
Leaveout
Ejemplo: 'Leaveout','on'
'OptimizeHyperparameters'
— Parámetros para optimizar'none'
(predeterminado) | 'auto'
| 'all'
| matriz de cadenas o matriz de celdas de nombres de parámetros elegibles | vector de objetosoptimizableVariable
Parámetros para optimizar, especificados como el par separado por comas que consta de y uno de los siguientes:'OptimizeHyperparameters'
— No optimizar.'none'
— Utilice .'auto'
{'Distance','NumNeighbors'}
— Optimizar todos los parámetros elegibles.'all'
Matriz de cadenas o matriz de celdas de nombres de parámetros elegibles.
Vector de objetos, normalmente la salida de .optimizableVariable
hyperparameters
La optimización intenta minimizar la pérdida de validación cruzada (error) para variar los parámetros.fitcknn
Para obtener información sobre la pérdida de validación cruzada (aunque en un contexto diferente), consulte .Classification Loss Para controlar el tipo de validación cruzada y otros aspectos de la optimización, utilice el par nombre-valor.HyperparameterOptimizationOptions
Nota
los valores reemplazan los valores que establezca utilizando otros argumentos de par nombre-valor.'OptimizeHyperparameters'
Por ejemplo, establecer para hacer que se apliquen los valores.'OptimizeHyperparameters'
'auto'
'auto'
Los parámetros elegibles para son:fitcknn
— búsquedas entre , , , , , , , , , y .Distance
fitcknn
'cityblock'
'chebychev'
'correlation'
'cosine'
'euclidean'
'hamming'
'jaccard'
'mahalanobis'
'minkowski'
'seuclidean'
'spearman'
— búsquedas entre , , y .DistanceWeight
fitcknn
'equal'
'inverse'
'squaredinverse'
— busca entre valores reales positivos, por defecto en el rango .Exponent
fitcknn
[0.5,3]
— busca entre valores enteros positivos, de forma predeterminada escalado de registros en el rango .NumNeighbors
fitcknn
[1, max(2,round(NumObservations/2))]
— busca entre los valores y .Standardize
fitcknn
'true'
'false'
Establezca parámetros no predeterminados pasando un vector de objetos que tengan valores no predeterminados.optimizableVariable
Por ejemplo,
load fisheriris params = hyperparameters('fitcknn',meas,species); params(1).Range = [1,20];
Pase como el valor de .params
OptimizeHyperparameters
De forma predeterminada, la visualización iterativa aparece en la línea de comandoy los trazados aparecen según el número de hiperparámetros de la optimización. Para la optimización y las gráficas, 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 obtener un ejemplo, consulte .Optimizar clasificador KNN ajustado
Ejemplo: 'auto'
'HyperparameterOptimizationOptions'
— Opciones para la optimizaciónOpciones para la optimización, especificadas como el par separado por comas que consta de y una estructura.'HyperparameterOptimizationOptions'
Este argumento modifica el efecto del argumento de par nombre-valor.OptimizeHyperparameters
Todos los campos de la estructura son opcionales.
Nombre del campo | Valores | Predeterminado |
---|---|---|
Optimizer |
búsquedas en un orden aleatorio, utilizando muestreo uniforme sin reemplazo de la cuadrícula. | 'bayesopt' |
AcquisitionFunctionName |
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 objetivo. | 'expected-improvement-per-second-plus' |
MaxObjectiveEvaluations | Número máximo de evaluaciones de funciones objetivas. | para o , y toda la cuadrícula para30 'bayesopt' 'randomsearch' 'gridsearch' |
MaxTime | Límite de tiempo, especificado como un real positivo. El límite de tiempo es en segundos, medido por y . | Inf |
NumGridDivisions | Para , el número de valores en cada dimensión.'gridsearch' El valor puede ser un vector de enteros positivos que dan 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 |
ShowPlots | Valor lógico que indica si se deben mostrar trazados. Si , este campo traza el mejor valor de función objetivo con respecto al número de iteración.true Si hay uno o dos parámetros de optimización, y si es , también se traza un modelo de la función objetivo con los parámetros.Optimizer 'bayesopt' ShowPlots | true |
SaveIntermediateResults | Valor lógico que indica si se deben guardar los resultados cuando es .Optimizer 'bayesopt' Si , este campo sobrescribe una variable de área de trabajo denominada en cada iteración.true 'BayesoptResults' La variable es un objeto.BayesianOptimization | false |
Verbose | Visualice en la línea de comandos.
Para obtener más información, consulte el argumento de par nombre-valor. | 1 |
UseParallel | Valor lógico que indica si se debe ejecutar la optimización bayesiana en paralelo, lo que requiere .Parallel Computing Toolbox™ Debido a la no reproducibilidad de la sincronización paralela, la optimización bayesiana paralela no produce necesariamente resultados reproducibles. Para obtener más información, consulte .Parallel Bayesian Optimization | false |
Repartition | Valor lógico que indica si se debe volver a particionar la validación cruzada en cada iteración. Si , el optimizador utiliza una sola partición para la optimización. por lo general da los resultados más robustos porque esta configuración tiene en cuenta el ruido de partición. | false |
No utilice más de uno de los tres nombres de campo siguientes. | ||
CVPartition | Un objeto, tal como lo creó .cvpartition cvpartition | si no especifica ningún campo de validación cruzada'Kfold',5 |
Holdout | Un escalar en el rango que representa la fracción de retención.(0,1) | |
Kfold | Un entero mayor que 1. |
Ejemplo: 'HyperparameterOptimizationOptions',struct('MaxObjectiveEvaluations',60)
Tipos de datos: struct
Mdl
— Modelo de clasificación de vecinos más cercanos capacitadokClassificationKNN
| objeto de modelo validado cruzadamenteClassificationPartitionedModel
Modelo de clasificación de vecinos entrenados - más cercano, devuelto como un objeto de modelo o un objeto de modelo validado entre cruzadas.kClassificationKNN
ClassificationPartitionedModel
Si establece cualquiera de los argumentos de par nombre-valor , , , o , a continuación, es un objeto de modelo validado entre sí.KFold
Holdout
CrossVal
CVPartition
Mdl
ClassificationPartitionedModel
De lo contrario, es un objeto de modelo.Mdl
ClassificationKNN
Para hacer referencia a las propiedades de , utilice la notación de puntos.Mdl
Por ejemplo, para mostrar la métrica de distancia en la ventana de comandos, escriba .Mdl.Distance
predice la clasificación de un punto utilizando un procedimiento equivalente a esto:ClassificationKNN
xnew
Encuentre los puntos del conjunto de entrenamiento más cercano a .NumNeighbors
X
xnew
Busque los valores de respuesta a los puntos más cercanos.NumNeighbors
Y
Asigne la etiqueta de clasificación que tenga la mayor probabilidad posterior entre los valores de .ynew
Y
Para obtener más información, consulte elPosterior Probability predict
Documentación.
Después de entrenar un modelo, puede generar código C/C++ que predice las etiquetas para los nuevos datos. La generación de código C/C++ requiere MATLAB Coder™. Para obtener más información, consulte .Introduction to Code Generation
o s indicar observaciones faltantes.NaNs
<undefined>
A continuación se describe el comportamiento de cuándo el conjunto de datos o las ponderaciones contienen observaciones que faltan.fitcknn
Si falta algún valor o cualquier peso, quita esos valores de , las ponderaciones y las filas correspondientes de los datos.Y
fitcknn
Y
X
El software vuelve a normalizar los pesos a sumar a .1
Si especifica estandarizar los predictores ( ) o la distancia euclidiana estandarizada ( ) sin una escala, elimina las observaciones que faltan de los 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.nanmean
nanstd
Si especifica la distancia De Mahalanobis ( ) sin su matriz de covarianza, elimina las filas que contienen al menos un valor que falta.'Distance','mahalanbois'
fitcknn
X
En otras palabras, el software se implementa en la matriz predictora.nancov
X
Supongamos que ha establecido .'Standardize',1
Si también especifica o , entonces el software tiene en cuenta los pesos de observación.Prior
Weights
Específicamente, la media ponderada del predictor esj
y la desviación estándar ponderada es
Dónde Bj es el conjunto de índices para los quek Xjk Y Wk no faltan.
Si también establece o , no puede especificar o .'Distance','mahalanobis'
'Distance','seuclidean'
Scale
Cov
En su lugar, el software:
Calcula las medias y las desviaciones estándar de cada predictor
Estandariza los datos utilizando los resultados del paso 1
Calcula los valores de los parámetros de distancia utilizando sus respectivos valores predeterminados.
Si especifica y de o , entonces las escalas de software observadas distancias por las desviaciones estándar ponderadas.Scale
Prior
Weights
Si especifica y de o , el software aplica la matriz de covarianza ponderada a las distancias.Cov
Prior
Weights
En otras palabras,
¿dónde está el conjunto de índices para los que la observaciónBj Xj no tiene valores que faltan y Wj no falta.
Aunque puede entrenar un clasificador KNN multiclase, puede reducir un problema de aprendizaje multiclase a una serie de alumnos binarios KNN que utilizan .fitcknn
fitcecoc
Para ejecutar en paralelo, establezca la opción en .'UseParallel'
true
Para realizar la optimización de hiperparámetros paralelos, utilice el argumento de par nombre-valor en la llamada a esta función.'HyperparameterOptions', struct('UseParallel',true)
Para obtener más información sobre la optimización de hiperparámetros paralelos, consulte .Parallel Bayesian Optimization
Para obtener más información general sobre la informática paralela, consulte .Run MATLAB Functions with Automatic Parallel Support (Parallel Computing Toolbox)
ClassificationKNN
| ClassificationPartitionedModel
| fitcecoc
| fitcensemble
| predict
| templateKNN
Existe una versión modificada de este ejemplo en su sistema. ¿Prefiere abrir esta versión?
Ha hecho clic en un enlace que corresponde a este comando de MATLAB:
Ejecute el comando introduciéndolo en la ventana de comandos de MATLAB. Los navegadores web no admiten comandos de MATLAB.
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
Select web siteYou can also select a web site from the following list:
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.