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

Predecir etiquetas utilizando el modelo de clasificación Bayes ingenuo

Descripción

ejemplo

label = predict(Mdl,X) Devuelve un vector de las etiquetas de clase previstas para los Datos predictores de la tabla o matriz, basándose en el clasificador Bayes Ingenuo entrenado, completo o compacto.XMdl

ejemplo

[label,Posterior,Cost] = predict(Mdl,X) también devuelve:

  • Una matriz de () que indica la probabilidad de que una etiqueta proviene de una clase determinada.probabilidades posterioresPosterior

  • Una matriz de ().costos de clasificación erróneaCosto Para cada observación en, la etiqueta de clase pronosticada corresponde a los costos mínimos de clasificación esperados entre todas las clases.X

Argumentos de entrada

expandir todo

Clasificador Naive Bayes, especificado como modelo o modelo devuelto por oClassificationNaiveBayesCompactClassificationNaiveBayesfitcnb compactRespectivamente.

Datos de predictor que se clasificarán, especificados como una matriz o tabla numérica.

Cada fila de corresponde a una observación, y cada columna corresponde a una variable.X

  • Para una matriz numérica:

    • Las variables que componen las columnas de deben tener el mismo orden que las variables predictoras que entrenaron.XMdl

    • Si ha entrenado usando una tabla (por ejemplo,), entonces puede ser una matriz numérica si contiene todas las variables predictoras numéricas.MdlTblXTbl Para tratar los predictores numéricos como categóricos durante el entrenamiento, identifique los predictores categóricos utilizando el argumento de par nombre-valor de.TblCategoricalPredictorsfitcnb Si contiene variables predictoras heterogéneas (por ejemplo, tipos de datos numéricos y categóricos) y es una matriz numérica, se produce un error.TblXPredecir

  • Para una tabla:

    • no admite variables de varias columnas ni matrices de celdas que no sean matrices de celdas de vectores de caracteres.Predecir

    • Si ha entrenado utilizando una tabla (por ejemplo,), todas las variables predictoras en deben tener los mismos nombres de variables y tipos de datos que los que entrenaron (almacenados en).MdlTblXMdlMdl.PredictorNames Sin embargo, el orden de columna de no necesita corresponder al orden de columna de. y puede contener variables adicionales (variables de respuesta, pesos de observación, etc.), pero las ignora.XTblTblXPredecir

    • Si entrenó con una matriz numérica, los nombres de los predictores y los nombres de las variables predictoras correspondientes deben ser los mismos.MdlMdl.PredictorNamesX Para especificar nombres de predictores durante el entrenamiento, vea el argumento de par nombre-valor de.PredictorNamesfitcnb Todas las variables predictoras en deben ser vectores numéricos. puede contener variables adicionales (variables de respuesta, pesos de observación, etc.), pero las ignora.XXPredecir

Tipos de datos: table | double | single

Notas:

  • Si es así, el software devuelve s correspondiente a las filas que contienen al menos uno.Mdl.DistributionNames'mn'NaNXNaN

  • Si no es así, el software ignora los valores al estimar los costes de clasificación errónea y las probabilidades posteriores.Mdl.DistributionNames'mn'NaN Específicamente, el software calcula la densidad condicional de los predictores dada la clase al dejar fuera los factores correspondientes a los valores de predictor faltantes.

  • Para la distribución de predictor especificada como, si contiene niveles que no están representados en los datos de entrenamiento (es decir, no en para ese predictor), entonces la densidad condicional de los predictores dada la clase es 0.'mvmn'XMdl.CategoricalLevels Para esas observaciones, el software devuelve el valor correspondiente de como a.PosteriorNaN El software determina la etiqueta de clase para dichas observaciones utilizando la probabilidad previa de la clase, almacenada en.Mdl.Prior

Argumentos de salida

expandir todo

Etiquetas de clase pronosticadas, devueltas como un vector categórico, una matriz de caracteres, un vector lógico o numérico o una matriz de vectores de caracteres.

:Etiqueta

  • Es el mismo tipo de datos que las etiquetas de clase observadas () que entrenaronMdl.YMdl

  • Tiene una longitud igual al número de filas deMdl.X

  • ¿La clase está produciendo el menor costo de clasificación errónea esperada ()Costo

Class, devuelta como una matriz numérica. tiene filas iguales al número de filas y columnas iguales al número de clases distintas en los datos de entrenamiento ().probabilidades posterioresPosteriorXsize(Mdl.ClassNames,1)

es la probabilidad posterior pronosticada de clase (es decir, en clase) dada la observación en fila de.Posterior(j,k)kMdl.ClassNames(k)jX

Tipos de datos: double

Esperado, devuelto como una matriz numérica. tiene filas iguales al número de filas y columnas iguales al número de clases distintas en los datos de entrenamiento ().costos de clasificación erróneaCostoXsize(Mdl.ClassNames,1)

es el costo de clasificación errónea esperado de la observación en fila de ser pronosticada en la clase (es decir, en la clase).Cost(j,k)jXkMdl.ClassNames(k)

Ejemplos

expandir todo

Cargue el conjunto de datos de iris de Fisher.

load fisheriris X = meas;    % Predictors Y = species; % Response rng(1);

Entrenar a un clasificador Bayes ingenuo y especificar para exclusión 30% de los datos para una muestra de prueba. Es recomendable especificar el orden de la clase. Supongamos que cada predictor es condicionalmente, normalmente distribuido dada su etiqueta.

CVMdl = fitcnb(X,Y,'Holdout',0.30,...     'ClassNames',{'setosa','versicolor','virginica'}); CMdl = CVMdl.Trained{1};          % Extract trained, compact classifier testIdx = test(CVMdl.Partition); % Extract the test indices XTest = X(testIdx,:); YTest = Y(testIdx);

es un clasificador.CVMdlClassificationPartitionedModel Contiene la propiedad, que es un array de celdas 1 por 1 con un clasificador que el software entrenado usando el conjunto de entrenamiento.TrainedCompactClassificationNaiveBayes

Etiquete las observaciones de la muestra de prueba. Visualice los resultados de un conjunto aleatorio de 10 observaciones en la muestra de prueba.

idx = randsample(sum(testIdx),10); label = predict(CMdl,XTest); table(YTest(idx),label(idx),'VariableNames',...     {'TrueLabel','PredictedLabel'})
ans=10×2 table
     TrueLabel      PredictedLabel
    ____________    ______________

    'setosa'         'setosa'     
    'versicolor'     'versicolor' 
    'setosa'         'setosa'     
    'virginica'      'virginica'  
    'versicolor'     'versicolor' 
    'setosa'         'setosa'     
    'virginica'      'virginica'  
    'virginica'      'virginica'  
    'setosa'         'setosa'     
    'setosa'         'setosa'     

Un objetivo de clasificación es estimar las probabilidades posteriores de nuevas observaciones utilizando un algoritmo entrenado. Muchas aplicaciones entrenan algoritmos en conjuntos de datos grandes, que pueden usar recursos que se usan mejor en otros lugares. Este ejemplo muestra cómo estimar eficientemente las probabilidades posteriores de nuevas observaciones usando un clasificador de Bayes Naive.

Cargue el conjunto de datos de iris de Fisher.

load fisheriris X = meas;    % Predictors Y = species; % Response rng(1);

Particionar el conjunto de datos en dos conjuntos: uno en el conjunto de entrenamiento, y el otro es nuevos datos no observados. Reserve 10 observaciones para el nuevo conjunto de datos.

n = size(X,1); newInds = randsample(n,10); inds = ~ismember(1:n,newInds); XNew = X(newInds,:); YNew = Y(newInds);

Entrena a un ingenuo clasificador Bayes. Es recomendable especificar el orden de la clase. Supongamos que cada predictor es condicionalmente, normalmente distribuido dada su etiqueta. Conserve la memoria reduciendo el tamaño del clasificador de SVM entrenado.

Mdl = fitcnb(X(inds,:),Y(inds),...     'ClassNames',{'setosa','versicolor','virginica'}); CMdl = compact(Mdl); whos('Mdl','CMdl')
  Name      Size            Bytes  Class                                                        Attributes    CMdl      1x1              5346  classreg.learning.classif.CompactClassificationNaiveBayes                 Mdl       1x1             12671  ClassificationNaiveBayes                                                

El clasificador () utiliza menos espacio que el clasificador () porque este último almacena los datos.CompactClassificationNaiveBayesCMdlClassificationNaiveBayesMdl

Predecir las etiquetas, las probabilidades posteriores y los costos de clasificación errónea de la clase esperada. Como las etiquetas verdaderas están disponibles, compárelas con las etiquetas pronosticadas.

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

[labels,PostProbs,MisClassCost] = predict(CMdl,XNew); table(YNew,labels,PostProbs,'VariableNames',...     {'TrueLabels','PredictedLabels',...     'PosteriorProbabilities'})
ans=10×3 table
     TrueLabels     PredictedLabels             PosteriorProbabilities          
    ____________    _______________    _________________________________________

    'setosa'         'setosa'                    1     4.1259e-16     1.1846e-23
    'versicolor'     'versicolor'       1.0373e-60        0.99999     5.8053e-06
    'virginica'      'virginica'       4.8708e-211     0.00085645        0.99914
    'setosa'         'setosa'                    1     1.4053e-19     2.2672e-26
    'versicolor'     'versicolor'       2.9308e-75        0.99987     0.00012869
    'setosa'         'setosa'                    1      2.629e-18     4.4297e-25
    'versicolor'     'versicolor'       1.4238e-67        0.99999      9.733e-06
    'versicolor'     'versicolor'      2.0667e-110        0.94237       0.057625
    'setosa'         'setosa'                    1     4.3779e-19     3.5139e-26
    'setosa'         'setosa'                    1     1.1792e-17     2.2912e-24

MisClassCost
MisClassCost = 10×3

    0.0000    1.0000    1.0000
    1.0000    0.0000    1.0000
    1.0000    0.9991    0.0009
    0.0000    1.0000    1.0000
    1.0000    0.0001    0.9999
    0.0000    1.0000    1.0000
    1.0000    0.0000    1.0000
    1.0000    0.0576    0.9424
    0.0000    1.0000    1.0000
    0.0000    1.0000    1.0000

y las matrices son por numéricos, donde cada fila corresponde a una nueva observación y cada columna corresponde a una clase.PostProbsMisClassCost153 El orden de las columnas corresponde al orden de.CMdl.ClassNames

Cargue el conjunto de datos de iris de Fisher. Entrenar el clasificador utilizando las longitudes y anchos del pétalo.

load fisheriris X = meas(:,3:4); Y = species;

Entrena a un ingenuo clasificador Bayes. Es recomendable especificar el orden de la clase. Supongamos que cada predictor es condicionalmente, normalmente distribuido dada su etiqueta.

Mdl = fitcnb(X,Y,...     'ClassNames',{'setosa','versicolor','virginica'});

es un modelo.MdlClassificationNaiveBayes Puede acceder a sus propiedades utilizando la notación de puntos.

Defina una rejilla de valores en el espacio pronosticador observado. Predecir las probabilidades posteriores para cada instancia en la cuadrícula.

xMax = max(X); xMin = min(X); h = 0.01; [x1Grid,x2Grid] = meshgrid(xMin(1):h:xMax(1),xMin(2):h:xMax(2));  [~,PosteriorRegion] = predict(Mdl,[x1Grid(:),x2Grid(:)]);

Graficar las regiones de probabilidad posterior y los datos de entrenamiento.

figure; % Plot posterior regions  scatter(x1Grid(:),x2Grid(:),1,PosteriorRegion); % Adjust color bar options h = colorbar; h.Ticks = [0 0.5 1]; h.TickLabels = {'setosa','versicolor','virginica'}; h.YLabel.String = 'Posterior'; h.YLabel.Position = [-0.5 0.5 0]; % Adjust color map options d = 1e-2; cmap = zeros(201,3); cmap(1:101,1) = 1:-d:0; cmap(1:201,2) = [0:d:1 1-d:-d:0]; cmap(101:201,3) = 0:d:1; colormap(cmap); % Plot data hold on gh = gscatter(X(:,1),X(:,2),Y,'k','dx*'); title 'Iris Petal Measurements and Posterior Probabilities'; xlabel 'Petal length (cm)'; ylabel 'Petal width (cm)'; axis tight legend(gh,'Location','Best') hold off

Más acerca de

expandir todo

Referencias

[1] Hastie, T., R. Tibshirani, and J. Friedman. The Elements of Statistical Learning, Second Edition. NY: Springer, 2008.

Capacidades ampliadas