У меня есть фреймворк из 60 тыс. Записей, помеченных как 0 или 1. Чтобы провести некоторый тест, я хотел бы провести две разные перекрестной проверки: 1-ая с использованием 20 тыс. Записей и вторая с использованием 40 тыс. Записей.
Для этого я использовал параметр n_sample в make_classification:
X, y = make_classification(n_samples=40000)
Однако у меня есть это предупреждение:
UndefinedMetricWarning: Precision and F-score are ill-defined and being set to 0.0 in labels with no predicted samples. Use `zero_division` parameter to control this behavior.
И мой результат:
precision recall f1-score support
0 0.50 1.00 0.67 20019
1 0.00 0.00 0.00 19981
accuracy 0.50 40000
macro avg 0.25 0.50 0.33 40000
weighted avg 0.25 0.50 0.33 40000
Whit 0.00
значение для P, R и F1.
Вот снимок моего кода
X, y = make_classification(n_samples=40000)
start = time()
clf = svm.SVC(kernel='rbf',
C=3,
gamma=3,
)
print("K-Folds scores:")
originalclass = []
predictedclass = []
def classification_report_with_accuracy_score(y_true, y_pred):
originalclass.extend(y_true)
predictedclass.extend(y_pred)
return accuracy_score(y_true, y_pred) # return accuracy score
inner_cv = StratifiedKFold(n_splits=10)
outer_cv = StratifiedKFold(n_splits=10)
# Nested CV with parameter optimization
nested_score = cross_val_score(clf, X=X, y=y, cv=outer_cv,
scoring=make_scorer(classification_report_with_accuracy_score))
# Average values in classification report for all folds in a K-fold Cross-validation
print(classification_report(originalclass, predictedclass))
print("10 folds processing seconds: {}".format(time() - start))
Что я делаю не так?