Einführung in das maschinelle Lernen mit Python
Maschinelles Lernen ist eine Art künstliche Intelligenz (KI), die Computern die Fähigkeit verleiht, zu lernen, ohne explizit programmiert zu werden. Maschinelles Lernen konzentriert sich auf die Entwicklung von Computerprogrammen, die sich ändern können, wenn sie neuen Daten ausgesetzt werden. In diesem Artikel sehen wir uns die Grundlagen des maschinellen Lernens und die Implementierung eines einfachen maschinellen Lernalgorithmus mit Python an.
Einrichten der Umgebung Die Python-Community hat viele Module entwickelt, um Programmierern bei der Implementierung von maschinellem Lernen zu helfen. In diesem Artikel verwenden wir die Module numpy, scipy und scikit-learn. Wir können sie mit dem Befehl cmd installieren:
pip install numpy scipy scikit-learn
Eine bessere Option wäre das Herunterladen von Miniconda- oder Anaconda-Paketen für Python, die mit diesen Paketen vorgebündelt sind. Befolgen Sie die hier gegebenen Anweisungen , um Anaconda zu verwenden.
Überblick über maschinelles Lernen
Beim maschinellen Lernen muss ein Computer mit einem bestimmten Datensatz trainiert werden, und dieses Training wird verwendet, um die Eigenschaften eines bestimmten neuen Datenwerts vorherzusagen. Zum Beispiel können wir einen Computer trainieren, indem wir ihn mit 1000 Bildern von Katzen und 1000 weiteren Bildern, die keine Katze sind, füttern und dem Computer jedes Mal mitteilen, ob ein Bild eine Katze ist oder nicht. Wenn wir dem Computer dann ein neues Bild zeigen, sollte der Computer anhand des obigen Trainings erkennen können, ob dieses neue Bild eine Katze ist oder nicht.
Der Prozess des Trainings und der Vorhersage beinhaltet die Verwendung spezialisierter Algorithmen. Wir führen die Trainingsdaten einem Algorithmus zu, und der Algorithmus verwendet diese Trainingsdaten, um Vorhersagen zu neuen Testdaten zu treffen. Ein solcher Algorithmus ist K-Nearest-NeighborKlassifikation (KNN-Klassifikation). Es nimmt Testdaten und findet k nächste Datenwerte zu diesen Daten aus dem Testdatensatz. Dann wählt es den Nachbarn mit maximaler Frequenz aus und gibt seine Eigenschaften als Vorhersageergebnis an. Zum Beispiel, wenn das Trainingsset ist:
Blütenblatt_Größe | Blumentyp |
---|---|
1 | ein |
2 | B |
1 | ein |
2 | B |
3 | C |
4 | D |
3 | C |
2 | B |
5 | ein |
Jetzt wollen wir den Blütentyp für Blütenblätter mit einer Größe von 2,5 cm vorhersagen. Wenn wir uns also für Nein entscheiden. der Nachbarn (K)=3 sehen wir, dass die 3 nächsten Nachbarn von 2,5 1, 2 und 3 sind. Ihre Frequenzen sind 2, 3 bzw. 2. Daher ist der Nachbar der maximalen Häufigkeit 2 und der ihm entsprechende Blumentyp ist b. Für ein Blütenblatt der Größe 2,5 lautet die Vorhersage also Blütentyp b.
Implementieren des KNN-Klassifizierungsalgorithmus unter Verwendung von Python auf dem IRIS-Datensatz
Hier ist ein Python-Skript, das den knn-Klassifizierungsalgorithmus demonstriert. Hier verwenden wir den berühmten Irisblüten-Datensatz, um den Computer zu trainieren, und geben dem Computer dann einen neuen Wert, um Vorhersagen darüber zu treffen. Der Datensatz besteht aus jeweils 50 Proben von drei Irisarten (Iris setosa, Iris virginica und Iris versicolor). An jeder Probe werden vier Merkmale gemessen: Die Länge und Breite der Kelch- und Blütenblätter in Zentimetern.
Wir trainieren unser Programm mit diesem Datensatz und verwenden dieses Training dann, um Arten einer Irisblume mit gegebenen Messungen vorherzusagen.
Beachten Sie, dass dieses Programm möglicherweise nicht auf Geeksforgeeks IDE läuft, aber es kann problemlos auf Ihrem lokalen Python-Interpreter ausgeführt werden, vorausgesetzt, Sie haben die erforderlichen Bibliotheken installiert.
# Python program to demonstrate # KNN classification algorithm # on IRIS dataser from sklearn.datasets import load_iris from sklearn.neighbors import KNeighborsClassifier import numpy as np from sklearn.model_selection import train_test_split iris_dataset=load_iris() X_train, X_test, y_train, y_test = train_test_split(iris_dataset["data"], iris_dataset["target"], random_state=0) kn = KNeighborsClassifier(n_neighbors=1) kn.fit(X_train, y_train) x_new = np.array([[5, 2.9, 1, 0.2]]) prediction = kn.predict(x_new) print("Predicted target value: {}\n".format(prediction)) print("Predicted feature name: {}\n".format (iris_dataset["target_names"][prediction])) print("Test score: {:.2f}".format(kn.score(X_test, y_test)))
Ausgabe:
Predicted target name: [0]
Predicted feature name: ['setosa']
Test score: 0.97
Erläuterung des Programms:
Trainieren des Datensatzes
- Die erste Zeile importiert einen Iris-Datensatz, der bereits im sklearn-Modul vordefiniert ist. Der Iris-Datensatz ist im Grunde eine Tabelle, die Informationen über verschiedene Sorten von Irisblüten enthält.
- Wir importieren den kNeighborsClassifier-Algorithmus und die train_test_split-Klasse aus dem sklearn- und numpy-Modul zur Verwendung in diesem Programm.
- Dann kapseln wir die Methode load_iris() in die Variable iris_dataset. Außerdem teilen wir den Datensatz mit der Methode train_test_split in Trainingsdaten und Testdaten auf. Das X-Präfix in der Variablen bezeichnet die Merkmalswerte (z. B. Blütenblattlänge usw.) und das Y-Präfix bezeichnet Zielwerte (z. B. 0 für Setosa, 1 für Virginia und 2 für Versicolor).
- Bei dieser Methode wird der Datensatz zufällig im Verhältnis 75:25 in Trainings- und Testdaten aufgeteilt. Dann kapseln wir die KNeighborsClassifier-Methode in der kn-Variablen, während wir den Wert k=1 beibehalten. Diese Methode enthält den Algorithmus K Nearest Neighbor.
- In der nächsten Zeile passen wir unsere Trainingsdaten in diesen Algorithmus ein, damit der Computer mit diesen Daten trainiert werden kann. Nun ist der Trainingsteil abgeschlossen.
Testen des Datensatzes
- Jetzt haben wir die Dimensionen einer neuen Blume in einem numpy-Array namens x_new und wir wollen die Art dieser Blume vorhersagen. Wir tun dies mit der Vorhersagemethode, die dieses Array als Eingabe nimmt und den vorhergesagten Zielwert als Ausgabe ausspuckt.
- Der vorhergesagte Zielwert ist also 0, was für Setosa steht. Diese Blume hat also gute Chancen, eine Setosa-Art zu sein.
- Schließlich finden wir das Testergebnis, das das Verhältnis von nein ist. der als richtig befundenen Vorhersagen und der insgesamt getroffenen Vorhersagen. Wir tun dies mit der Score-Methode, die im Wesentlichen die tatsächlichen Werte des Test-Sets mit den vorhergesagten Werten vergleicht.
So haben wir gesehen, wie maschinelles Lernen funktioniert, und ein grundlegendes Programm entwickelt, um es mit dem Scikit-Learn-Modul in Python zu implementieren.
Dieser Artikel wurde von tkkhhaarree beigesteuert . Wenn Ihnen GeeksforGeeks gefällt und Sie einen Beitrag leisten möchten, können Sie auch einen Artikel über Contribute.geeksforgeeks.org schreiben oder Ihren Artikel per E-Mail an Contribute@geeksforgeeks.org senden. Sehen Sie, wie Ihr Artikel auf der Hauptseite von GeeksforGeeks erscheint, und helfen Sie anderen Geeks.