

Bild von Autor | Chatgpt
# Einführung
Wenn es um maschinelles Lernen geht, ist die Effizienz der Schlüssel. Das Schreiben von sauberem, lesbarem und prägnantem Code beschleunigt nicht nur die Entwicklung, sondern erleichtert auch die Pipelines für maschinelles Lernen zu verstehen, zu teilen, zu warten und zu debuggen. Python mit seiner natürlichen und ausdrucksstarken Syntax passt hervorragend zum Erstellen leistungsstarker Einzeiler, die gemeinsame Aufgaben in einer einzigen Codelinie erledigen können.
Dieses Tutorial konzentriert sich auf zehn praktische Einzeiler, die die Kraft von Bibliotheken wie nutzen Scikit-Be taught Und Pandas Um Ihre Workflows für maschinelles Lernen zu optimieren. Wir werden alles von Datenvorbereitung und Modelltraining bis hin zur Bewertung und Merkmalsanalyse abdecken.
Fangen wir an.
# Einrichten der Umgebung
Bevor wir unseren Code erstellen können, importieren wir die erforderlichen Bibliotheken, die wir in den Beispielen verwenden werden.
import pandas as pd
from sklearn.model_selection import train_test_split, cross_val_score, GridSearchCV
from sklearn.preprocessing import StandardScaler, OneHotEncoder
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier
from sklearn.svm import SVC
from sklearn.pipeline import Pipeline
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
Lassen Sie uns damit nach dem anderen codieren.
# 1. Laden eines Datensatzes
Beginnen wir mit einer der Grundlagen. Erste Schritte mit einem Projekt bedeutet häufig das Laden von Daten. Scikit-Be taught verfügt über mehrere Spielzeugdatensätze, die perfekt zum Testen von Modellen und Workflows geeignet sind. Sie können sowohl die Funktionen als auch die Zielvariable in einer einzigen, sauberen Linie laden.
X, y = load_iris(return_X_y=True)
Dieser One-Liner verwendet die load_iris Funktion und Mengen return_X_y=True Um die Function -Matrix direkt zurückzugeben X und der Zielvektor yvermeiden Sie die Notwendigkeit, ein wörterbuchartiges Objekt zu analysieren.
# 2. Aufteilen von Daten in Trainings- und Testsätze
Ein weiterer grundlegender Schritt in jedem Projekt für maschinelles Lernen ist die Aufteilung Ihrer Daten in mehrere Sätze für unterschiedliche Verwendungen. Der train_test_split Funktion ist eine Hauptstütze; Es kann in einer Zeile ausgeführt werden, um vier separate Datenrahmen für Ihre Trainings- und Testsätze zu erstellen.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42, stratify=y)
Hier verwenden wir test_size=0.3 30% der Daten zum Testen zuweisen und verwenden stratify=y Um den Anteil der Klassen im Zug und die Testsätze zu gewährleisten, spiegelt der ursprüngliche Datensatz wider.
# 3. Erstellen und Coaching eines Modells
Warum zwei Zeilen verwenden, um ein Modell zu instanziieren und es dann zu trainieren? Sie können die ketten match Methode direkt zum Konstruktor des Modells für eine kompakte und lesbare Codezeile wie folgt:
mannequin = LogisticRegression(max_iter=1000, random_state=42).match(X_train, y_train)
Diese einzelne Zeile erstellt a LogisticRegression Modellieren Sie und trainiert es sofort in Ihren Trainingsdaten und gibt das angepasste Modellobjekt zurück.
# 4. Durchführen von Okay-fach Kreuzvalidierung
Die Kreuzvalidierung liefert eine robustere Schätzung der Leistung Ihres Modells als ein einzelner Zugtest. Scikit-larns cross_val_score erleichtert es einfach, diese Bewertung in einem Schritt durchzuführen.
scores = cross_val_score(LogisticRegression(max_iter=1000, random_state=42), X, y, cv=5)
Dieser One-Liner initialisiert ein neues logistisches Regressionsmodell, spaltet die Daten in 5-fach, Züge und bewertet das Modell fünfmal (bewertet das Modell (bewertet das Modellcv=5) und gibt eine Liste der Ergebnisse aus jeder Falte zurück.
# 5. Vorhersagen machen und Genauigkeit berechnen
Nach dem Coaching Ihres Modells möchten Sie seine Leistung im Testsatz bewerten. Sie können dies tun und die Genauigkeitsbewertung mit einem einzigen Methodenaufruf erhalten.
accuracy = mannequin.rating(X_test, y_test)
Der .rating() Die Methode kombiniert die Vorhersage- und Genauigkeitsberechnungschritte bequem und gibt die Genauigkeit des Modells auf die bereitgestellten Testdaten zurück.
# 6. Numerische Merkmale skalieren
Die Function -Skalierung ist ein häufiger Vorverarbeitungsschritt, insbesondere für Algorithmen, die für die Skala der Eingangsmerkmale empfindlich sind – einschließlich SVMs und logistischer Regression. Sie können den Scaler passen und Ihre Daten gleichzeitig mit dieser einzelnen Python -Linie transformieren:
X_scaled = StandardScaler().fit_transform(X)
Der fit_transform Die Methode ist eine bequeme Abkürzung, die die Skalierungsparameter aus den Daten lernt und die Transformation auf einmal anwendet.
# 7. Anwenden von One-Scorching-Codierung auf kategoriale Daten anwenden
One-HOT-Codierung ist eine Standardtechnik zum Umgang mit kategorialen Merkmalen. Während Scikit-Be taught eine mächtige hat OneHotEncoder Methode leistungsstark, die get_dummies Die Funktion von Pandas ermöglicht einen echten Einzelliner für diese Aufgabe.
df_encoded = pd.get_dummies(pd.DataFrame(X, columns=('f1', 'f2', 'f3', 'f4')), columns=('f1'))
Diese Zeile konvertiert eine bestimmte Spalte (f1) In einem PANDAS -Datenframe in neue Spalten mit Binärwerten (Binärwerte () (f1, f2, f3, f4), perfekt für maschinelles Lernmodelle.
# 8. Definieren einer Scikit-Be taught-Pipeline
Scikit-Be taught-Pipelines machen das Ketten mehrere Verarbeitungsschritte und einen endgültigen Schätzer unkompliziert. Sie verhindern Datenleckage und vereinfachen Ihren Workflow. Das Definieren einer Pipeline ist wie folgt ein sauberer Einzeiler:
pipeline = Pipeline((('scaler', StandardScaler()), ('svc', SVC())))
Dadurch wird eine Pipeline erstellt, die die Daten zuerst mithilfe der Daten skaliert StandardScaler und füttert dann das Ergebnis in einen Unterstützungs -Vektorklassifizierer.
# 9. Hyperparameter mit GridSearchCV Tuning
Das Finden der besten Hyperparameter für Ihr Modell kann mühsam sein. GridSearchCV kann dazu beitragen, diesen Prozess zu automatisieren. Durch Verketten .match()Sie können die Suche initialisieren, definieren und alles in einer Zeile ausführen.
grid_search = GridSearchCV(SVC(), {'C': (0.1, 1, 10), 'kernel': ('linear', 'rbf')}, cv=3).match(X_train, y_train)
Dadurch wird eine Gittersuche nach einer festgelegt SVC Modell, testet verschiedene Werte auf C Und kernelführt 3-fache Kreuzvalidierung durch (cv=3) und passt sie in die Trainingsdaten, um die beste Kombination zu finden.
# 10. Extrahieren von Merkmalsimporien extrahieren
Für baumbasierte Modelle wie zufällige Wälder ist das Verständnis, welche Merkmale am einflussreichsten sind, für den Aufbau eines nützlichen und effizienten Modells von entscheidender Bedeutung. Ein Listenverständnis ist ein klassischer pythonischer Einzeiler zum Extrahieren und Sortieren von Funktionsfunktionen. Beachten Sie, dass dieser Auszug das Modell zuerst erstellt und dann einen One-Liner verwendet, um die Funktionen von Funktionsfunktionen zu bestimmen.
# First, prepare a mannequin
feature_names = ('sepal_length', 'sepal_width', 'petal_length', 'petal_width')
rf_model = RandomForestClassifier(random_state=42).match(X_train, y_train)
# The one-liner
importances = sorted(zip(feature_names, rf_model.feature_importances_), key=lambda x: x(1), reverse=True)
Dieser Einzeiler kombiniert den Namen der einzelnen Funktionen mit seiner Wichtigkeitsbewertung und sortiert dann die Liste in absteigender Reihenfolge, um zuerst die wichtigsten Funktionen anzuzeigen.
# Einpacken
Diese zehn Einzeiler zeigen, wie Pythons prägnante Syntax Ihnen helfen kann, effizienteren und lesbaren Code für maschinelles Lernen zu schreiben. Integrieren Sie diese Verknüpfungen in Ihren täglichen Workflow, um die Kesselplatte zu reduzieren, Fehler zu minimieren und mehr Zeit zu konzentrieren, um sich auf das zu konzentrieren, was wirklich wichtig ist: Erstellen effektiver Modelle und extrahiere wertvolle Erkenntnisse aus Ihren Daten.
Matthew Mayo (@Mattmayo13) hat einen Grasp -Abschluss in Informatik und ein Diplom in Knowledge Mining. Als Geschäftsführer von Kdnuggets & Statologieund beitragen Redakteur bei Meisterschaft für maschinelles LernenMatthew zielt darauf ab, komplexe Datenwissenschaftskonzepte zugänglich zu machen. Zu seinen beruflichen Interessen zählen natürliche Sprachverarbeitung, Sprachmodelle, Algorithmen für maschinelles Lernen und die Erforschung der aufstrebenden KI. Er ist von der Mission getrieben, das Wissen in der Datenwissenschaftsgemeinschaft zu demokratisieren. Matthew kodiert seit seinem 6 -jährigen Lebensjahr.
