Я столкнулся со странной проблемой с kde.score_samples - или, по крайней мере, я думаю, что именно в этом проблема.Я строю почасовые подсчеты за целый год, используя kde для их сглаживания.График Excel для почасовых подсчетов за год выглядит следующим образом:
Код:
band=0.5
plt.figure(figsize=[10,3],facecolor=None,)
X_plot = np.linspace(0, 364, 8734)[:, np.newaxis]
kde = KernelDensity(kernel='tophat', bandwidth=band).fit(count)
log_dens = kde.score_samples(X_plot)
ax = plt.axes()
ax.xaxis.set_major_locator(ticker.MultipleLocator(30))
plt.plot(X_plot[:, 0], np.exp(log_dens), '-')
Когда я устанавливаю его для ежедневного kde (как показановыше) Вывод дает это:
Когда я устанавливаю это на неделю, строка кода выше изменяется на:
X_plot = np.linspace(0, 51, 8734)[:, np.newaxis]
Я получаю это:
Хуже всего, когда я на самом деле делаю kde по часам:
X_plot = np.linspace(0, 8733, 8734)[:, np.newaxis]
Я только что закончил делать KDE длянормальное распределение, N (0,1), из 10000 случайно выбранных точек, и это работало нормально, используя подобный код.
Что я пробовал: я просмотрел данные вручную и не вижу ничего, что могло бы взорвать первые две недели года.Я также попытался преобразовать логарифмическую вероятность обратно в стандартную вероятность, и ошибка сохраняется.Я также попытался использовать диапазон от 1 до 365 вместо этого, и это тоже не сработало.Данные идут с 1 января по 31 января, поэтому я не уверен, почему их не хватает примерно на день (8734 часа), и меня это не беспокоит.Также пробовал несколько вариантов алгоритма.
Так что же за глупость я сделал?