Schritt 3: Herunterladen, Analysieren und Transformieren eines Datensatzes - Amazon SageMaker

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Schritt 3: Herunterladen, Analysieren und Transformieren eines Datensatzes

In diesem Schritt laden Sie den Datensatz Adult Census mithilfe der SHAP (SHapleyAdditiveexPlanations) Library in Ihre Notebook-Instance, überprüfen den Datensatz, transformieren ihn und laden ihn auf Amazon S3 hoch. SHAPist ein spieltheoretischer Ansatz zur Erklärung der Ergebnisse eines beliebigen Modells für maschinelles Lernen. Weitere Informationen zu finden Sie SHAP unter Willkommen in der SHAP Dokumentation.

Um das folgende Beispiel auszuführen, fügen Sie den Beispielcode in eine Zelle in Ihrer Notebook-Instance ein.

Laden Sie den Datensatz zur Volkszählung für Erwachsene mit SHAP

Importieren Sie den Datensatz der Volkszählung für Erwachsene mithilfe der SHAP Bibliothek wie folgt:

import shap X, y = shap.datasets.adult() X_display, y_display = shap.datasets.adult(display=True) feature_names = list(X.columns) feature_names
Anmerkung

Wenn der aktuelle Jupyter-Kernel nicht über die SHAP Bibliothek verfügt, installieren Sie sie, indem Sie den folgenden Befehl ausführen: conda

%conda install -c conda-forge shap

Wenn Sie den Kernel verwenden JupyterLab, müssen Sie den Kernel manuell aktualisieren, nachdem die Installation und die Updates abgeschlossen sind. Führen Sie das folgende IPython Skript aus, um den Kernel herunterzufahren (der Kernel wird automatisch neu gestartet):

import IPython IPython.Application.instance().kernel.do_shutdown(True)

Das feature_names Listenobjekt sollte die folgende Liste von Features zurückgeben:

['Age', 'Workclass', 'Education-Num', 'Marital Status', 'Occupation', 'Relationship', 'Race', 'Sex', 'Capital Gain', 'Capital Loss', 'Hours per week', 'Country']
Tipp

Wenn Sie mit unbeschrifteten Daten beginnen, können Sie Amazon SageMaker Ground Truth verwenden, um innerhalb von Minuten einen Datenkennzeichnungsworkflow zu erstellen. Weitere Informationen finden Sie unter Beschriftungsdaten.

Überblick über den Datensatz

Führen Sie das folgende Skript aus, um die statistische Übersicht des Datensatzes und die Histogramme der numerischen Merkmale anzuzeigen.

display(X.describe()) hist = X.hist(bins=30, sharey=True, figsize=(20, 10))
Überblick über den Datensatz der Volkszählung für Erwachsene.
Tipp

Wenn Sie einen Datensatz verwenden möchten, der bereinigt und transformiert werden muss, können Sie die Datenvorverarbeitung und das Feature-Engineering mit Amazon SageMaker Data Wrangler vereinfachen und optimieren. Weitere Informationen finden Sie unter Vorbereiten von ML-Daten mit Amazon SageMaker Data Wrangler.

Teilen Sie den Datensatz in Trainings-, Validierungs- und Testdatensätze auf

Teilen Sie den Datensatz mithilfe von Sklearn in einen Trainingssatz und einen Testsatz auf. Der Trainingssatz wird verwendet, um das Modell zu trainieren, während der Testsatz verwendet wird, um die Leistung des endgültigen trainierten Modells zu bewerten. Der Datensatz wird nach dem Zufallsprinzip mit der festen Zufallszahl sortiert: 80 Prozent des Datensatzes für den Trainingssatz und 20 Prozent davon für einen Testsatz.

from sklearn.model_selection import train_test_split X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1) X_train_display = X_display.loc[X_train.index]

Teilen Sie den Trainingssatz auf, um einen Validierungssatz zu trennen. Der Validierungssatz wird verwendet, um die Leistung des trainierten Modells zu bewerten und gleichzeitig die Hyperparameter des Modells zu optimieren. 75 Prozent des Trainingssatzes werden zum endgültigen Trainingssatz, und der Rest ist der Validierungssatz.

X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.25, random_state=1) X_train_display = X_display.loc[X_train.index] X_val_display = X_display.loc[X_val.index]

Richten Sie mithilfe des Pandas-Pakets jeden Datensatz explizit aus, indem Sie die numerischen Merkmale mit den tatsächlichen Beschriftungen verketten.

import pandas as pd train = pd.concat([pd.Series(y_train, index=X_train.index, name='Income>50K', dtype=int), X_train], axis=1) validation = pd.concat([pd.Series(y_val, index=X_val.index, name='Income>50K', dtype=int), X_val], axis=1) test = pd.concat([pd.Series(y_test, index=X_test.index, name='Income>50K', dtype=int), X_test], axis=1)

Prüfen Sie, ob der Datensatz wie erwartet aufgeteilt und strukturiert ist:

train
Der Beispiel-Trainingsdatensatz.
validation
Das Beispiel für einen Validierungsdatensatz.
test
Das Beispiel eines Testdatensatzes.

Konvertiert die Train- und Validierungsdatensätze in Dateien CSV

Konvertiert die Objekte train und validation DataFrame in CSV Dateien, die dem Eingabedateiformat für den Algorithmus entsprechen. XGBoost

# Use 'csv' format to store the data # The first column is expected to be the output column train.to_csv('train.csv', index=False, header=False) validation.to_csv('validation.csv', index=False, header=False)

Hochladen der Datensätze auf Amazon S3

Laden Sie mithilfe von SageMaker und Boto3 die Trainings- und Validierungsdatensätze in den standardmäßigen Amazon S3 S3-Bucket hoch. Die Datensätze im S3-Bucket werden von einer rechenoptimierten SageMaker Instance auf Amazon EC2 für Schulungen verwendet.

Der folgende Code richtet den Standard-S3-Bucket URI für Ihre aktuelle SageMaker Sitzung ein, erstellt einen neuen demo-sagemaker-xgboost-adult-income-prediction Ordner und lädt die Trainings- und Validierungsdatensätze in den Unterordner hoch. data

import sagemaker, boto3, os bucket = sagemaker.Session().default_bucket() prefix = "demo-sagemaker-xgboost-adult-income-prediction" boto3.Session().resource('s3').Bucket(bucket).Object( os.path.join(prefix, 'data/train.csv')).upload_file('train.csv') boto3.Session().resource('s3').Bucket(bucket).Object( os.path.join(prefix, 'data/validation.csv')).upload_file('validation.csv')

Führen Sie Folgendes aus AWS CLI um zu überprüfen, ob die CSV Dateien erfolgreich in den S3-Bucket hochgeladen wurden.

! aws s3 ls {bucket}/{prefix}/data --recursive

Dies sollte die folgende Ausgabe ergeben:

Ausgabe des CLI Befehls zur Überprüfung der Datensätze im S3-Bucket.