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.

predict

Clase: ClassificationLinear

Predecir etiquetas para modelos de clasificación lineal

Descripción

ejemplo

Label = predict(Mdl,X) Devuelve las etiquetas de clase pronosticadas para cada observación en los Datos predictores basados en el modelo de clasificación lineal, binario y entrenado. contiene etiquetas de clase para cada fuerza de regularización en.XMdlLabelMdl

ejemplo

Label = predict(Mdl,X,Name,Value) Devuelve las etiquetas de clase previstas con opciones adicionales especificadas por uno o más argumentos de par.Name,Value Por ejemplo, puede especificar que las columnas de los Datos predictores correspondan a las observaciones.

ejemplo

[Label,Score] = predict(___) también devuelve para ambas clases utilizando cualquiera de las sintaxis anteriores. contiene puntuaciones de clasificación para cada fuerza de regularización en.puntuaciones de clasificaciónPuntuaciónMdl

Argumentos de entrada

expandir todo

Binario, modelo de clasificación lineal, especificado como un objeto de modelo.ClassificationLinear Puede crear un objeto de modelo utilizando.ClassificationLinearfitclinear

Datos de predictor, especificados como una matriz dispersa o por completo.np Esta orientación indica que las filas corresponden a observaciones individuales y las columnas corresponden a variables predictoras individuales.X

Nota

Si orienta la matriz predictora para que las observaciones se correspondan con las columnas y las especifique, puede experimentar una reducción significativa en el tiempo de cálculo.'ObservationsIn','columns'

Tipos de datos: single | double

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

Dimensión de observación de Datos predictores, especificada como el par separado por comas que consta de y o.'ObservationsIn''columns''rows'

Nota

Si orienta la matriz predictora para que las observaciones se correspondan con las columnas y las especifique, puede experimentar una reducción significativa en el tiempo de ejecución de la optimización.'ObservationsIn','columns'

Argumentos de salida

expandir todo

Etiquetas de clase pronosticadas, devueltas como una matriz categórica o de caracteres, matriz lógica o numérica, o matriz de celdas de vectores de caracteres.

En la mayoría de los casos, es una-por-matriz del mismo tipo de datos que las etiquetas de clase observadas () utilizadas para entrenar.LabelnLYMdl (The software treats string arrays as cell arrays of character vectors.) es el número de observaciones en y es el número de fortalezas de regularización en.nXLMdl.Lambda Es decir Label(i,j) es la etiqueta de clase pronosticada para la observación i utilizando el modelo de clasificación lineal que tiene fuerza de regularización Mdl.Lambda(j).

Si es una matriz de caracteres y > 1, entonces es una matriz de celdas de etiquetas de clase.YLLabel

, devuelta como una matriz de-por-2-por-numérico. es el número de observaciones en y es el número de fortalezas de regularización en.Las puntuaciones de clasificaciónnLnXLMdl.Lambda Score(i,k,j) es la puntuación para clasificar la observación i en la clase k utilizando el modelo de clasificación lineal que tiene fuerza de regularización Mdl.Lambda(j). almacena el orden de las clases.Mdl.ClassNames

Si es así, las puntuaciones de clasificación son probabilidades posteriores.Mdl.Learner'logistic'

Ejemplos

expandir todo

Cargue el conjunto de datos NLP.

load nlpdata

es una matriz dispersa de Datos predictores y es un vector categórico de etiquetas de clase.XY Hay más de dos clases en los datos.

Los modelos deben identificar si la palabra cuenta en una página web son de la documentación de estadísticas y machine learning Toolbox™. Por lo tanto, identifique las etiquetas que corresponden a las páginas web de documentación de estadísticas y machine learning Toolbox™.

Ystats = Y == 'stats';

Entrenar un modelo de clasificación lineal binario utilizando todo el conjunto de datos, que puede identificar si la palabra cuenta en una página web de documentación son de la documentación de estadísticas y machine learning Toolbox™.

rng(1); % For reproducibility  Mdl = fitclinear(X,Ystats);

es un modelo.MdlClassificationLinear

Predecir el entrenamiento-muestra, o la representación, etiquetas.

label = predict(Mdl,X);

Debido a que hay una fuerza de regularización en, es vectores de columna con longitudes iguales al número de observaciones.MdlEtiqueta

Construya una matriz de confusión.

ConfusionTrain = confusionchart(Ystats,label);

El modelo clasifica incorrectamente solo una página de documentación como fuera de la documentación de estadísticas y herramientas de aprendizaje automático.'stats'

Cargue el conjunto de datos NLP y preprocesarlo como en.Predecir la formación-etiquetas de muestra Transponer la matriz de Datos predictores.

load nlpdata Ystats = Y == 'stats'; X = X';

Entrenar un modelo de clasificación lineal binario que puede identificar si la palabra cuenta en una página web de documentación son de la documentación de estadísticas y machine learning Toolbox™. Especifique si desea mantener el 30% de las observaciones. Optimice la función objetivo utilizando SpaRSA.

rng(1) % For reproducibility  CVMdl = fitclinear(X,Ystats,'Solver','sparsa','Holdout',0.30,...     'ObservationsIn','columns'); Mdl = CVMdl.Trained{1};

es un modelo.CVMdlClassificationPartitionedLinear Contiene la propiedad, que es un array de celdas 1-por-1 sosteniendo un modelo que el software entrenado usando el conjunto de entrenamiento.TrainedClassificationLinear

Extraiga los datos de entrenamiento y prueba de la definición de partición.

trainIdx = training(CVMdl.Partition); testIdx = test(CVMdl.Partition);

Predecir las etiquetas de entrenamiento y muestra de prueba.

labelTrain = predict(Mdl,X(:,trainIdx),'ObservationsIn','columns'); labelTest = predict(Mdl,X(:,testIdx),'ObservationsIn','columns');

Debido a que hay una fuerza de regularización en, y son vectores de columna con longitudes iguales al número de observaciones de entrenamiento y prueba, respectivamente.MdllabelTrainlabelTest

Construya una matriz de confusión para los datos de entrenamiento.

ConfusionTrain = confusionchart(Ystats(trainIdx),labelTrain);

El modelo clasifica erróneamente solo tres páginas de documentación como si estuvieran fuera de la documentación de estadísticas y Toolbox.

Construya una matriz de confusión para los datos de prueba.

ConfusionTest = confusionchart(Ystats(testIdx),labelTest);

El modelo clasifica erróneamente tres páginas de documentación como fuera de la caja de herramientas de estadísticas y aprendizaje automático, y dos páginas como dentro.

Estime la muestra de prueba, las probabilidades de clase posterior y determine la calidad del modelo trazando una curva ROC. Los modelos de clasificación lineal devuelven probabilidades posteriores solo para los alumnos de regresión logística.

Cargue el conjunto de datos NLP y preprocesarlo como en.Predecir etiquetas de muestra de prueba

load nlpdata Ystats = Y == 'stats'; X = X';

Particionar aleatoriamente los datos en conjuntos de pruebas y entrenamiento especificando una muestra de retención del 30%. Identifique los índices del conjunto de pruebas.

cvp = cvpartition(Ystats,'Holdout',0.30); idxTest = test(cvp);

Entrenar un modelo de clasificación lineal binaria. Ajuste los alumnos de regresión logística con SpaRSA. Para mantener el conjunto de pruebas, especifique el modelo particionado.

CVMdl = fitclinear(X,Ystats,'ObservationsIn','columns','CVPartition',cvp,...     'Learner','logistic','Solver','sparsa'); Mdl = CVMdl.Trained{1};

es un modelo entrenado utilizando el conjunto de entrenamiento especificado en la partición solamente.MdlClassificationLinearcvp

Predecir las probabilidades de la clase posterior de prueba.

[~,posterior] = predict(Mdl,X(:,idxTest),'ObservationsIn','columns');

Debido a que hay una fuerza de regularización en, es una matriz con 2 columnas y filas iguales al número de observaciones del conjunto de pruebas.Mdlposterior La columna contiene probabilidades posteriores de una observación determinada.iMdl.ClassNames(i)

Obtener tasas positivas falsas y verdaderas, y estimar el AUC. Especifique que la segunda clase es la clase positiva.

[fpr,tpr,~,auc] = perfcurve(Ystats(idxTest),posterior(:,2),Mdl.ClassNames(2)); auc
auc = 0.9986 

El AUC es, que indica un modelo que predice bien.1

Trace una curva ROC.

figure; plot(fpr,tpr) h = gca; h.XLim(1) = -0.1; h.YLim(2) = 1.1; xlabel('False positive rate') ylabel('True positive rate') title('ROC Curve')

La curva ROC y el AUC indican que el modelo clasifica las observaciones de la muestra de prueba casi perfectamente.

Para determinar una buena fuerza de penalización de lazo para un modelo de clasificación lineal que utiliza un aprendizaje de regresión logística, compare los valores de muestra de prueba del AUC.

Cargue el conjunto de datos NLP. Preprocese los datos como en.Predecir etiquetas de muestra de prueba

load nlpdata Ystats = Y == 'stats'; X = X';

Cree una partición de datos que especifique la retención del 10% de las observaciones. Extraiga índices de muestras de prueba.

rng(10); % For reproducibility Partition = cvpartition(Ystats,'Holdout',0.10); testIdx = test(Partition); XTest = X(:,testIdx); n = sum(testIdx)
n = 3157 
YTest = Ystats(testIdx);

Hay 3157 observaciones en la muestra de prueba.

Cree un conjunto de 11 fortalezas de regularización logarmicamente espaciadas de

<math display="block">
<mrow>
<mn>1</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mo>-</mo>
<mn>6</mn>
</mrow>
</msup>
</mrow>
</math>
a través de
<math display="block">
<mrow>
<mn>1</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mo>-</mo>
<mn>0</mn>
<mo>.</mo>
<mn>5</mn>
</mrow>
</msup>
</mrow>
</math>
.

Lambda = logspace(-6,-0.5,11);

Entrena modelos de clasificación lineal y binaria que utilizan cada una de las fortalezas de regularización. Optimice la función objetivo utilizando SpaRSA. Reduzca la tolerancia en el degradado de la función objetiva a.1e-8

CVMdl = fitclinear(X,Ystats,'ObservationsIn','columns',...     'CVPartition',Partition,'Learner','logistic','Solver','sparsa',...     'Regularization','lasso','Lambda',Lambda,'GradientTolerance',1e-8)
CVMdl =    classreg.learning.partition.ClassificationPartitionedLinear     CrossValidatedModel: 'Linear'            ResponseName: 'Y'         NumObservations: 31572                   KFold: 1               Partition: [1x1 cvpartition]              ClassNames: [0 1]          ScoreTransform: 'none'     Properties, Methods  

Extraiga el modelo de clasificación lineal entrenado.

Mdl1 = CVMdl.Trained{1}
Mdl1 =    ClassificationLinear       ResponseName: 'Y'         ClassNames: [0 1]     ScoreTransform: 'logit'               Beta: [34023x11 double]               Bias: [1x11 double]             Lambda: [1x11 double]            Learner: 'logistic'     Properties, Methods  

es un objeto de modelo.MdlClassificationLinear Porque es una secuencia de fortalezas de regularización, se puede pensar en como 11 modelos, uno para cada fuerza de regularización en.LambdaMdlLambda

Calcule las etiquetas pronosticadas de la muestra de prueba y las probabilidades de clase posterior.

[label,posterior] = predict(Mdl1,XTest,'ObservationsIn','columns'); Mdl1.ClassNames; posterior(3,1,5)
ans = 1.0000 

es una matriz de 3157 por 11 de etiquetas pronosticadas.Etiqueta Cada columna corresponde a las etiquetas pronosticadas del modelo entrenado utilizando la fuerza de regularización correspondiente. es una matriz 3157-por-2-por-11 de probabilidades de clase posterior.posterior Las columnas corresponden a las clases y las páginas corresponden a las fortalezas de regularización. Por ejemplo, indica que la probabilidad posterior de que la primera clase (etiqueta) se asigne a la observación 3 por el modelo que utiliza como fuerza de regularización es 1,0000.posterior(3,1,5)0Lambda(5)

Para cada modelo, calcule el AUC. Designe la segunda clase como clase positiva.

auc = 1:numel(Lambda);  % Preallocation for j = 1:numel(Lambda)     [~,~,~,auc(j)] = perfcurve(YTest,posterior(:,2,j),Mdl1.ClassNames(2)); end

Valores más altos de plomo a la dispersión variable predictora, que es una buena calidad de un clasificador.Lambda Para cada fuerza de regularización, entrenar un modelo de clasificación lineal utilizando todo el conjunto de datos y las mismas opciones que cuando se entrenó el modelo. Determine el número de coeficientes distintos de cero por modelo.

Mdl = fitclinear(X,Ystats,'ObservationsIn','columns',...     'Learner','logistic','Solver','sparsa','Regularization','lasso',...     'Lambda',Lambda,'GradientTolerance',1e-8); numNZCoeff = sum(Mdl.Beta~=0);

En la misma figura, trace las tasas de error de muestreo de prueba y la frecuencia de coeficientes distintos de cero para cada fuerza de regularización. Trace todas las variables en la escala de registro.

figure; [h,hL1,hL2] = plotyy(log10(Lambda),log10(auc),...     log10(Lambda),log10(numNZCoeff + 1));  hL1.Marker = 'o'; hL2.Marker = 'o'; ylabel(h(1),'log_{10} AUC') ylabel(h(2),'log_{10} nonzero-coefficient frequency') xlabel('log_{10} Lambda') title('Test-Sample Statistics') hold off

Elija el índice de la fuerza de regularización que equilibra la dispersión variable predictora y el alto AUC. En este caso, un valor entre

<math display="block">
<mrow>
<mn>1</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mo>-</mo>
<mn>2</mn>
</mrow>
</msup>
</mrow>
</math>
Para
<math display="block">
<mrow>
<mn>1</mn>
<msup>
<mrow>
<mn>0</mn>
</mrow>
<mrow>
<mo>-</mo>
<mn>1</mn>
</mrow>
</msup>
</mrow>
</math>
debería ser suficiente.

idxFinal = 9;

Seleccione el modelo con la fuerza de regularización elegida.Mdl

MdlFinal = selectModels(Mdl,idxFinal);

es un modelo que contiene una fuerza de regularización.MdlFinalClassificationLinear Para estimar las etiquetas de las nuevas observaciones, pasar y los nuevos datos a.MdlFinalPredecir

Más acerca de

expandir todo

Capacidades ampliadas

Introducido en R2016a