При предварительной обработке данных и разработке функций для алгоритма ML дата и время являются очень важными функциями для моей задачи, поэтому я хотел закодировать их как циклические переменные.У меня есть около 6k-7k точек данных в наборе данных, содержащих дневные интервалы от 1 до 31, месячные интервалы 1–12, час 00–23, минута 00–59.Поэтому я разделил метку времени на столбцы год, месяц, день, час и минуты.
Я также кодировал месяц, день, час и минуты, как описано здесь https://ianlondon.github.io/blog/encoding-cyclical-features-24hour-time/, поэтому алгоритм «получает точку», что, например, для.01 ноября и 31 октября (в днях) ближе друг к другу, чем 25 октября и 31 октября.
Вот код, с помощью которого я преобразовал компоненты:
# Transform the cyclical features
cyclic_df['min_sin'] = np.sin(cyclic_df.minute*(2.*np.pi/59)) # Sinus component of minute
cyclic_df['min_cos'] = np.cos(cyclic_df.minute*(2.*np.pi/59)) # Cosinus component of minute
cyclic_df['hr_sin'] = np.sin(cyclic_df.hour*(2.*np.pi/23)) # Sinus component of hour
cyclic_df['hr_cos'] = np.cos(cyclic_df.hour*(2.*np.pi/23)) # Cosinus component of hour
cyclic_df['d_sin'] = np.sin(cyclic_df.day*(2.*np.pi/30)) # Sinus component of day
cyclic_df['d_cos'] = np.cos(cyclic_df.day*(2.*np.pi/30)) # Cosinus component of day
cyclic_df['mnth_sin'] = np.sin((cyclic_df.month-1)*(2.*np.pi/12)) # Sinus component of minute
cyclic_df['mnth_cos'] = np.cos((cyclic_df.month-1)*(2.*np.pi/12)) # Cosinus component of minute
# We drop the useless features, because we don't need them anymore, as for this model we extracted from it all features that we need.
cyclic_df.drop(['minute', 'hour', 'day', 'month'], axis=1, inplace=True)
Теперь, когда я строю графики преобразованных компонентов, вот что я получаю:
Мои 3 вопроса: 1) Как добавить на графике число часов (00-23), месяца (1-12), дня (1-31)?2) Как я могу изменить размер шрифта заголовка каждого участка?И как уменьшить разницу между подзаголовком и вспомогательными участками?Это огромная!3) Могу ли я использовать Seaborn для создания того же графика выше, чтобы график выглядел лучше и с лучшей цветовой палитрой?
Вот код, который я использовал для построения:
fig, axes = plt.subplots(nrows=2, ncols=2, figsize=(12,12))
fig.suptitle("Representation Of Cyclical Features", fontsize=16)
cyclic_df.sample(6000).plot.scatter('d_cos','d_sin', title='Cyclical Days Transformation',
ax=axes[0,0]).set_aspect('equal')
cyclic_df.sample(6000).plot.scatter('mnth_cos','mnth_sin', title='Cyclical Months Transformation', ax=axes[0,1]).set_aspect('equal')
cyclic_df.sample(6000).plot.scatter('hr_cos','hr_sin', title='Cyclical Hours Transformation', ax=axes[1,0]).set_aspect('equal')
cyclic_df.sample(6000).plot.scatter('min_cos','min_sin',title='Cyclical Minutes Transformation', ax=axes[1,1]).set_aspect('equal')