Я чувствую себя немного глупо, потому что застрял на чем-то, что так долго казалось простым, но, так как я собираюсь просунуть голову в стену, я решил попросить о помощи.
У меня есть цикл, который разбивает мои данные на более мелкие подмножества и проходит по каждому из них. Для каждого цикла создается массив y_test
и y_pred
. Это будет переменный размер, но форма (X,). Чтобы построить два массива друг против друга, я просто назначил массивы пустому фрейму данных и просто использовал matplotlib
для построения графика.
Теперь я хотел бы также иметь возможность сохранять итоговую сумму y_pred
и y_test
, чтобы я мог видеть график всего набора данных.
Что я пробовал:
Первоначально я просто попытался создать еще один пустой фрейм данных вне цикла и подумал просто добавить массивы в конец моих столбцов фрейма данных, но я обнаружил, что добавление массивов в фрейм данных невозможно.
Тогда я подумал, что я просто добавляю к пустому массиву каждый раз через цикл и в конце преобразую в массив данных, чтобы построить график, но мне там тоже не повезло, и если я правильно понимаю - np.append
создает новый массив добавленных данных каждый раз, когда я добавляю? Не был уверен, если это будет интенсивно использовать память.
Мне было интересно, как лучше это сделать?
Вот мой код (я попытался удалить много строк, которые не были необходимы для проблемы, чтобы облегчить ее отслеживание):
continuous_results = pd.Dataframe()
tscv = TimeSeriesSplit(n_splits=self.no_splits)
for train_index, test_index in tqdm(tscv.split(X)):
X_train, X_test = X.iloc[train_index], X.iloc[test_index]
y_train, y_test = y.iloc[train_index], y.iloc[test_index]
self.regressor.fit(X_train, y_train.ravel())
# predict y values
y_pred = self.regressor.predict(X_test)
# plot y_pred vs y_test
y_df = pd.DataFrame()
y_pred = y_pred.reshape(len(y_pred), )
y_test = y_test.reshape(len(y_test), )
y_df['y_pred'] = y_pred
y_df['y_test'] = y_test
# failed attempts at continuous dataframe
continuous_results = continuous_results['Model'].append(y_pred[:,:])
continuous_results = continuous_results['Actual'].append(y_test)
y_df.plot()