2015-11-01 5 views
1

Я использую модуль KernelDensity из sklearn.neighbors, но значения оси y являются странными. Кто-нибудь знает, как я могу это исправить? Я хотел бы, чтобы ось y соответствовала процентной вероятности.Как сделать KernalDensity нормализовать до 1?

enter image description here

X = data[:, np.newaxis] 
X_plot = np.linspace(0, 20, 1000)[:, np.newaxis] 
kde = KernelDensity(kernel='gaussian', bandwidth=0.15).fit(X) 
log_dens = kde.score_samples(X_plot) 
axis.plot(X_plot[:, 0], np.exp(log_dens), '-', 
      label="kernel = '{0}'".format('pft')) 
+0

'Я бы хотел, чтобы ось y соответствовала процентной вероятности' - что такое процентная вероятность? – cel

+0

Не уверен, что это то, что вы ищете, но посмотрели ли вы на «MinMaxScaler»? http://scikit-learn.org/stable/modules/generated/sklearn.preprocessing.MinMaxScaler.html – Ryan

+0

Что вы хотите сделать с вероятностью? Классификация? Обнаружение выбросов? Заметим, что с оценкой плотности ядра вы оцениваете функцию плотности вероятности непрерывной случайной величины. Невозможно получить вероятность для отдельного значения с плавающей точкой, вы можете получить вероятность того, что значение находится в определенном интервале, путем интеграции функции плотности в этом интервале. –

ответ

2

оси у в ваших участках выше уже нормализованы, и соответствует плотности вероятности (т.е. интеграл под кривой равна единице). Это действительно единственная нормализация, которая имеет смысл для непрерывной переменной, поскольку «процентная вероятность» любого конкретного значения в непрерывном распределении равна нулю.