Я использую GaussianNB из Scikit-Learn для контролируемой классификации. При использовании метода «pred_proba» сумма вероятностей всегда равна 1.
Я хотел бы вернуть реальное значение подобранного гауссовского распределения, потому что мой набор данных содержит много выбросов. Если бы у меня было 3 определенные категории, я бы хотел, чтобы модель сказала мне: «10% относятся к категории А, 0,5% - к категории В и 4% - к категории С». Другими словами, это скорее выброс.
Sklearn также возвращает этот результат? Должен ли я рассчитывать на основе среднего и стандартного отклонения?
Внутри predict_proba()
GaussianNB сначала вычисляет совместное логарифмическое правдоподобие, а затем нормализует его, чтобы получить вероятности (которые в сумме составляют 1). Таким образом, вы можете использовать метод _joint_log_likelihood()
для получения немасштабированных значений.
Наконец, я использовал следующее решение:
gaussian_model = naive_bayes.GaussianNB()
jll = gaussian_model._joint_log_likelihood(X)
raw_proba = np.exp(jll)
raw_proba
не находится между 0 и 1, но поскольку я хочу только ранжировать результаты, меня не волнует сама цифра.
Вы можете просто классифицировать по 4-й категории, при этом 4-я категория представляет выбросы, которые не соответствуют вашим 3 определенным категориям.