18.1. Trenowanie klasyfikatora dla cech ciągłych

# Wczytanie bibliotek.
from sklearn import datasets
from sklearn.naive_bayes import GaussianNB

# Wczytanie danych.
iris = datasets.load_iris()
features = iris.data
target = iris.target

# Utworzenie obiektu naiwnego klasyfikatora bayesowskiego Gaussa.
classifer = GaussianNB()

# Wytrenowanie modelu.
model = classifer.fit(features, target)





# Utworzenie nowej obserwacji.
new_observation = [[ 4,  4,  4,  0.4]]

# Prognoza klasy.
model.predict(new_observation)

array([1])





# Utworzenie obiektu naiwnego klasyfikatora bayesowskiego Gaussa z wartościami prawdopodobieństwa poszczególnych klas.
clf = GaussianNB(priors=[0.25, 0.25, 0.5])

# Wytrenowanie modelu.
model = classifer.fit(features, target)





18.2. Trenowanie klasyfikatora dla cech dyskretnych lub liczebnych

# Wczytanie bibliotek.
import numpy as np
from sklearn.naive_bayes import MultinomialNB
from sklearn.feature_extraction.text import CountVectorizer

# Utworzenie tekstu.
text_data = np.array(['I love Brazil. Brazil!',
                      'Brazil is best',
                      'Germany beats both'])

# Utworzenie worka słów.
count = CountVectorizer()
bag_of_words = count.fit_transform(text_data)

# Utworzenie macierzy cech.
features = bag_of_words.toarray()

# Utworzenie wektora docelowego.
target = np.array([0,0,1])

# Utworzenie obiektu wielomianowego naiwnego klasyfikatora bayesowskiego z wartościami prawdopodobieństwa 
poszczególnych klas.
classifer = MultinomialNB(class_prior=[0.25, 0.5])

# Wytrenowanie modelu.
model = classifer.fit(features, target)





# Utworzenie nowej obserwacji.
new_observation = [[0, 0, 0, 1, 0, 1, 0]]

# Prognoza klasy nowej obserwacji.
model.predict(new_observation)

array([0])





18.3. Trenowanie naiwnego klasyfikatora bayesowskiego dla cech binarnych

# Wczytanie bibliotek.
import numpy as np
from sklearn.naive_bayes import BernoulliNB

# Utworzenie trzech cech binarnych.
features = np.random.randint(2, size=(100, 3))

# Utworzenie binarnego wektora docelowego.
target = np.random.randint(2, size=(100, 1)).ravel()

# Utworzenie obiektu naiwnego klasyfikatora bayesowskiego Bernoulliego z wartościami prawdopodobieństwa poszczególnych klas.
classifer = BernoulliNB(class_prior=[0.25, 0.5])

# Wytrenowanie modelu.
model = classifer.fit(features, target)





18.4. Kalibrowanie prognozowanego prawdopodobieństwa

# Wczytanie bibliotek.
from sklearn import datasets
from sklearn.naive_bayes import GaussianNB
from sklearn.calibration import CalibratedClassifierCV

# Wczytanie danych.
iris = datasets.load_iris()
features = iris.data
target = iris.target

# Utworzenie obiektu naiwnego klasyfikatora bayesowskiego Gaussa.
classifer = GaussianNB()

# Zdefiniowanie skalibrowanego sprawdzianu krzyżowego wraz z kalibracją esowatą.
classifer_sigmoid = CalibratedClassifierCV(classifer, cv=2, method='sigmoid')

# Kalibrowanie prawdopodobieństwa.
classifer_sigmoid.fit(features, target)

# Utworzenie nowej obserwacji.
new_observation = [[ 2.6,  2.6,  2.6,  0.4]]

# Wyświetlenie skalibrowanego prawdopodobieństwa.
classifer_sigmoid.predict_proba(new_observation)

array([[ 0.31859969,  0.63663466,  0.04476565]])





# Wytrenowanie naiwnego klasyfikatora bayesowskiego Gaussa i prognozy klasy.
classifer.fit(features, target).predict_proba(new_observation)

array([[2.31548432e-04, 9.99768128e-01, 3.23532277e-07]])





# Wyświetlenie skalibrowanego prawdopodobieństwa.
classifer_sigmoid.predict_proba(new_observation)
array([[ 0.31859969,  0.63663466,  0.04476565]])

array([[0.31859969,  0.63663466,  0.04476565]])
