Schritt 3: Herunterladen, Durchsuchen 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, Durchsuchen und Transformieren eines Datensatzes

In diesem Schritt laden Sie dieDataset für ErwachseneMit der SHAPY Additive Explanations Library auf Ihre Notebook-Instance, überprüfen Sie den Datensatz, wandeln Sie ihn um und laden Sie ihn auf Amazon S3 hoch. SHAP ist ein spieltheoretischer Ansatz, um die Ausgabe eines Modells für maschinelles Lernen zu erklären. Weitere Informationen zu SHAP finden Sie unterWillkommen bei der SHAP-Dokumentationaus.

Zum Ausführen des folgenden Beispiels fügen Sie den Beispielcode in eine Zelle in Ihrer Notebook-Instance ein.

Lade Dataset für Erwachsene mit SHAP

Importieren Sie mit der SHAP-Bibliothek das Dataset für Erwachsene wie folgt dargestellt:

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 ihn, indem Sie Folgendes ausführenconda-Befehl:

%conda install -c conda-forge shap

Wenn Sie JupyterLab verwenden, 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)

Diefeature_nameslist -Objekt 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 nicht beschrifteten Daten beginnen, können Sie Amazon verwenden SageMaker Ground Truth, um in wenigen Minuten einen Workflow zur Datenbeschriftung zu erstellen. Weitere Informationen hierzu finden Sie unterDatenkennzeichnungaus.

Überblick über das Dataset

Führen Sie das folgende Skript aus, um den statistischen Überblick über den Datensatz und die Histogramme der numerischen Features anzuzeigen.

display(X.describe()) hist = X.hist(bins=30, sharey=True, figsize=(20, 10))

                Überblick über den Datensatz der Erwachsenenzählungen.
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 vereinfachen und rationalisieren SageMaker Daten Wrangler. Weitere Informationen hierzu finden Sie unterBereiten Sie ML-Daten mit Amazon vor SageMaker Daten Wrangleraus.

Teilen Sie den Datensatz in Train-, Validierungs- und Test-Datensätze auf

Teilen Sie den Datensatz mithilfe von Sklearn in ein Trainingsset und ein Testset auf. Das Trainingsset wird verwendet, um das Modell zu trainieren, während das Testset verwendet wird, um die Leistung des endgültig ausgebildeten Modells zu bewerten. Der Datensatz wird nach dem Zufallsprinzip mit dem festen Zufallswert 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 das Trainingsset 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 mit dem Pandas-Paket jeden Datensatz explizit aus, indem Sie die numerischen Features mit den True-Labels 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 geteilt und strukturiert ist:

train

                Der Schulungsdatensatz.
validation

                Der Validierungsdataset.
test

                Der Testdataset.

Konvertieren der Zug- und Validierungsdatasets in CSV-Dateien

Konvertieren Sie dastrainundvalidationDatenrahmenobjekte in CSV-Dateien, die dem Eingabedateiformat für den XgBoost-Algorithmus entsprechen.

# 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

Verwendung der SageMaker und Boto3 laden Sie die Schulungs- und Validierungsdatensätze in den standardmäßigen Amazon S3 S3-Bucket hoch. Die Datensätze im S3-Bucket werden von einer rechenoptimierten SageMaker-Instanz auf Amazon EC2 für Schulungen verwendet.

Der folgende Code richtet den Standard-S3-Bucket-URI für Ihren aktuellen SageMaker session, erstellt eine neuedemo-sagemaker-xgboost-adult-income-predictionund lädt die Schulungs- und Validierungsdatensätze in diedata-Unterordner.

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 ausAWS CLIUm zu überprüfen, ob die CSV-Dateien erfolgreich in den S3-Bucket hochgeladen wurden.

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

Dabei sollte die folgende Ausgabe zurückgegeben werden:


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