Я не могу на самом деле asp понять, как протестировать модель, которая была обучена методом временных рядов. В моем случае у меня есть еженедельные данные о целочисленном значении, которое следует классифицировать как 0 или 1. У меня нет проблем (по крайней мере, я так думаю) с обучением модели, но я изо всех сил пытаюсь ее проверить. Вот несколько фрагментов кода:
#Imports
import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.model_selection import TimeSeriesSplit
from sklearn.model_selection._validation import cross_val_predict
from sklearn.metrics import roc_curve, auc
from sklearn.metrics import roc_auc_score
#Training
validation_size = test_size = 0.2
n_splits = int(np.ceil(validation_size * np.size(X_train)))
tscv = TimeSeriesSplit(n_splits)
#data (weekly int value) has shape (1, 1000) and target (0 or 1) has shape (, 1000)
#and are passed to the function
X_train, X_test, y_train, y_test = train_test_split(data, target, test_size = test_size)
clf = LogisticRegressionCV(cv = tscv, random_state = 0, n_jobs = -1).fit(X_train, y_train)
#Testing ----- here I am not sure
y_score = clf.decision_function(X_test)
predicted_probs = clf.predict_proba(X_test)
positives = predicted_probs[:, 1]
auc = roc_auc_score(y_test, positives)
fpr, tpr, _ = roc_curve(y_test, positives)
plt.plot(fpr, tpr, linestyle = '.', label = 'LogRegCV, AUC:' + str(auc))
plt.xlabel('False Positive Rate')
plt.ylabel('True Positive Rate')
plt.legend()
plt.show()
Разве тест не должен быть также временным рядом? И если да, то каким способом этого добиться удобнее всего? Я ничего не могу найти по этому поводу. Я уже пытался создать массив массивов, содержащий все возможные интервалы от первого дня до последнего дня, и передать его в clf.decision_function(X_test_interval)
и predicted_probs = clf.predict_proba(X_test)
. Но, видимо, я сделал что-то не так, или sklearn не может обрабатывать такие данные, потому что я получаю следующую ошибку: setting an array element with a sequence
.
Я использую: python 3.6.6; numpy 1.18.1; scikit-learn 0.22.1; matplotlib 3.1.3
Буду очень благодарен за любую помощь, спасибо!