AI Artificial Intelligence

Viele Teile ergeben ein Ganzes! Die Kunst unwichtige Details zu vermeiden!

Naive Bayes - Multiple labels

Man könnte damit zum Beispiel einen New - Artikel über Technologie, Politik, oder Wirtschaft klassifizieren. Für das Beispiel verwende ich das Datenset von Iris - Blumen.

Download Iris - Data: https://archive.ics.uci.edu/ml/machine-learning-databases/iris/

Die Merkmale sind Länge und Breite des Kelchblattes und des Blütenblatts. Und je nach Größe dieser Blätter, gibt es drei Iris - Arten:  Setosa, Versicolor und Virginica.

Ein Beispiel soll die Vorhersagegenauigkeit demonstrieren.

Datei: NaiveBayesMultipleLabels.py

# Implementierung Naive Bayes - Single Feature
# 2022 Ehrenfried Stuhlpfarrer

# Import der erforderlichen Bibliotheken
# scikit-learn - Dataset Library
from sklearn import datasets
# Train test - split function
from sklearn.model_selection import train_test_split
# Gauss - Naive Bayes Model
from sklearn.naive_bayes import GaussianNB

# Das Iris - Dataset laden
iris_blumen = datasets.load_iris()
# print("Iris Dataset: ", iris_blumen)

# Die Namen der Merkmale ausgeben
print("Merkmale: \n", iris_blumen.feature_names)

# Die Namen der Labels ausgeben
print("Labels: \n", iris_blumen.target_names)

# Ausgabe des Datenformats
print("Datenformat:\n", iris_blumen.data.shape)

# Ausgabe der ersten 10 Datenmerkmale
print(iris_blumen.data[0:10])

# Aufteilen der Daten in Trainingsset u. Testset
# 70% für Training und 30% für das Testen
X_train, X_test, y_train, y_test = train_test_split(iris_blumen.data,
iris_blumen.target, test_size=0.3, random_state=115)

# Gaussian - Klassifizierer generieren
NB_iris = GaussianNB()

# Das Klassifizierungsmodell mit den Trainingsdaten trainieren
NB_iris.fit(X_train, y_train)

# Die Vorhersagen - aus dem Test - Dataset
y_pred = NB_iris.predict(X_test)
print("Vorhersagen: \n", y_pred)

# Modul für die Genauigkeitsmessung der Vorhersage importieren
from sklearn import metrics
print("Genauigkeit: ", metrics.accuracy_score(y_test, y_pred))

Ausgabe: --------------------------------------------------------------
Merkmale: 
 ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)']
Labels: 
 ['setosa' 'versicolor' 'virginica']
Datenformat:
 (150, 4)
[[5.1 3.5 1.4 0.2]
 [4.9 3.  1.4 0.2]
 [4.7 3.2 1.3 0.2]
 [4.6 3.1 1.5 0.2]
 [5.  3.6 1.4 0.2]
 [5.4 3.9 1.7 0.4]
 [4.6 3.4 1.4 0.3]
 [5.  3.4 1.5 0.2]
 [4.4 2.9 1.4 0.2]
 [4.9 3.1 1.5 0.1]]
Vorhersagen: 
 [0 0 1 2 0 2 1 1 0 1 0 0 2 0 2 0 2 0 1 2 2 1 1 0 1 0 1 0 0 2 2 2 2 1 1 0 1
 2 0 0 0 2 2 1 0]
Genauigkeit:  0.9333333333333333
Dies entspricht einer Genauigkeit von ca. 93%. Das ist nicht schlecht.

KI

Copyright © 2022. All Rights Reserved. Ehrenfried Stuhlpfarrer