Почему модель NB Scikit-learn имеет большую точность? | Как достичь того же результата | Пользовательская реализация GauPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Почему модель NB Scikit-learn имеет большую точность? | Как достичь того же результата | Пользовательская реализация Gau

Сообщение Anonymous »

Я просматривал Gaussian Naive Bayes и задавался вопросом, почему моя собственная реализация имеет меньший балл, чем GaussianNB из реализации scikit-learn. Я получил точность ~0,79, а у модели scikit ~0,82.
На основе моих исследований, что влияет на такую ​​разницу в точности:
  • Эффекты предварительной обработки данных и обработки пропущенных значений. (В моем наборе данных нет пропущенных значений)
  • GaussianNB использует параметр сглаживания. Они назвали его «эпсилон». (Я унаследовал класс GaussianNB и изменил метод таким образом, чтобы он не использовал параметр сглаживания)
  • Выбросы могут изменить мою дисперсию и среднее значение.
    Scikit-learn использует логарифмическую вероятность вместо обычной вероятности. (Моя реализация также использует логарифмическую вероятность)
Как достичь того же уровня точности, что и реализация scikit-learn?
< pre class="lang-py Prettyprint-override">

Код: Выделить всё

from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

my_custom_model = MyCustomNaiveBayes()
my_custom_model.fit(X_train, y_train)
my_custom_model_y_hat = my_custom_model.predict(X_test)
print(f"accuracy score of my_custom model is: {accuracy_score(y_test, my_custom_model_y_hat)}")

sklearn_nb = GaussianNB()
sklearn_nb.fit(X_train, y_train)
sklearn_y_hat = sklearn_nb.predict(X_test)
print(f"accuracy score of sklearn_nb model is: {accuracy_score(y_test, sklearn_y_hat)}")

modified_sklearn_nb = ModifiedGaussianNB()

modified_sklearn_nb.fit(X_train, y_train)
modified_sklearn_nb_y_hat = sklearn_nb.predict(X_test)
print(f"accuracy score of sklearn_nb model is: {accuracy_score(y_test, modified_sklearn_nb_y_hat)}")

Код: Выделить всё

accuracy score of my_custom model is: 0.7980456026058632
accuracy score of sklearn_nb model is: 0.8208469055374593
accuracy score of sklearn_nb model is: 0.8208469055374593
Блокнот Google Colab: https://colab.research.google.com/drive ... sp=sharing
Я отключил переменную эпсилон , однако это не помогло.
Я отключил метод взвешенного среднего и дисперсии, однако эффекта это не дало.

Подробнее здесь: https://stackoverflow.com/questions/784 ... me-score-c
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»