Разделение данных на тренировочный, валидационный и тестовый наборы
Назначение каждого набора
Типичное распределение данных
Пример разделения данных в Python
import yfinance as yf
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
# Загрузка данных котировок BTC с yfinance
ticker = "BTC-USD"
data = yf.download(ticker, start="2020-01-01", end="2023-01-01")
# Преобразование данных в формат Pandas DataFrame
data = pd.DataFrame(data["Adj Close"])
data = data.rename(columns={"Adj Close": "Price"})
# Разделение данных на тренировочный, валидационный и тестовый наборы
train_size = 0.6
val_size = 0.2
test_size = 0.2
X_train, X_test, y_train, y_test = train_test_split(data.index, data["Price"], test_size=test_size, shuffle=False)
X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=val_size/(train_size+val_size), shuffle=False)
# Построение графика цены закрытия
plt.figure(figsize=(12, 6))
plt.plot(X_train, y_train, color='green', label='Тренировочный набор')
plt.plot(X_val, y_val, color='blue', label='Валидационный набор')
plt.plot(X_test, y_test, color='red', label='Тестовый набор')
plt.xlabel('Дата')
plt.ylabel('Цена закрытия')
plt.title(f'Котировки {ticker}')
plt.legend()
plt.show()
PreviousPrecision, Recall, F1-scoreNextМониторинг метрик на валидационном наборе во время обучения для предотвращения переобучения
Last updated