Scikit F-score de la métrique d'erreur

Je suis en train de prévoir un ensemble d'étiquettes à l'aide de De Régression logistique à partir de SciKit. Mes données est vraiment déséquilibré (il y a beaucoup plus de '0' de '1' étiquettes) donc je dois utiliser le F1 score métrique au cours de la croix-étape de validation pour "équilibrer" le résultat.

[Input]
X_training, y_training, X_test, y_test = generate_datasets(df_X, df_y, 0.6)
logistic = LogisticRegressionCV(
    Cs=50,
    cv=4,
    penalty='l2', 
    fit_intercept=True,
    scoring='f1'
)
logistic.fit(X_training, y_training)
print('Predicted: %s' % str(logistic.predict(X_test)))
print('F1-score: %f'% f1_score(y_test, logistic.predict(X_test)))
print('Accuracy score: %f'% logistic.score(X_test, y_test))

[Output]
>> Predicted: [0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0]
>> Actual:    [0 0 0 1 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 0 0 1 1]
>> F1-score: 0.285714
>> Accuracy score: 0.782609
>> C:\Anaconda3\lib\site-packages\sklearn\metrics\classification.py:958:  
   UndefinedMetricWarning:
   F-score is ill-defined and being set to 0.0 due to no predicted samples.

Je sais que le problème est lié à mon dataset: il est trop petit (il est seulement un échantillon de la vraie). Cependant, quelqu'un peut-il expliquer le sens de la "UndefinedMetricWarning" avertissement ce que je vois? Ce qui se passe réellement derrière les rideaux?

Sur une note de côté, si votre jeu de données est VRAIMENT déséquilibré (disons 100000 de '0' et 20 '1') vous pouvez aller loin de tâche de classification pour la détection des anomalies de l'approche. Pour les très biaisée des cas, il fonctionnera beaucoup mieux. Détails: scikit-learn.org/stable/modules/outlier_detection.html
Le déséquilibre est ici 70-30% environ donc je pense que c'est encore adapté à l'utilisation classique des classificateurs. Cependant, votre commentaire peut être extrêmement utile pour les personnes en difficulté avec vraiment biaisée ensembles de données, donc je vous remercie pour l'astuce de toute façon 🙂

OriginalL'auteur David | 2015-07-28