인공지능&머신러닝

[머신러닝]나이브 베이즈(Naive Bayes)원리와 코드 예시

zzheng 2024. 6. 24. 20:46

나이브 베이즈(Naive Bayes) 분류기는 지도 학습의 한 종류로, 베이즈 정리(Bayes' theorem)에 기반한 분류 알고리즘입니다. 이 알고리즘은 텍스트 분류, 스팸 메일 분류 등 다양한 분야에서 널리 사용하고 있습니다. 따라서 이 글에서는 나이브 베이즈 분류기의 원리와 코드에 대해 자세히 알아보겠습니다.

베이지안 룰

 

나이브 베이지안 분류

  • 사후 확률을 계산하여 더 높은 확률을 가지는 것을 정답으로 분류

 

scikit learn에서 제공하는 나이브 베이지안 종류

  • 가우시안 나이브 베이즈 : GaussianNB()
    • 연속적인 값에 사용
  • 다항분포 나이브 베이즈 : MultimonialNB()
    • 이산적인 값에 사용
    • 하나의 특성이 여러 종류로 나뉘는 경우
  • 베르누이 나이브 베이즈(이항분포) : BernoulliNB()
    • 이산적인 값에 사용
    • 모든 특성이 두 종류로만 나뉘는 경우

 

예제 코드

  • 데이터 불러오기 및 데이터셋 분할하기(아이리스 데이터셋)
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris

dataset = load_iris(   )

y = df['target']
x = df.drop('target', axis=1)
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.33, random_state=42)

x_train.shape, x_test.shape, y_train.shape, y_test.shape
  • 가우시안 나이브 베이즈 코드
from sklearn.naive_bayes import GaussianNB

nb_clf = GaussianNB()
nb_clf.fit(x_train, y_train)
pred = nb_clf.predict(x_test)
print(f"accuracy score: {metrics.accuracy_score(y_test, pred):.3f}")