Naive Bayes - Single feature
Dabei geht es um ein einziges Merkmal, welches vorhergesagt werden soll. Um so etwas zu bauen, sollte man mit System vorgehen. Ein Beispiel zeigt das am Besten:
Worum geht es ?
- Es gibt Wetterdaten (sonnig, bewölkt, regnerisch)
- Es gibt Temperaturdaten (heiss, mild, kalt)
- Es gibt Aktionsdaten - spiele (zum Beispiel Tennis) - (J, N) - Ja, Nein
Im folgenden Beispiel sind das Wetter und die Temperatur die Merkmale und spiele ist das Label (Etikett, Ergebnis .... )
Die Übersicht der vorhandenen Daten:
Datei: NaiveBayesSingleFeature.py
Version:1.0 StartHTML:0000000128 EndHTML:0000003153 StartFragment:0000000128 EndFragment:0000003153 SourceURL:about:blank
# Implementierung Naive Bayes - Single Feature
# 2022 Ehrenfried Stuhlpfarrer
# Import der erforderlichen Bibliotheken
# Labelencoder
from sklearn import preprocessing
# Gauss Naive Bayes - Model
from sklearn.naive_bayes import GaussianNB
# Zuordnen der Merkmale und Etiketten
# Features - Labels
wetter = ["sonnig", "sonnig", "bedeckt", "regnerisch", "regnerisch",
"bedeckt", "sonnig", "sonnig", "regnerisch", "bedeckt", "regnerisch"]
temperatur = ["heiss", "heiss", "heiss", "mild", "kalt", "kalt", "mild", "kalt",
"mild", "mild", "mild"]
spiele = ["N", "N", "J", "J", "N", "N", "J", "J", "J", "J", "J"]
# Objektinstanz - Label Encoder
LblEncoder = preprocessing.LabelEncoder()
# Die String Labels in Zahlen umwandeln
encodeWetterdaten = LblEncoder.fit_transform(wetter)
encodeTemperaturdaten = LblEncoder.fit_transform(temperatur)
encodeSpieledaten = LblEncoder.fit_transform(spiele)
# Ausgabe der codierten Labels
print("Kodierte Wetterdaten: \n", encodeWetterdaten)
print("Kodierte Temperaturdaten: \n", encodeTemperaturdaten)
print("Kodierte Spieledaten: \n", encodeSpieledaten)
-------------------------------------------------------------------------
Kodierte Wetterdaten: [2 2 0 1 1 0 2 2 1 0 1] Kodierte Temperaturdaten: [0 0 0 2 1 1 2 1 2 2 2] Kodierte Spieledaten: [1 1 0 0 1 1 0 0 0 0 0]
-------------------------------------------------------------------------
# Kombinieren der Wetter und Temperaturdaten in einem Tupel
kombinierteMerkmale = tuple(zip(encodeWetterdaten, encodeTemperaturdaten))
print("Merkmale kombiniert: \n", kombinierteMerkmale)
-------------------------------------------------------------------------
Merkmale kombiniert: ((2, 0), (2, 0), (0, 0), (1, 2), (1, 1), (0, 1), (2, 2), (2, 1), (1, 2), (0, 2), (1, 2))
-------------------------------------------------------------------------
# Gauss - Klassifizierer generieren
NaiveBayesModel = GaussianNB()
# Das Modell trainieren
NaiveBayesModel.fit(kombinierteMerkmale, encodeSpieledaten)
# Die Prognose - Ausgabe vorhersagen
vorhergesagt = NaiveBayesModel.predict([[1, 0]]) # regnerisch, heiss
print("Vorhergesagt: \n", vorhergesagt)
-------------------------------------------------------------------------
Vorhergesagt: [1]
-------------------------------------------------------------------------
Es wird also nicht gespielt!