predict_proba plot_importance importance example cross python scikit-learn cross-validation xgboost

python - plot_importance - XgBoost: la clase menos poblada en y tiene solo 1 miembro, que es muy poca



xgboost python (1)

Estoy usando la implementación de Xgboost en sklearn para una competencia de kaggle. Sin embargo, recibo este mensaje de "advertencia":

$ python Script1.py /home/sky/private/virtualenv15.0.1dev/myVE/local/lib/python2.7/site-packages/sklearn/cross_validation.py:516:

Advertencia: la clase menos poblada en y tiene solo 1 miembro, que es muy poca. El número mínimo de etiquetas para cualquier clase no puede ser menor que n_folds = 3. % (min_labels, self.n_folds)), Advertencia)

De acuerdo con otra pregunta sobre stackoverflow: "Verifique que tenga al menos 3 muestras por clase para poder realizar la validación cruzada de StratifiedKFold con k == 3 (creo que este es el CV predeterminado utilizado por GridSearchCV para la clasificación)".

Y bueno, no tengo al menos 3 muestras por clase.

Entonces mis preguntas son:

a) ¿Cuáles son las alternativas?

b) ¿Por qué no puedo usar la validación cruzada?

c) ¿Qué puedo usar en su lugar?

... param_test1 = { ''max_depth'': range(3, 10, 2), ''min_child_weight'': range(1, 6, 2) } grid_search = GridSearchCV( estimator= XGBClassifier( learning_rate=0.1, n_estimators=3000, max_depth=15, min_child_weight=1, gamma=0, subsample=0.8, colsample_bytree=0.8, objective=''multi:softmax'', nthread=42, scale_pos_weight=1, seed=27), param_grid=param_test1, scoring=''roc_auc'', n_jobs=42, iid=False, cv=None, verbose=1) ... grid_search.fit(train_x, place_id)

Referencias

Aprendizaje de una sola vez con scikit-learn

Usando un clasificador de vector de soporte con kernel polinomial en scikit-learn


Si tiene un objetivo / clase con solo una muestra, eso es muy poco para cualquier modelo. Lo que puede hacer es obtener otro conjunto de datos, de preferencia lo más equilibrado posible, ya que la mayoría de los modelos se comportan mejor en conjuntos equilibrados.

Si no puede tener otro conjunto de datos, tendrá que jugar con lo que tiene. Sugeriría que elimines la muestra que tiene el objetivo solitario. Entonces, tendrás un modelo que no cubre ese objetivo. Si eso no se ajusta a sus requisitos, necesita un nuevo conjunto de datos.