Scikit Learn - Classificazione con Naïve Bayes
I metodi Naïve Bayes sono un insieme di algoritmi di apprendimento supervisionato basati sull'applicazione del teorema di Bayes con una forte ipotesi che tutti i predittori siano indipendenti l'uno dall'altro, cioè la presenza di una caratteristica in una classe è indipendente dalla presenza di qualsiasi altra caratteristica nella stessa classe. Questo è un presupposto ingenuo ed è per questo che questi metodi sono chiamati metodi Naïve Bayes.
Il teorema di Bayes afferma la seguente relazione per trovare la probabilità a posteriori di classe, cioè la probabilità di un'etichetta e di alcune caratteristiche osservate, $ P \ left (\ begin {array} {c} Y \ arrowvert features \ end {array} \ right ) $.
$$ P \ left (\ begin {array} {c} Y \ arrowvert features \ end {array} \ right) = \ left (\ frac {P \ lgroup Y \ rgroup P \ left (\ begin {array} {c } features \ arrowvert Y \ end {array} \ right)} {P \ left (\ begin {array} {c} features \ end {array} \ right)} \ right) $$Qui, $ P \ left (\ begin {array} {c} Y \ arrowvert features \ end {array} \ right) $ è la probabilità a posteriori della classe.
$ P \ left (\ begin {array} {c} Y \ end {array} \ right) $ è la probabilità a priori della classe.
$ P \ left (\ begin {array} {c} features \ arrowvert Y \ end {array} \ right) $ è la probabilità che è la probabilità del predittore data la classe.
$ P \ left (\ begin {array} {c} features \ end {array} \ right) $ è la probabilità a priori del predittore.
Lo Scikit-learn fornisce diversi modelli di classificatori Bayes ingenui, vale a dire Gaussiano, Multinomiale, Complemento e Bernoulli. Tutti differiscono principalmente per l'assunzione che fanno riguardo alla distribuzione di $ P \ left (\ begin {array} {c} features \ arrowvert Y \ end {array} \ right) $ cioè la probabilità del predittore data la classe.
Suor n | Descrizione del Modello |
---|---|
1 | Gaussian Naïve Bayes Il classificatore gaussiano Naïve Bayes presume che i dati di ciascuna etichetta siano tratti da una semplice distribuzione gaussiana. |
2 | Naïve Bayes multinomiale Si assume che le caratteristiche siano tratte da una semplice distribuzione multinomiale. |
3 | Bernoulli Naïve Bayes Il presupposto in questo modello è che le caratteristiche binarie (0 e 1) in natura. Un'applicazione della classificazione Bernoulli Naïve Bayes è la classificazione del testo con il modello "borsa di parole" |
4 | Complemento Naïve Bayes È stato progettato per correggere le gravi ipotesi formulate dal classificatore multinomiale Bayes. Questo tipo di classificatore NB è adatto per set di dati sbilanciati |
Building Naïve Bayes Classifier
Possiamo anche applicare il classificatore Naïve Bayes al set di dati Scikit-learn. Nell'esempio seguente, applichiamo GaussianNB e adattiamo il dataset breast_cancer di Scikit-leran.
Esempio
Import Sklearn
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
data = load_breast_cancer()
label_names = data['target_names']
labels = data['target']
feature_names = data['feature_names']
features = data['data']
print(label_names)
print(labels[0])
print(feature_names[0])
print(features[0])
train, test, train_labels, test_labels = train_test_split(
features,labels,test_size = 0.40, random_state = 42
)
from sklearn.naive_bayes import GaussianNB
GNBclf = GaussianNB()
model = GNBclf.fit(train, train_labels)
preds = GNBclf.predict(test)
print(preds)
Produzione
[
1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1
1 1 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1
1 1 1 0 0 1 1 0 0 1 1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 1 0
1 1 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0
1 1 0 1 1 0 0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 0 0 1 1 1
0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1 1 1
1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 0 0 1 1 0
1 0 1 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 0 1
1 1 1 1 0 1 0 0 1 1 0 1
]
L'output di cui sopra consiste in una serie di 0 e 1 che sono fondamentalmente i valori previsti dalle classi tumorali, vale a dire maligne e benigne.