English English

Einführung in die Nutzung von Machine Learning zur Mustererkennung in Python

Dies ist ein Einführungsbeispiel in Machine Learning und Mustererkennung (Pattern Recognition) von bestimmten Daten. Es wird ein Python-Programm programmiert, das die Art von Pflanzen vorhersagen soll.

Es wird dafür das Iris Dataset verwendet. Für das Klassifizieren von Daten wird ein Decision tree (Entscheidungsbaum) verwendet. In diesem Tutorial wird Python 3.6 verwendet. Python 3.5 oder neuer wird für dieses Tutorial benötigt. Es wird dabei gezeigt wie man mit Hilfe von Machine Learning, einem Programm beibringen kann, Pattern von bestehenden Daten zu erstellen und aus diesen Vorhersagen zu berechnen.

Was ist Iris Dataset?

Das Iris Dataset ist ein multivariate Datenset, das 50 Datenproben von jeweils drei "Iris" Pflanzenarten enthält. Aus diesem Datenset kann man mit Hilfe von Machine Learning bestimmte Pattern (Daten-Muster) erkennen. Dieses Dataset wird gerne von Anfängern für Machine Learning Projekte benutzt.

Was ist ein Entscheidungsbaum (Decision Tree)?

Ein "Decision Tree" wird verwendet um Entscheidungen zu treffen. Dieses ist wie einem Flussdiagramm ähnlich und besteht aber aus Knotenpunkten, wo Entscheidungen in einem Binärsystem (ja oder nein) getroffen werden. Jede Entscheidung wird mit einem Knotenpunkt repräsentiert. Ein Entscheidungsbaum eignet sich sehr für Daten mit wenig Attributen und es benötigt nur eine geringere Datenaufbereitung.  Bei größeren Datenmengen sollte man einen anderen Algorithmus verwendet, der viel genauere Vorhersagen erstellen kann. 



Vorraussetzungen

Folgende Pakete müssen installiert sein:

  • NumPy (>= 1.11.0),
  • SciPy (>= 0.17.0),
  • joblib (>= 0.11) und
  • scikit-learn

scikit-learn kann über den Paketmanager pip installiert werden:

pip install scikit-learn


Installation auf der Windows CMD:

python -m pip install scikit-learn



Programm

Nun wird ein Python-Program erstellt, das aus dem vorhandenen Dataset lernen soll und bestimmte Pattern herausfinden soll. Das Paket "numby" wird verwenden um das Datenset in einem Array zu speichern. "Numby" wird immer beim Arbeiten mit Datenset benutzt, z.B bei Machine Learning.
Das Paket "Scikit-learn" wird für das Machine Learning verwendet. Es wird das Programm "tree" (für die Verwendung eines Decision Tree) und das Programm "accuracy_score" von diesem Paket aufgerufen. Das Iris Datenset befindet sich im Package "sklearn.datasets".

from sklearn import tree
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
import numpy

#Datenset aufbereiten - Über iris.data die Daten laden - Über iris.target die Beschreibungen der Daten laden
#Die Bezeichnungen der Pflanzenarten können über "iris_target_names" abgerufen werden. Die Bezeichnungen sind als IDs (Nummern) gespeichert (in data).
iris = load_iris()
x_coordinate = iris.data
y_coordinate =  iris.target
plant_names = iris.target_names

#Zufällige Indizes erstellen, die zum Abrufen der Daten im Iris Dataset verwendet werden
array_ids = numpy.random.permutation(len(x_coordinate))

#In "train" werden die Daten zum Lernen für das Machine Learning Programm verwendet.
#In "real" werden die tatsächlichen Daten gespeichert, die zur Überprüfung der vorrausgesagten Daten verwendert wird
#Die letzten 15 Werte werden für "real" zur Überprüfung verwendet, der Rest wird für "train" verwendet.
x_coordinate_train = x_coordinate[array_ids[:-15]]
x_coordinate_real = x_coordinate[array_ids[-15:]]

y_coordinate_train = y_coordinate[array_ids[:-15]]
y_coordinate_real = y_coordinate[array_ids[-15:]]

#Klassifizierung der Daten über einen Decision Tree durchführen und diesen mit den zuvor erstellten Daten trainieren
data_classification = tree.DecisionTreeClassifier()
data_classification.fit(x_coordinate_train,y_coordinate_train)

#Vorhersagen aus den bestehenden Daten (in Datenset "real") erstellen
prediction = data_classification.predict(x_coordinate_real)

#Die vorhergesagten Bezeichnungen anzeigen
print(prediction)
#Die tatsächlichen Werte
print(y_coordinate_real)
#Die Genauigkeit der Vorhergesagten Daten berechnen -
# Methode accuracy_score() bekommt den Vorhergesagten Wert und den tatsächlichen Wert geliefert
print("Accuracy in percent: %.2f" %((accuracy_score(prediction,y_coordinate_real)) * 100))

Wenn dieser Programm-Code dann in Python ausgeführt wird, dann wird folgendes Ausgegeben. Die Ausgabe variiert nach jedem Ausführen dieses Programm-Codes. Die Bezeichnungen der Pflanzenarten werden als IDs in einem Array gespeichert und ausgegeben.

Ausgabe:

[1 1 0 2 2 0 1 2 1 0 2 1 2 0 2]
[2 1 0 2 2 0 1 2 1 0 2 1 2 0 2]
Accuracy in percent: 93.33

Die IDs der Iris Pflanzenarten: 0 ist Iris setosa, 1 ist Iris versicolor, 2 ist Iris virginica
In der ersten Zeile stehen berechneten Vorhersagen, die durch Machine Learning erstellt worden.
In der zweiten Zeile die tatsächlichen Werte, die zur Überprüfung der Korrektheit von der durch diesen Algorithmus berechneten Vorhersage verwendet werden. Es wurde wie man hier sehen kann, die Pflanzenarten zu ca. 93% richtig vorhergesagt. Die Genauigkeit der Vorhersagen kann sich je nach Aufruf dieses Programms und Anzahl der verwendeten Daten ändern.

Probieren Sie auch dieses Programm mit größeren Datensets als die hier verwendeten "15". Je mehr man diesem Programm an Daten liefert, desto besser kann dieses Programm Daten-Pattern erkennen und daraus Vorhersagen erstellen. Machine Learning, wie man hier in diesem Einführungsbeispiel sehen kann, kommt z.B in der Logistik im Einsatz, um die in Zukunft benötigte Anzahl an Warenvorrat zu berechnen. Dabei werden zur Berechnung dieser Vorhersage zum Beispiel vorhandene Daten über die Anzahl der Warenbestellungen verwendet.




Cookies erleichtern die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklären Sie sich damit einverstanden, dass wir Cookies verwenden.
Ok