Причина в том, что в ваших наблюдениях есть еще больше 1, чем у 768-х годов. Таким образом, даже если -1 не точно 1, он получает высокое прогнозируемое значение, поскольку гистограмма имеет гораздо большее значение, большее, чем на 1 на 768.
до мультипликативной константы, формула для предсказания:

где K - ваше ядро, D ваши наблюдения и h ваша bandwitdh. Если посмотреть на the doc for gaussian_kde
, мы видим, что если значение не указано для bw_method
, то оно оценивается каким-то образом, что вам здесь не подходит.
Таким образом, вы можете попробовать несколько разных значений: чем больше ширина полосы пропускания, тем больше очков, далеких от ваших новых данных, принимается во внимание, а предельный случай является почти постоянной предсказанной функцией.
С другой стороны, очень небольшая полоса пропускания учитывает только очень тесные точки, что я и хочу.
Некоторые графики, чтобы проиллюстрировать влияние пропускной способности: 
код используется:
import matplotlib.pyplot as plt
f, axarr = plt.subplots(2, 2, figsize=(10, 10))
for i, h in enumerate([0.01, 0.1, 1, 5]):
my_pdf = gaussian_kde(osservazioni, h)
axarr[i//2, i%2].plot(x, my_pdf(x), 'r') # distribution function
axarr[i//2, i%2].set_title("Bandwidth: {0}".format(h))
axarr[i//2, i%2].hist(osservazioni, normed=1, alpha=.3) # histogram
С текущего кода, при х = -1, значение К ((х-X_i)/h) для всех x_i, равных 1, меньше 1, но вы добавляете много этих значений (в ваших наблюдениях 921 1 с, а также 357 2s)
С другой стороны, для x = 768, значение ядра равно 1 для всех x_i, которые равны 7 68, но таких точек не так много (точнее, 39). Таким образом, здесь множество «малых» терминов составляют большую сумму, чем небольшое количество более крупных терминов.
Если вы не хотите этого поведения, вы можете уменьшить размер вашего гауссовского ядра: таким образом, штраф (K (-2)), заплаченный из-за расстояния между -1 и 1, будет выше. Но я думаю, что это переполнило бы ваши наблюдения.
формула для определения того, является ли приемлемым новый образец (по сравнению с вашим эмпирического распределения) или нет, более статистической проблемы, вы можете посмотреть на stats.stackexchange.com
Вы всегда можете попробовать использовать низкое значение для полосы пропускания, которая даст вам пиковую прогнозируемую функцию. Затем вы можете нормализовать эту функцию, разделив ее на ее максимальное значение.
После этого, все предсказанные значения будут находиться в диапазоне от 0 до 1:
maxDensityValue = np.max(my_pdf(x))
for e in new_values:
print("{0} {1}".format(e, my_pdf(e)/maxDensityValue))
Что должен представлять ваш счет? Используя KDE, вы получите высокие оценки для значений, близких к частым в вашем наборе данных. Если вас интересует другой результат, возможно, вы подумали об использовании другой модели. – liborm