Корреляции
Перед построением моделей машинного обучения полезно проверить корреляции: так можно увидеть, какие признаки наиболее тесно связаны с целевой переменной. Для этого часто используют коэффициент корреляции Пирсона, который выявляет только линейные зависимости. Обычно предполагается, что данные распределены нормально — это можно оценить на глаз по гистограммам. Сильно коррелирующие переменные имеют коэффициент корреляции Пирсона, близкий к 1 (положительная корреляция) или к −1 (отрицательная корреляция). Значение, близкое к 0, означает отсутствие линейной корреляции между переменными.
Если использовать одинаковые временные периоды для прошлых и будущих изменений цены, можно определить, возвращается ли цена акции к среднему значению (колеблется вокруг него) или следует тренду (продолжает расти, если недавно росла).
Это упражнение является частью курса
Машинное обучение для финансов на Python
Инструкции к упражнению
Используя DataFrame lng_df и его колонку Adj_Close:
- Создайте будущую цену через 5 дней (как
5d_future_close) с помощью метода.shift(-5)из pandas. - Примените
pct_change(5)к5d_future_closeиAdj_Close, чтобы получить будущее 5-дневное процентное изменение цены (5d_close_future_pct) и текущее 5-дневное процентное изменение цены (5d_close_pct). - Изучите корреляции между двумя колонками 5-дневного процентного изменения цены с помощью
.corr()наlng_df. - Используя
plt.scatter(), постройте точечный график5d_close_pctи5d_close_future_pct.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Create 5-day % changes of Adj_Close for the current day, and 5 days in the future
lng_df['5d_future_close'] = lng_df['Adj_Close'].shift(____)
lng_df['5d_close_future_pct'] = lng_df['5d_future_close'].pct_change(5)
lng_df['5d_close_pct'] = lng_df['Adj_Close'].pct_change(____)
# Calculate the correlation matrix between the 5d close pecentage changes (current and future)
corr = lng_df[['5d_close_pct', '5d_close_future_pct']].____
print(corr)
# Scatter the current 5-day percent change vs the future 5-day percent change
plt.scatter(lng_df['5d_close_pct'], lng_df[____])
plt.show()