In den letzten zehn Jahren hat sich maschinelles Lernen von wissenschaftlichen Forschungslabors zu alltäglichen Web- und mobilen Anwendungen gewechselt. Maschinelles Lernen ermöglicht es Ihrer Anwendung, bisher schwierige Aufgaben auszuführen, z. B. das Erkennen von Objekten und Gesichtern in Bildern, das Erkennen von Spam- und Hassreden sowie das Generieren intelligenter Antworten für E -Mail- und Nachrichtenanwendungen.
unterscheidet sich jedoch grundlegend von der klassischen Programmierung. In diesem Artikel lernen Sie die Grundlagen des maschinellen Lernens und erstellen ein Basismodell, das Blumenarten basierend auf Blumenmessungen vorhersagen kann.
klassische Programmierung basiert auf gut definierten Problemen, die in verschiedene Klassen, Funktionen und IF-ELSE-Befehle unterteilt werden können. Das maschinelle Lernen hingegen beruht auf der Entwicklung seines Verhaltens auf der Grundlage der Erfahrung. Anstatt Regeln für maschinelle Lernmodelle bereitzustellen, trainieren Sie sie anhand von Beispielen.
Es gibt verschiedene Kategorien von Algorithmen für maschinelles Lernen, von denen jede spezifische Probleme lösen kann.
überwachtes Lernen eignet sich für Fragen, die Sie von Eingabedaten zum Ergebnis erhalten möchten. Ein gemeinsames Merkmal aller beaufsichtigten Lernprobleme ist die Existenz einer realen Situation, mit der das Modell getestet werden kann, z. B. markierte Bilder oder historische Verkaufsdaten.
überwachte Lernmodelle können Regressions- oder Klassifizierungsprobleme lösen. Das Regressionsmodell prognostiziert die Menge (z. B. die Menge der verkauften Waren oder den Preis für Aktien), während das Klassifizierungsproblem versucht, die Kategorien der Eingabedaten zu bestimmen (z. B. Katzen/Hund/Fisch/Vogel, Betrug/Nicht-Auseinandersetzung).
Bildklassifizierung, Gesichtserkennung, Aktienkursvorhersage und Umsatzvorhersage sind Beispiele für Probleme, die das überwachte Lernen lösen kann.
Einige beliebte überwachte Lernalgorithmen sind lineare Regression und logistische Regression, Unterstützung von Vektormaschinen, Entscheidungsbäumen und künstlichen neuronalen Netzwerken.
unbeaufsichtigtes Lernen eignet sich für Probleme, bei denen Sie Daten haben, aber keine Ergebnisse, sondern nach Mustern suchen. Zum Beispiel möchten Sie sie möglicherweise in Segmenten gruppieren, die auf Ihrer Ähnlichkeit basieren. Dies wird als Clustering im unbeaufsichtigten Lernen bezeichnet. Alternativ möchten Sie möglicherweise einen böswilligen Netzwerkverkehr erkennen, der von den normalen Aktivitäten Ihres Unternehmens abweicht. Dies wird als Anomalie -Erkennung bezeichnet, was eine weitere unbeaufsichtigte Lernaufgabe ist. Unüberwachtes Lernen kann auch zur Reduzierung der Dimensionalität verwendet werden, eine Technik zur Vereinfachung des maschinellen Lernens durch Entfernen irrelevanter Merkmale.
Einige beliebte unbeaufsichtigte Lernalgorithmen sind K-Mean-Clustering und Hauptkomponentenanalyse (PCA).
Verstärkungslernen ist ein Zweig des maschinellen Lernens, in dem Agenten versuchen, ihre Ziele zu erreichen, indem sie mit ihrer Umgebung interagieren. Das Verstärkungslernen beinhaltet Aktionen, Status und Belohnungen. Untrainierte Verstärkungslernmittel beginnen mit zufälliger Wirkung. Jede Aktion verändert den Umweltzustand. Wenn sich der Agent im gewünschten Zustand befindet, erhält er eine Belohnung. Der Agent versucht, die Abfolge von Aktionen und Zuständen zu finden, die die meisten Belohnungen erzeugen.
Verstärkungslernen wird in Empfehlungssystemen, Robotik und Gaming -Robotern wie Alphago und Alphastar von Google verwendet.
In diesem Artikel werden wir uns auf das überwachte Lernen konzentrieren, da es der beliebteste Zweig des maschinellen Lernens ist und seine Ergebnisse leichter zu bewerten sind. Wir werden Python verwenden, da es viele Funktionen und Bibliotheken enthält, die Anwendungen für maschinelles Lernen unterstützen. Das allgemeine Konzept kann jedoch auf jede Programmiersprache mit ähnlichen Bibliotheken angewendet werden.
(Wenn Sie mit Python nicht vertraut sind, bietet FreecodeCamp einen großartigen Crashkurs, um Ihnen den Einstieg zu erleichtern.)
Eine der Python-Bibliotheken, die üblicherweise in Datenwissenschaft und maschinellem Lernen verwendet werden, ist Scikit-Learn, das Implementierungen populärer Algorithmen für maschinelles Lernen bietet. Scikit-Learn ist nicht Teil einer grundlegenden Python-Installation, Sie müssen sie manuell installieren.
macOS und Linux sind mit Python vorinstalliert. Um die Scikit-Learn-Bibliothek zu installieren, geben Sie den folgenden Befehl im Terminalfenster ein:
<code>pip install scikit-learn</code>
oder für Python 3:
<code>python3 -m pip install scikit-learn</code>
Auf Microsoft Windows müssen Sie zuerst Python installieren. Sie können die neueste Version von Windows Python 3 Installer von der offiziellen Website erhalten. Geben Sie nach der Installation von Python den folgenden Befehl in das Befehlszeilenfenster ein:
<code>python -m pip install scikit-learn</code>
Alternativ können Sie das Anaconda-Framework installieren, das eigenständige Python 3 sowie Scikit-Learn und viele andere Bibliotheken für Datenwissenschaft und maschinelles Lernen umfasst, wie numpy , scipy > und Matplotlib . Die Installationsanweisungen für die kostenlose persönliche Version von Anaconda finden Sie auf der offiziellen Website.
Der erste Schritt in jedem Projekt für maschinelles Lernen besteht darin, das Problem zu verstehen, das Sie lösen möchten. Das Definieren einer Frage hilft Ihnen, die Art der Daten zu ermitteln, die Sie sammeln müssen, und geben Sie eine Vorstellung davon, welchen Algorithmus für maschinelles Lernen Sie verwenden müssen.
In unserem Beispiel möchten wir ein Modell erstellen, das die Art der Blume vorhersagt, die auf Messungen von Blütenblättern und Sepallänge und Breite basiert.
Dies ist ein Problem mit der Überwachungsklassifizierung. Wir müssen eine Liste von Messungen verschiedener Blütenproben und ihrer entsprechenden Arten sammeln. Wir werden diese Daten dann verwenden, um ein maschinelles Lernmodell zu trainieren und zu testen, das Messungen an Arten abbilden kann.
Einer der schwierigsten Teile des maschinellen Lernens ist das Sammeln von Daten, um Ihr Modell zu trainieren. Sie müssen eine Quelle finden, die die Datenmenge sammeln kann, die zum Training des Modells erforderlich ist. Sie müssen auch die Qualität Ihrer Daten überprüfen, sicherstellen, dass es die verschiedenen Situationen darstellt, die das Modell behandelt, und vermeiden Sie das Sammeln von Daten, die versteckte Verzerrungen enthalten.
Zum Glück enthält Scikit-Learn mehrere Spielzeugdatensätze, mit denen verschiedene Algorithmen für maschinelles Lernen ausprobieren können. Der "Iris -Datensatz" enthält zufällig die genauen Daten für unsere Frage. Wir müssen es nur aus der Bibliothek laden.
Der folgende Code lädt den Wohnungsdatensatz:
<code>pip install scikit-learn</code>
Der IRIS -Datensatz enthält 150 Beobachtungen mit jeweils vier Messungen (Iris.Data) und Zielblumspezies (Iris.Target). Sie können den Namen der Datenspalte in iris.feature_names:
sehen:<code>python3 -m pip install scikit-learn</code>
iris.target enthält einen numerischen Index (0-2) einer der drei im Datensatz registrierten Blumenarten. Die Namen der Blumenarten sind in Iris.Target_Names:
<code>python -m pip install scikit-learn</code>
auf
Bevor Sie mit dem Training beginnen, müssen Sie die Daten in einen Trainingssatz und einen Testsatz aufteilen. Sie werden den Trainingssatz verwenden, um ein maschinelles Lernmodell zu trainieren und den Testsatz zu überprüfen, um seine Genauigkeit zu überprüfen.Dies geschieht, um sicherzustellen, dass Ihr Modell die Trainingsdaten nicht übertitelt. Überanpassung ist, wenn Ihr maschinelles Lernmodell bei Trainingsbeispielen gut abschneidet, jedoch nicht in unsichtbaren Daten. Überanpassung kann durch die Auswahl eines falschen Algorithmus für maschinelles Lernen, das Missverständnis des Modells, schlechte Trainingsdaten oder zu wenige Trainingsbeispiele verursacht werden.
Abhängig von der Art des Problems, das Sie lösen, und die Datenmenge, die Sie haben, müssen Sie die Datenmenge bestimmen, die Sie dem Testsatz zuweisen möchten. Wenn Sie viele Daten haben (etwa Zehntausende von Beispielen), reichen normalerweise nur etwa 1% der kleinen Proben aus, um Ihr Modell zu testen. Für den IRIS-Datensatz mit insgesamt 150 Datensätzen werden wir die 75-25-Segmentierung auswählen.
scikit-larn hat eine train_test_split-Funktion, die den Datensatz in einen Trainingsdatensatz und einen Testdatensatz aufteilt:
<code>from sklearn.datasets import load_iris iris = load_iris() </code>
train_test_split ruft die Daten- und Zieldatensätze ab und gibt zwei für das Training verwendete Datensätze (x_train und y_train) und test (x_test und y_test) zurück. Der Parameter test_size bestimmt den Prozentsatz der Daten, die dem Test zugeordnet werden sollen (zwischen 0 und 1). Der Stratify -Parameter stellt sicher, dass das Trainingsarray und das Testarray die Anzahl der ausgewogenen Proben aus jeder Kategorie enthalten. Die Random_State-Variable existiert in vielen Funktionen von Scikit-Learn und wird verwendet, um den Zufallszahlengenerator zu steuern und Wiederholbarkeit zu erreichen.
Jetzt, da unsere Daten fertig sind, können wir ein maschinelles Lernmodell erstellen und es am Trainingssatz trainieren. Es gibt viele verschiedene Algorithmen für maschinelles Lernen, die das Klassifizierungsproblem lösen können, mit dem wir uns befassen. In unserem Fall werden wir den Algorithmus "Logistische Regression" verwenden, der sehr schnell ist und für einfache Klassifizierungsprobleme geeignet ist, die nicht zu viele Dimensionen enthalten.
Scikit-Learns LogisticRegressionsklasse implementiert diesen Algorithmus. Nachdem wir es instanziiert haben, trainieren wir es in unserem Trainingssatz (x_train und y_train), indem wir die Anpassungsfunktion aufrufen. Dadurch wird die Parameter des Modells angepasst, um die Zuordnung zwischen den gemessenen Werten und den Blütenspezies zu finden.
<code>pip install scikit-learn</code>
Jetzt, da wir das Modell geschult haben, wollen wir seine Genauigkeit messen. Die LogisticRegression -Klasse hat eine Score -Methode, die die Genauigkeit des Modells zurückgibt. Erstens werden wir die Genauigkeit des Modells auf den Trainingsdaten messen:
<code>python3 -m pip install scikit-learn</code>
Dies wird ungefähr 0,97 zurückgeben, was bedeutet, dass das Modell 97% der Trainingsbeispiele genau vorhersagt, was ziemlich gut ist, wenn man bedenkt, dass wir nur etwa 37 Trainingsbeispiele pro Arten haben.
Als nächstes werden wir die Genauigkeit des Modells im Testsatz überprüfen:
<code>python -m pip install scikit-learn</code>
Dies gibt uns etwa 95% der Ergebnisse, etwas unterhalb der Trainingsgenauigkeit, was natürlich ist, da dies Beispiele sind, die das Modell noch nie zuvor gesehen hat. Durch das Erstellen größerer Datensätze oder durch den Versuch eines anderen Algorithmus für maschinelles Lernen (z. B. Support Vector -Maschinen) können wir möglicherweise die Genauigkeit unserer Modelle weiter verbessern und die Lücke zwischen Training und Testleistung überbrücken.
Schließlich möchten wir sehen, wie das Modell, das wir auf dem neuen Beispiel ausgebildet haben, verwenden. Die LogisticRegression -Klasse hat eine Vorhersagefunktion, die eine Reihe von Beobachtungen als Eingabe nimmt und die vorhergesagte Kategorie zurückgibt. Im Fall unseres Blumenklassifikatormodells müssen wir es mit einer Reihe von vier Messungen (Sepallänge, Sepalbreite, Blütenblattlänge, Blütenbreite) bereitstellen, die eine Ganzzahl zurückgeben, die die Kategorie der Blume darstellt:
<code>from sklearn.datasets import load_iris iris = load_iris() </code>
Herzlichen Glückwunsch! Sie haben Ihr erstes maschinelles Lernmodell erstellt. Wir können es jetzt zu einer App kombinieren, die den Benutzer messen und die Blumenarten zurückgibt:
<code>print(iris.feature_names) ''' ['sepal length (cm)', 'sepal width (cm)', 'petal length (cm)', 'petal width (cm)'] ''' </code>
Ich hoffe, dies ist Ihr erster Schritt, um ein Meister des maschinellen Lernens zu werden. Von hier aus können Sie weiterhin andere Algorithmen für maschinelles Lernen lernen, mehr über die grundlegenden Konzepte des maschinellen Lernens erfahren und weiter fortgeschrittenere Themen wie neuronale Netzwerke und tiefes Lernen lernen. Mit einigen Lernen und Praxis können Sie außergewöhnliche Anwendungen erstellen, mit denen Objekte in Bildern erkennen, Sprachbefehle verarbeiten und Gespräche mit Benutzern führen können.
Um zu lernen, Python für maschinelles Lernen zu verwenden, benötigen Sie ein grundlegendes Verständnis der Python -Programmierung. Es ist auch vorteilhaft, mit Bibliotheken wie Numpy, Pandas und Matplotlib vertraut zu sein. Darüber hinaus ist ein grundlegendes Verständnis von Statistiken und Wahrscheinlichkeit entscheidend, da sie den Kern von Algorithmen für maschinelles Lernen bilden.
Python ist aufgrund seiner Einfachheit und Lesbarkeit eine der beliebtesten Sprachen für maschinelles Lernen. Es verfügt über eine breite Palette von Bibliotheken und Frameworks wie Scikit-Learn, Tensorflow und Pytorch, die die Entwicklung maschineller Lernmodelle vereinfachen. Andere Sprachen wie R und Java werden ebenfalls im maschinellen Lernen verwendet, aber Pythons umfangreiches Ökosystem macht es für viele die erste Wahl.
Wie kann ich die Leistung meines Python -Modells für maschinelles Lernen überprüfen?
Kann ich Python für überwachtes und unbeaufsichtigtes Lernen verwenden?
Wie kann man mit Überanpassung in maschinellem Lernmodellen umgehen?
Welche Rolle spielt die Datenvorverarbeitung im maschinellen Lernen mit Python?
Wie kann man Python verwenden, um die Leistung von Modellen für maschinelles Lernen zu visualisieren?
Kann ich Python für die Verarbeitung natürlicher Sprache (NLP) verwenden?
Sie können Web -Frameworks wie Flask oder Django verwenden, um maschinelle Lernmodelle bereitzustellen. Für groß angelegte Bereitstellungen können Sie Cloud-Plattformen wie AWS, Google Cloud oder Azure verwenden. Sie bieten Dienste für die Modellbereitstellung, Skalierung und Überwachung an.
Das obige ist der detaillierte Inhalt vonEine Grundierung auf maschinelles Lernen mit Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!