Einführung
In diesem Lab werden wir den stochastischen Gradientenabstieg (SGD) untersuchen, ein leistungsstarkes Optimierungsverfahren, das in der Maschinellen Lernen häufig zur Lösung von großskaligen und dünn besetzten Problemen verwendet wird. Wir werden lernen, wie man die Klassen SGDClassifier und SGDRegressor aus der scikit-learn-Bibliothek verwendet, um lineare Klassifizierer und Regressoren zu trainieren.
VM-Tipps
Nachdem die VM gestartet ist, klicken Sie in der oberen linken Ecke, um zur Registerkarte Notebook zu wechseln und Jupyter Notebook für die Übung zu nutzen.
Manchmal müssen Sie einige Sekunden warten, bis Jupyter Notebook vollständig geladen ist. Die Validierung von Vorgängen kann aufgrund der Einschränkungen von Jupyter Notebook nicht automatisiert werden.
Wenn Sie bei der Lernphase Probleme haben, können Sie Labby gerne fragen. Geben Sie nach der Sitzung Feedback ab, und wir werden das Problem für Sie prompt beheben.
Importieren der erforderlichen Bibliotheken
Zunächst müssen wir die erforderlichen Bibliotheken importieren. Wir werden die scikit-learn-Bibliothek für die maschinelle Lernung und die Datenaufbereitung verwenden.
import numpy as np
from sklearn.datasets import load_iris
from sklearn.linear_model import SGDClassifier, SGDRegressor
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, mean_squared_error
Laden und Aufbereiten der Daten
Als nächstes laden wir den Iris-Datensatz und bereiten ihn durch Skalierung der Merkmale mit StandardScaler auf.
## Load the iris dataset
iris = load_iris()
X, y = iris.data, iris.target
## Scale the features
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)
## Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X_scaled, y, test_size=0.2, random_state=42)
Trainieren eines Klassifiziers mit SGD
Jetzt werden wir einen Klassifizierer mit der SGDClassifier-Klasse trainieren. Wir werden die log_loss-Verlustfunktion und die l2-Strafe verwenden.
## Train a classifier using SGD
clf = SGDClassifier(loss="log_loss", penalty="l2", max_iter=100, random_state=42)
clf.fit(X_train, y_train)
## Make predictions on the testing set
y_pred = clf.predict(X_test)
## Measure the accuracy of the classifier
accuracy = accuracy_score(y_test, y_pred)
## Print the accuracy
print("Classifier Accuracy:", accuracy)
Trainieren eines Regressors mit SGD
Als nächstes werden wir einen Regressor mit der SGDRegressor-Klasse trainieren. Wir werden die squared_error-Verlustfunktion und die l2-Strafe verwenden.
## Train a regressor using SGD
reg = SGDRegressor(loss="squared_error", penalty="l2", max_iter=100, random_state=42)
reg.fit(X_train, y_train)
## Make predictions on the testing set
y_pred = reg.predict(X_test)
## Measure the mean squared error of the regressor
mse = mean_squared_error(y_test, y_pred)
## Print the mean squared error
print("Regressor Mean Squared Error:", mse)
Zusammenfassung
In diesem Lab haben wir gelernt, wie man Stochastic Gradient Descent (SGD) mit der scikit-learn-Bibliothek zum Trainieren von linearen Klassifizierern und Regressoren verwendet. Wir haben einen Klassifizierer auf dem Iris-Datensatz trainiert und seine Genauigkeit gemessen, und wir haben einen Regressor trainiert und seinen mittleren quadratischen Fehler gemessen. SGD ist ein leistungsstarkes Optimierungsalgorithmus, der große und dünn besetzte maschinelle Lernprobleme effizient behandeln kann.