Ein minimales Beispiel für maschinelles Lernen (mit scikit-learn) | von Moshe Sipper, Ph.D. | Juni 2023

0
30


KI-generiertes Bild (Kreide)

Maschinelles Lernen (ML) ist…

Warten Sie, dies ist ein Artikel über KI. Lass uns fragen ChatGPT Was ML ist:

Maschinelles Lernen ist ein Teilgebiet der künstlichen Intelligenz (KI), das sich auf die Entwicklung von Algorithmen und Modellen konzentriert, die es Computern ermöglichen, zu lernen und Vorhersagen oder Entscheidungen zu treffen, ohne explizit programmiert zu werden. Dabei geht es darum, Systeme zu entwerfen und zu implementieren, die automatisch aus Erfahrungen oder Daten lernen und sich verbessern können.

Es gibt viele ausgezeichnete Artikel über die Grundlagen von ML, und es ist nicht meine Absicht, dieser illustren Fülle noch einen hinzuzufügen. Vielmehr möchte ich ein kurzes, einfaches Beispiel für ML bereitstellen, das in Python unter Verwendung von implementiert wurde scikit-lernen Bibliothek – der De-facto-Customary im maschinellen Lernen.

Keine Sorge – es wird kurz und recht schmackhaft sein …

Lassen Sie uns ohne weitere Umschweife mit drei Importanweisungen direkt loslegen:

import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestClassifier

Die ersten beiden erfordern keine Einführung in Python-Kenner (wir brauchen hier nicht wirklich Pandas, aber ich habe mich dafür entschieden, es zu verwenden, weil ich denke, dass es die Dinge aufgeräumter macht). Die dritte Importanweisung ruft einen leistungsstarken Algorithmus für maschinelles Lernen auf, der als bekannt ist Zufälliger Wald.

KI-generiertes Bild (Kreide)

Ich werde nicht auf die Particulars dieses Algorithmus eingehen, und das Schöne an scikit-learn ist, dass ich das nicht tun muss. Sie können ML-Magie anwenden, ohne die Einzelheiten von Random Forests zu verstehen.

Im Herzen von ML liegt a Datensatz, aus dem die Maschine lernt. Erstellen wir additionally einen einfachen Wetterdatensatz:

knowledge = [{'humidity': 80, 'wind': 20, 'temp': 15, 'clouds': 90,  'raining?': 'yes'}, 
{'humidity': 40, 'wind': 5, 'temp': 25, 'clouds': 15, 'raining?': 'no'},
{'humidity': 20, 'wind': 30, 'temp': 35, 'clouds': 50, 'raining?': 'no'},
{'humidity': 90, 'wind': 3, 'temp': 18, 'clouds': 100, 'raining?': 'yes'},
{'humidity': 70, 'wind': 13, 'temp': 22, 'clouds': 75, 'raining?': 'no'},
{'humidity': 85, 'wind': 10, 'temp': 17, 'clouds': 90, 'raining?': 'yes'},
{'humidity': 90, 'wind': 20, 'temp': 20, 'clouds': 80, 'raining?': 'yes'},
{'humidity': 60, 'wind': 5, 'temp': 23, 'clouds': 30, 'raining?': 'no'},
{'humidity': 95, 'wind': 25, 'temp': 13, 'clouds': 100, 'raining?': 'yes'},
{'humidity': 70, 'wind': 2, 'temp': 30, 'clouds': 100, 'raining?': 'no'},
]

Wir können den Datensatz in einen Pandas-Datenrahmen einlesen:

df = pd.DataFrame(knowledge, columns=['humidity', 'wind', 'temp', 'clouds', 'raining?'])
print(df)

Mal sehen, was wir bekommen:

So weit, ist es intestine.

Der Datensatz enthält Einzelheiten zu 10 Wetterbeobachtungen. Es umfasst 4 sogenannte Characteristic-Variablen – Luftfeuchtigkeit, Windgeschwindigkeit, Temperatur und Wolkenbedeckung – und eine sogenannte Zielvariable – regnet es oder nicht? Da wir zwei mögliche Werte für die Zielvariable haben – ja oder nein – nennen wir dies binäre Klassifizierung. Wenn wir mehr mögliche Antworten hätten, würden wir die Aufgabe aufrufen Mehrklassen oder multinomial Einstufung.

Das Ziel eines Lernalgorithmus besteht darin, diese Daten zu verarbeiten und eine Lösung zu finden Modell. Es gibt viele Arten von Modellen, aber im Kern können wir sie uns als „Boxen“ vorstellen, die so viele verborgene Geheimnisse der Daten wie möglich einfangen.

Und was kann man mit einem Mannequin machen? Nun ja, die wichtigste Aufgabe eines Modells ist die Herstellung Vorhersagen auf Daten, die es hat noch nie vorher gesehen. Das nennt man Verallgemeinerung.

Eine wichtige Frage – wenn nicht Die Eine wichtige Frage bezüglich eines Modells, das gelernt hat und jetzt Vorhersagen trifft, lautet: Wie intestine sind seine Vorhersagen? Das ist eine schwierige Frage, und es gibt viele Antworten, Methoden und Tips, sowohl um besser vorhersagende Modelle zu erhalten als auch um ihre Vorhersagequalitäten zu bewerten.

Ich verwende einen der grundlegendsten Tips: Wenn das Modell bereit ist, die Daten zu lernen, nennt man das den Ausbildung Part – lass es uns nicht geben alle die Daten; Lassen Sie uns etwas in Reserve halten. Auf diese Weise kann ich ihm nach dem Lernen – oder Coaching – ein paar Daten zeigen, über die es verfügt niemals angetroffen.

Von den 10 Wetterbeobachtungen – auch bekannt als Proben – Ich werde den Random Forest-Algorithmus mit den ersten 8 Samples versorgen und 2 Samples in meiner sprichwörtlichen Tasche verstecken:

X, y = df.to_numpy()[:8, :4], df.to_numpy()[:8, 4]X, y = df.to_numpy()[:9, :4], df.to_numpy()[:9, 4]

Hauptstadt X und Klein j sind häufig verwendete Variablennamen in scikit-learn. X bezeichnet die Eingabemerkmale (4 in unserem Fall) und j bezeichnet die Ausgabevariable (in unserem Fall ja oder nein).

Jetzt ist es an der Zeit, das Modell lernen zu lassen. Scikit-learn verbirgt alle Implementierungsdetails und lässt uns ein Modell mit zwei Codezeilen trainieren:

mannequin = RandomForestClassifier()
mannequin.match(X, y)

Wir sind jetzt im Besitz eines tailliert Modell, additionally eines, das einen Datensatz gelernt hat und bereit ist, Vorhersagen zu treffen.

Wird es die beiden Proben, die ich in meiner Tasche hatte, die sogenannten, richtig vorhersagen? Testsatzmit der das Modell getestet wird, nachdem es gelernt hat?

Lass es uns versuchen.

Trommelwirbel bitte…

mannequin.predict([[95, 25, 13, 100],[70, 2, 30, 100]]).reshape(1, -1)
# don't fret in regards to the reshape, it simply makes `predict` pleased...

Das Mannequin spuckt aus:

array([['yes', 'no']], dtype=object)

Und Ja Und NEIN sind in der Tat die richtigen Antworten!

KI-generiertes Bild (Kreide)

Dies ist natürlich nur der Anfang des maschinellen Lernens und das Beispiel ist recht einfach.

AberDennoch ist das, was wir hier gesehen haben, immer noch ein vollständiges Beispiel für maschinelles Lernen in Aktion.

Hier ist der gesamte Code in einem Stück:

import numpy as np
import pandas as pd
from sklearn.ensemble import RandomForestClassifier

knowledge = [{'humidity': 80, 'wind': 20, 'temp': 15, 'clouds': 90, 'raining?': 'yes'},
{'humidity': 40, 'wind': 5, 'temp': 25, 'clouds': 15, 'raining?': 'no'},
{'humidity': 20, 'wind': 30, 'temp': 35, 'clouds': 50, 'raining?': 'no'},
{'humidity': 90, 'wind': 3, 'temp': 18, 'clouds': 100, 'raining?': 'yes'},
{'humidity': 70, 'wind': 13, 'temp': 22, 'clouds': 75, 'raining?': 'no'},
{'humidity': 85, 'wind': 10, 'temp': 17, 'clouds': 90, 'raining?': 'yes'},
{'humidity': 90, 'wind': 20, 'temp': 20, 'clouds': 80, 'raining?': 'yes'},
{'humidity': 60, 'wind': 5, 'temp': 23, 'clouds': 30, 'raining?': 'no'},
{'humidity': 95, 'wind': 25, 'temp': 13, 'clouds': 100, 'raining?': 'yes'},
{'humidity': 70, 'wind': 2, 'temp': 30, 'clouds': 100, 'raining?': 'no'},
]

df = pd.DataFrame(knowledge, columns=['humidity', 'wind', 'temp', 'clouds', 'raining?'])
print(df)

X, y = df.to_numpy()[:8, :4], df.to_numpy()[:8, 4]

mannequin = RandomForestClassifier()
mannequin.match(X, y)

mannequin.predict([[95, 25, 13, 100],[70, 2, 30, 100]]).reshape(1, -1)



Source link

HINTERLASSEN SIE EINE ANTWORT

Please enter your comment!
Please enter your name here