8 votos

¿Cómo puedo calcular las probabilidades de clase en el paquete caret utilizando el método 'glmnet'?

Si hago un modelLookup('glmnet') dice TRUE para probModel (y de hecho, esperaría que fuera utilizable como modelo para predecir probabilidades en un problema de predicción de resultados binarios ya que glmnet tiene un argumento de familia 'binomial').

Sin embargo, siguiendo las instrucciones del paquete caret digo:

trainControl = trainControl(classProbs=TRUE)

modelFit = train(X, y, method='glmnet', trControl=trainControl)

y me sale:

cannot compute class probabilities for regression

¿Estoy haciendo algo mal?

9voto

DavLink Puntos 101

Sospecho que su y es de la clase numeric y no es un R factor . Puede consultar la documentación de glmnet directamente,

   y: response variable. Quantitative for ‘family="gaussian"’ or
      ‘family="poisson"’ (non-negative counts). For
      ‘family="binomial"’ should be either a **factor with two
      levels, or a two-column matrix of counts or proportions**.

(el énfasis es mío).

o compruébalo con el siguiente ejemplo de juguete:

library(caret)
data(iris)
iris.sub <- subset(iris, Species %in% c("setosa", "versicolor"))
train(iris.sub[,1:4], factor(iris.sub$Species), method='glmnet', 
      trControl=trainControl(classProbs=TRUE))  # work
train(iris.sub[,1:4], as.numeric(iris.sub$Species), method='glmnet', 
      trControl=trainControl(classProbs=TRUE))  # 'cannnot compute class probabilities for regression'

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X