#python #pandas #dataframe #scikit-learn #classification
#python #pandas #фрейм данных #scikit-learn #классификация
Вопрос:
Привет, если мы сделаем следующее для вычисления точности перекрестной проверки:
cv_acc = cross_val_score(model, X_train, y_train, cv=5, scoring='accuracy')
Возможно ли оценить прогнозы y и создать матрицу путаницы (как показано ниже), используя те же входные данные для k-сгибов в cross_val_score
?
y_pred = cross_val_predict(model, X_train, y_train, cv=5)
conf_mat = confusion_matrix(y_test, y_pred)
Есть ли способ сохранить, как k-сгибы точно разделены в cross_val_score
, чтобы обеспечить сопоставимую матрицу путаницы?
Приветствия 🙂
Ответ №1:
Должно сработать следующее:
from sklearn.model_selection import KFold, cross_val_score, cross_val_predict
k_folds = KFold(n_splits=5)
splits = list(k_folds.split(X_train, y_train)) # note list here as k_folds.split is a one-off generator
cv_acc = cross_val_score(model, X_train, y_train, cv=splits, scoring='accuracy')
y_pred = cross_val_predict(model, X_train, y_train, cv=splits)
Подробнее см. Документы для cross_val_score и cross_val_predict.
Полный рабочий пример:
from sklearn.model_selection import KFold, cross_val_score, cross_val_predict
from sklearn.datasets import make_classification
from sklearn.linear_model import LogisticRegression
k_folds = KFold(n_splits=5)
X_train, y_train = make_classification(1000)
splits = list(k_folds.split(X_train, y_train))
model = LogisticRegression()
cv_acc = cross_val_score(model, X_train, y_train, cv=splits, scoring='accuracy')
y_pred = cross_val_predict(model, X_train, y_train, cv=splits)
Комментарии:
1. Спасибо, приятель!! Отличная помощь 🙂