Naive Bayes

Naive Bayes to metoda klasyfikacyjna oparta na teorii prawdopodobieństwa i statystyce. Polega ona na wyznaczeniu prawdopodobieństwa przynależności danej próbki do poszczególnych klas na podstawie jej cech. Algorytm Naive Bayes zakłada, że wszystkie cechy są niezależne od siebie, co oznacza, że każda z nich ma taki sam wpływ na przynależność do klasy.

Naive Bayes jest prostym i szybkim algorytmem, który dobrze sprawdza się w przypadku dużych zbiorów danych o wielu cechach. Jest on też odporny na braki danych i dobrze radzi sobie z niepełnymi zbiorami.

W zależności od rodzaju rozkładu prawdopodobieństwa cech, wyróżniamy kilka rodzajów klasyfikatorów Naive Bayes:

  • Klasyfikator Gaussa (ang. Gaussian Naive Bayes) – stosowany w przypadku cech ciągłych, rozkładających się zgodnie z rozkładem normalnym.
  • Klasyfikator Multinomialny (ang. Multinomial Naive Bayes) – stosowany w przypadku cech dyskretnych, takich jak słowa w tekście.
  • Klasyfikator Bernoulliego (ang. Bernoulli Naive Bayes) – podobny do klasyfikatora multinomialnego, ale zakłada, że cechy są binarne (czyli albo występują, albo nie).
from sklearn.naive_bayes import GaussianNB

# Przygotowanie danych - załóżmy, że mamy zbiór treningowy zawierający cechy oraz etykiety
X = [[1, 2], [2, 4], [3, 6], [4, 8]]  # cechy
y = [0, 0, 1, 1]  # etykiety

# Utworzenie klasyfikatora Naive Bayes z rozkładem Gaussa
clf = GaussianNB()

# Trenowanie klasyfikatora na danych treningowych
clf.fit(X, y)

# Przewidywanie etykiet dla nowych danych
predictions = clf.predict([[5, 10], [1, 3]])

# Wynik: predictions zawiera [1, 0] - czyli przewiduje, że pierwszy obiekt należy do klasy 1, a drugi do klasy 0

W tym przykładzie został utworzony klasyfikator Naive Bayes z rozkładem Gaussa i wytrenowany na danych treningowych (X i y). Następnie zostały wykonane prognozy dla dwóch nowych próbek (X = [[5, 10], [1, 3]]). Klasyfikator przewiduje, że pierwsza próbka należy do klasy 1, a druga do klasy 0.

Należy pamiętać, że algorytm Naive Bayes zakłada niezależność cech, co może prowadzić do niedokładnych prognoz w przypadku, gdy cechy faktycznie są ze sobą powiązane. W takiej sytuacji lepsze rezultaty może dawać inny algorytm klasyfikacyjny.