Я планирую построить матрицу путаницы для моей перекрестной проверки, и поскольку матрица путаницы принимает только прогнозы, есть способ сделать это. Но cross_val_predict не может быть использован для CV с разбивкой по времени. Я использую MultinomialNB для моей проблемы.
Я попробовал следующий код:
def tn(y_true, y_pred): return confusion_matrix(y_true, y_pred)[0, 0]
def fp(y_true, y_pred): return confusion_matrix(y_true, y_pred)[0, 1]
def fn(y_true, y_pred): return confusion_matrix(y_true, y_pred)[1, 0]
def tp(y_true, y_pred): return confusion_matrix(y_true, y_pred)[1, 1]
scoring = {'tp' : make_scorer(tp), 'tn' : make_scorer(tn),'fp' :
make_scorer(fp), 'fn' : make_scorer(fn)}
cv_results = cross_validate(nb, train_data, train_label,scoring=scoring, cv=tss)#10 fold time series split
tp = cv_results['test_tp'].sum()
fn = cv_results['test_fn'].sum()
tn = cv_results['test_tn'].sum()
fp = cv_results['test_fp'].sum()
Суммарный счет полученной матрицы путаницы не соответствует общему количеству точек данных поезда, и для каждого сгиба CV я строю матрицу путаницы, которая не является тем, что я хочу.