← На главную Воспоминания

Суббота, 20 Января 2024

Прошел урок по тренду из тайм сириес на кагле. Тренд это линия показывающая что будет дальше, может быть прямая, парабола(второй стпени), третьей степени и тд.

Moving Average Plot

Мувинг эвередж это среднее значение данных взятое в каком то отрезке этих значений. если взять по маленьким отрезкам и взять среднее, то график сгладиться и можно будет увидить куда идет тренд линия: вверх, вниз или на одном уровне

moving_average = tunnel.rolling(
    window=365,       # 365-day window
    center=True,      # puts the average at the center of the window
    min_periods=183,  # choose about half the window size
).mean()              # compute the mean (could also do median, std, min, max, ...)

ax = tunnel.plot(style=".", color="0.5")
moving_average.plot(
    ax=ax, linewidth=3, title="Tunnel Traffic - 365-Day Moving Average", legend=False,
)

Предсказание через создание тренд переменной

Через стастмоделс можно создать детерминированые значения

from statsmodels.tsa.deterministic import DeterministicProcess

dp = DeterministicProcess(
    index=tunnel.index,  # dates from the training data
    constant=True,       # dummy feature for the bias (y_intercept)
    order=1,             # the time dummy (trend)
    drop=True,           # drop terms if necessary to avoid collinearity
)
# `in_sample` creates features for the dates given in the `index` argument
X = dp.in_sample()

X.head()

далее можно обучить линейную регрессию на trend фиче и предсказать количество машин.

from sklearn.linear_model import LinearRegression

y = tunnel["NumVehicles"]  # the target

# The intercept is the same as the `const` feature from
# DeterministicProcess. LinearRegression behaves badly with duplicated
# features, so we need to be sure to exclude it here.
model = LinearRegression(fit_intercept=False)
model.fit(X, y)

y_pred = pd.Series(model.predict(X), index=X.index)

Так как мы использовали детерминистик процесс, тот который мы можем легко предугадать(+1 каждый раз), мы можем использовать полученый результат для предсказания следующих значений. В данном случае 30 следующих

X = dp.out_of_sample(steps=30)

y_fore = pd.Series(model.predict(X), index=X.index)

y_fore.head()

Интересные идеи


Идея проекта

Игра в doodle jump. Сделать программу которая сама будет играть в нее.
Как сделать: делать скриншоты экрана игры и предсказывать(класификатор) с помощью конволюшн сети которую кнопку жать: лево, право или никакую. Делать скриншоты 10 раз в секунду. Сначала самому наиграть большое количество скриншотов чтобы было на чем обучаться и далее предоставить их моделе