Как добавить счетчик часов, минут, дней и месяцев к графику? - PullRequest
0 голосов
/ 07 декабря 2018

При предварительной обработке данных и разработке функций для алгоритма 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)

Теперь, когда я строю графики преобразованных компонентов, вот что я получаю: plot of new cyclical features: month, day, hour, minute

Мои 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')
...