Я новичок в python и пытаюсь выполнить задачу случайной регрессии леса. Я импортирую свой набор данных, в котором всего 5 столбцов (включая столбец даты). Мои данные зависят от времени, поэтому я не могу использовать разделение поездов / тестов. Поэтому вместо этого я делаю следующее
feature_cols = [ 'Rainfall' ,'Temperature','Usage amount']
target_v = df['water level']
X = df[feature_cols]
y = target_v
затем я использую разделение временных рядов в sklearn, чтобы разделить мои данные на обучение и тестирование
from sklearn.model_selection import TimeSeriesSplit
tss = TimeSeriesSplit(n_splits = 3)
for train_index, test_index in tss.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]
Теперь мне нужно выполнить предварительную обработку, такую как масштабирование моих данных и удаление среднего значения (детренд). Итак, мой вопрос: что мне делать в первую очередь? т.е. сначала удалить среднее значение, а затем масштабировать данные или сначала масштабировать, а затем удалить среднее значение?
Также могу ли я выполнить 2 метода на всем моем фрейме данных (df) или на подмножестве моих данных (то есть только на данных обучения)? Если это подмножество, как мне это сделать?
Вот пример масштабирования и среднего удаления, которые я пробовал на всем моем фреймворке.
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
df = pd.DataFrame(scaler.fit_transform(df), columns=df.columns, index=df.index)
mean = np.mean((df.values), axis=-1, keepdims=True)
detrended = df - mean
Затем я использовал фрейм данных без тренда для разделения моих данных на обучение и тестирование и запустил свои модели. Не уверен, что это правильный подход? любая помощь будет оценена, спасибо