2012-08-30 18 views
5

Por qué podría ser que¿Por qué Scikit GradientBoostingClassifier no me deja usar la regresión de mínimos cuadrados?

GradientBoostingClassifier(loss='ls') 

falla con:

raise ValueError("``n_classes`` must be 1 for regression") 
ValueError: ``n_classes`` must be 1 for regression 

y funciona perfectamente con loss='deviance'?

Estoy usando scikit-learn-0.11 con scipy-0.11.0rc1 en Ubuntu 64 bits Esto sucedió clasificando un conjunto de datos con la clase binaria 'SÍ' 'NO'.

+2

Porque la regresión de mínimos cuadrados es para regresión (http://en.wikipedia.org/wiki/Regression_analysis) y el clasificador de aumento de gradiente es para clasificación (http://en.wikipedia.org/wiki/Classification_in_machine_learning)? – alfa

Respuesta

6

Esto es un error en GradientBoostingClassifier. No debe exponer la función de pérdida de mínimos cuadrados para la clasificación. Utilice la función de pérdida "desviación" en su lugar.

Disculpe las molestias causadas.

PD: Si realmente necesita una pérdida mínima al cuadrado para la clasificación, contácteme y podremos trabajar en esta característica para una futura versión.

+1

Se ha abierto un problema para esto: https://github.com/scikit-learn/scikit-learn/issues/1085 –

+0

El problema se ha corregido en la versión 0.12 –

Cuestiones relacionadas