Il prétraite, sélectionne automatiquement les algorithmes et optimise les hyper paramètres fournis par AWS. C'est AutoML qui fonctionne sur SageMaker. Cette fois, j'ai un échantillon d'Autopilot, donc j'aimerais vraiment le déplacer. → Exemple de pilote automatique
Tout d'abord, créez les bibliothèques et sessions nécessaires.
jupyter
import sagemaker
import boto3
from sagemaker import get_execution_role
region = boto3.Session().region_name
session = sagemaker.Session()
bucket = session.default_bucket()
prefix = 'sagemaker/autopilot-dm'
role = get_execution_role()
sm = boto3.Session().client(service_name='sagemaker',region_name=region)
Ensuite, téléchargez le jeu de données. Les données que nous utilisons cette fois sont Ensemble de données marketing de la banque. Ce sont les données du marketing direct de la banque, et il semble que ce soit les données d'exécuter ou non le dépôt fixe.
jupyter
!wget -N https://archive.ics.uci.edu/ml/machine-learning-databases/00222/bank-additional.zip
!unzip -o bank-additional.zip
local_data_path = './bank-additional/bank-additional-full.csv'
Ensuite, divisez les données téléchargées en données de test et données de train, et supprimez la colonne de la variable objectif "y".
jupyter
import pandas as pd
data = pd.read_csv(local_data_path, sep=';')
train_data = data.sample(frac=0.8,random_state=200)
test_data = data.drop(train_data.index)
test_data_no_target = test_data.drop(columns=['y'])
Après cela, téléchargez chaque donnée divisée sur S3.
jupyter
train_file = 'train_data.csv';
train_data.to_csv(train_file, index=False, header=True)
train_data_s3_path = session.upload_data(path=train_file, key_prefix=prefix + "/train")
print('Train data uploaded to: ' + train_data_s3_path)
test_file = 'test_data.csv';
test_data_no_target.to_csv(test_file, index=False, header=False)
test_data_s3_path = session.upload_data(path=test_file, key_prefix=prefix + "/test")
print('Test data uploaded to: ' + test_data_s3_path)
Ensuite, nous allons définir le pilote automatique. Dans cet exemple, les paramètres sont les suivants, mais il semble que divers autres paramètres peuvent être définis. Les paramètres sont décrits dans ce document, alors assurez-vous de le vérifier. s'il vous plaît essayez.
jupyter
input_data_config = [{
'DataSource': {
'S3DataSource': {
'S3DataType': 'S3Prefix',
'S3Uri': 's3://{}/{}/train'.format(bucket,prefix)
}
},
'TargetAttributeName': 'y'
}
]
output_data_config = {
'S3OutputPath': 's3://{}/{}/output'.format(bucket,prefix)
}
Maintenant que les paramètres sont terminés, déplaçons-le.
jupyter
from time import gmtime, strftime, sleep
timestamp_suffix = strftime('%d-%H-%M-%S', gmtime())
auto_ml_job_name = 'automl-banking-' + timestamp_suffix
print('AutoMLJobName: ' + auto_ml_job_name)
sm.create_auto_ml_job(AutoMLJobName=auto_ml_job_name,
InputDataConfig=input_data_config,
OutputDataConfig=output_data_config,
RoleArn=role)
En écrivant ce qui suit, le contenu qui est exécuté toutes les 30 secondes sera sorti.
jupyter
print ('JobStatus - Secondary Status')
print('------------------------------')
describe_response = sm.describe_auto_ml_job(AutoMLJobName=auto_ml_job_name)
print (describe_response['AutoMLJobStatus'] + " - " + describe_response['AutoMLJobSecondaryStatus'])
job_run_status = describe_response['AutoMLJobStatus']
while job_run_status not in ('Failed', 'Completed', 'Stopped'):
describe_response = sm.describe_auto_ml_job(AutoMLJobName=auto_ml_job_name)
job_run_status = describe_response['AutoMLJobStatus']
print (describe_response['AutoMLJobStatus'] + " - " + describe_response['AutoMLJobSecondaryStatus'])
sleep(30)
La création du modèle est terminée lorsque la sortie est "Terminée". Je pense que cela a pris un peu plus de deux heures.
Cette fois, j'ai essayé de créer un modèle automatiquement à l'aide de SageMaker Autopilot. J'ai réalisé une fois de plus qu'AutoML est incroyable parce que vous pouvez créer un modèle simplement en préparant les données. J'espère que cela réduira la difficulté de créer un modèle et rendra le ML largement utilisé.