Seleziona le tue preferenze relative ai cookie

Utilizziamo cookie essenziali e strumenti simili necessari per fornire il nostro sito e i nostri servizi. Utilizziamo i cookie prestazionali per raccogliere statistiche anonime in modo da poter capire come i clienti utilizzano il nostro sito e apportare miglioramenti. I cookie essenziali non possono essere disattivati, ma puoi fare clic su \"Personalizza\" o \"Rifiuta\" per rifiutare i cookie prestazionali.

Se sei d'accordo, AWS e le terze parti approvate utilizzeranno i cookie anche per fornire utili funzionalità del sito, ricordare le tue preferenze e visualizzare contenuti pertinenti, inclusa la pubblicità pertinente. Per continuare senza accettare questi cookie, fai clic su \"Continua\" o \"Rifiuta\". Per effettuare scelte più dettagliate o saperne di più, fai clic su \"Personalizza\".

Rilevamento delle frodi con un notebook di esempio Feature Store

Modalità Focus
Rilevamento delle frodi con un notebook di esempio Feature Store - Amazon SageMaker

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Importante

IAMLe politiche personalizzate che consentono ad Amazon SageMaker Studio o Amazon SageMaker Studio Classic di creare SageMaker risorse Amazon devono inoltre concedere le autorizzazioni per aggiungere tag a tali risorse. L'autorizzazione per aggiungere tag alle risorse è necessaria perché Studio e Studio Classic taggano automaticamente tutte le risorse che creano. Se una IAM politica consente a Studio e Studio Classic di creare risorse ma non consente l'aggiunta di tag, si possono verificare errori AccessDenied "" durante il tentativo di creare risorse. Per ulteriori informazioni, consulta Fornisci le autorizzazioni per etichettare le risorse SageMaker.

AWS Policy gestite per Amazon SageMakerche concedono le autorizzazioni per creare SageMaker risorse includono già le autorizzazioni per aggiungere tag durante la creazione di tali risorse.

Il codice di esempio in questa pagina si riferisce al notebook di esempio: Fraud Detection with Amazon SageMaker Feature Store. Ti consigliamo di eseguire questo notebook in Studio Classic, nelle istanze di notebook o in JupyterLab perché il codice contenuto in questa guida è concettuale e non completamente funzionante se copiato.

Usa quanto segue per clonare il amazon-sagemaker-examples GitHub repository aws/, contenente il notebook di esempio.

Ora che hai i taccuini di SageMaker esempio, vai alla amazon-sagemaker-examples/sagemaker-featurestore directory e apri il notebook di esempio Fraud Detection with Amazon SageMaker Feature Store.

Passaggio 1: configura la sessione del Feature Store

Per iniziare a utilizzare Feature Store, crea una SageMaker sessione, una sessione Boto3 e una sessione Feature Store. Inoltre, configura il bucket Amazon S3 che desideri utilizzare per le funzionalità. Questo è l’archivio offline. Il codice seguente utilizza il bucket SageMaker predefinito e vi aggiunge un prefisso personalizzato.

Nota

Al ruolo utilizzato per eseguire il notebook devono essere collegate le seguenti policy gestite: AmazonSageMakerFullAccess e AmazonSageMakerFeatureStoreAccess. Per informazioni sull'aggiunta di politiche al tuo IAM ruolo, consulta. Aggiungere politiche al proprio IAM ruolo

import boto3 import sagemaker from sagemaker.session import Session sagemaker_session = sagemaker.Session() region = sagemaker_session.boto_region_name boto_session = boto3.Session(region_name=region) role = sagemaker.get_execution_role() default_bucket = sagemaker_session.default_bucket() prefix = 'sagemaker-featurestore' offline_feature_store_bucket = 's3://{}/{}'.format(default_bucket, prefix) sagemaker_client = boto_session.client(service_name='sagemaker', region_name=region) featurestore_runtime = boto_session.client(service_name='sagemaker-featurestore-runtime', region_name=region) feature_store_session = Session(     boto_session=boto_session,     sagemaker_client=sagemaker_client,     sagemaker_featurestore_runtime_client=featurestore_runtime )

Fase 2: caricamento dei set di dati e suddivisione dei dati in gruppi di funzionalità

Carica i dati in data frame per ciascuna funzionalità. Questi data frame vengono utilizzati dopo aver configurato il gruppo di funzionalità. Nell'esempio relativo al rilevamento delle frodi, puoi vedere queste fasi nel codice seguente.

import numpy as np import pandas as pd import matplotlib.pyplot as plt import io s3_client = boto3.client(service_name='s3', region_name=region) fraud_detection_bucket_name = 'sagemaker-featurestore-fraud-detection' identity_file_key = 'sampled_identity.csv' transaction_file_key = 'sampled_transactions.csv' identity_data_object = s3_client.get_object(Bucket=fraud_detection_bucket_name, Key=identity_file_key) transaction_data_object = s3_client.get_object(Bucket=fraud_detection_bucket_name, Key=transaction_file_key) identity_data = pd.read_csv(io.BytesIO(identity_data_object['Body'].read())) transaction_data = pd.read_csv(io.BytesIO(transaction_data_object['Body'].read())) identity_data = identity_data.round(5) transaction_data = transaction_data.round(5) identity_data = identity_data.fillna(0) transaction_data = transaction_data.fillna(0) # Feature transformations for this dataset are applied before ingestion into FeatureStore. # One hot encode card4, card6 encoded_card_bank = pd.get_dummies(transaction_data['card4'], prefix = 'card_bank') encoded_card_type = pd.get_dummies(transaction_data['card6'], prefix = 'card_type') transformed_transaction_data = pd.concat([transaction_data, encoded_card_type, encoded_card_bank], axis=1) transformed_transaction_data = transformed_transaction_data.rename(columns={"card_bank_american express": "card_bank_american_express"})

Fase 3: configurazione dei gruppi di funzionalità

Quando configuri i gruppi di funzionalità, devi personalizzare i nomi delle funzionalità con un nome univoco e configurare ogni gruppo di funzionalità con la classe FeatureGroup .

from sagemaker.feature_store.feature_group import FeatureGroup feature_group_name"some string for a name" feature_group = FeatureGroup(name=feature_group_name, sagemaker_session=feature_store_session)

Nell'esempio di rilevamento delle frodi, i due gruppi di funzionalità sono identity e transaction. Nel codice seguente puoi vedere come i nomi vengono personalizzati con una marcatura temporale, quindi ogni gruppo viene impostato trasmettendo nome e sessione.

import time from time import gmtime, strftime, sleep from sagemaker.feature_store.feature_group import FeatureGroup identity_feature_group_name = 'identity-feature-group-' + strftime('%d-%H-%M-%S', gmtime()) transaction_feature_group_name = 'transaction-feature-group-' + strftime('%d-%H-%M-%S', gmtime()) identity_feature_group = FeatureGroup(name=identity_feature_group_name, sagemaker_session=feature_store_session) transaction_feature_group = FeatureGroup(name=transaction_feature_group_name, sagemaker_session=feature_store_session)

Fase 4: impostazione di un identificativo del record e delle funzionalità relative all’ora dell’evento

In questa fase viene specificato un nome identificativo del record e un nome per la funzionalità relativa all'ora dell'evento. Questo nome viene mappato alla colonna delle funzionalità corrispondenti nei dati. Nell'esempio di rilevamento delle frodi, la colonna di interesse è TransactionID. EventTime può essere aggiunto ai dati quando non è disponibile alcuna marcatura temporale. Nel codice seguente, è possibile vedere come vengono impostate queste variabili, quindi si aggiunge EventTime ai dati di entrambe le funzionalità.

record_identifier_name = "TransactionID" event_time_feature_name = "EventTime" current_time_sec = int(round(time.time())) identity_data[event_time_feature_name] = pd.Series([current_time_sec]*len(identity_data), dtype="float64") transformed_transaction_data[event_time_feature_name] = pd.Series([current_time_sec]*len(transaction_data), dtype="float64")

Fase 5: caricamento delle definizioni di funzionalità

È ora possibile caricare le definizioni delle funzionalità trasmettendo un data frame contenente i dati delle funzionalità. Nel codice seguente per l'esempio di rilevamento delle frodi, la funzione di identità e la funzionalità di transazione vengono caricate utilizzando load_feature_definitions; questa funzione rileva automaticamente il tipo di dati di ogni colonna di dati. Per gli sviluppatori che utilizzano uno schema anziché il rilevamento automatico, è possibile consultare l'esempio Esporta gruppi di funzionalità da Data Wrangler per un codice che mostra come caricare lo schema, mapparlo e aggiungerlo come FeatureDefinition da utilizzare per creare FeatureGroup. Questo esempio copre anche un' AWS SDK for Python (Boto3) implementazione, che puoi usare al posto di SageMaker PythonSDK.

identity_feature_group.load_feature_definitions(data_frame=identity_data); # output is suppressed transaction_feature_group.load_feature_definitions(data_frame=transformed_transaction_data); # output is suppressed

Fase 6: creazione di un gruppo di funzionalità

In questa fase, viene usata la funzione create per creare il gruppo di funzionalità. Il codice seguente mostra tutti i parametri disponibili. L'archivio online non viene creato per impostazione predefinita, quindi è necessario impostarlo come True se si desidera abilitarlo. s3_uri è la posizione del bucket S3 dell’archivio offline.

# create a FeatureGroup feature_group.create(     description = "Some info about the feature group",     feature_group_name = feature_group_name,     record_identifier_name = record_identifier_name,     event_time_feature_name = event_time_feature_name,     feature_definitions = feature_definitions,     role_arn = role,     s3_uri = offline_feature_store_bucket,     enable_online_store = True,     online_store_kms_key_id = None,     offline_store_kms_key_id = None,     disable_glue_table_creation = False,     data_catalog_config = None,     tags = ["tag1","tag2"])

Il codice seguente, tratto dall'esempio di rilevamento delle frodi, mostra una chiamata create minima per ciascuno dei due gruppi di funzionalità creati.

identity_feature_group.create(     s3_uri=offline_feature_store_bucket,     record_identifier_name=record_identifier_name,     event_time_feature_name=event_time_feature_name,     role_arn=role,     enable_online_store=True ) transaction_feature_group.create(     s3_uri=offline_feature_store_bucket,     record_identifier_name=record_identifier_name,     event_time_feature_name=event_time_feature_name,     role_arn=role,     enable_online_store=True )

Quando si crea un gruppo di funzionalità, il caricamento dei dati richiede tempo, ed è necessario attendere la creazione del gruppo di funzionalità prima di poterlo utilizzare. È possibile controllare lo stato utilizzando il metodo descritto di seguito.

status = feature_group.describe().get("FeatureGroupStatus")

Durante la creazione del gruppo di funzionalità, si riceve Creating come risposta. Dopo aver completato correttamente questa fase, la risposta è Created. Altri stati possibili sono CreateFailed, Deleting o DeleteFailed.

Fase 7: operazioni con i gruppi di funzionalità

Dopo aver configurato il tuo gruppo di funzionalità, puoi eseguire una delle seguenti attività:

Descrizione di un gruppo di funzionalità

È possibile recuperare informazioni sul gruppo di funzionalità con la funzione describe.

feature_group.describe()

Elenco di gruppi di funzionalità

È possibile elencare tutti i gruppi di funzionalità con la funzione list_feature_groups.

sagemaker_client.list_feature_groups()

Inserimento di record in un gruppo di funzionalità

È possibile utilizzare la funzione ingest per caricare i dati delle funzionalità. Puoi trasmettere un data frame di funzionalità, impostare il numero di operatori e scegliere se attendere che venga restituito o meno. L'esempio seguente illustra l'utilizzo della funzione ingest.

feature_group.ingest(     data_frame=feature_data, max_workers=3, wait=True )

Per ogni gruppo di funzionalità di cui disponi, esegui la funzione ingest sui dati delle funzionalità che desideri caricare.

Ottenimento di record da un gruppo di funzionalità

È possibile utilizzare la funzione get_record per recuperare i dati di una specifica funzionalità tramite il relativo identificativo di record. L'esempio seguente utilizza un identificativo esemplificativo per recuperare il record.

record_identifier_value = str(2990130) featurestore_runtime.get_record(FeatureGroupName=transaction_feature_group_name, RecordIdentifierValueAsString=record_identifier_value)

Risposta esemplificativa tratta dall'esempio di rilevamento delle frodi:

... 'Record': [{'FeatureName': 'TransactionID', 'ValueAsString': '2990130'},   {'FeatureName': 'isFraud', 'ValueAsString': '0'},   {'FeatureName': 'TransactionDT', 'ValueAsString': '152647'},   {'FeatureName': 'TransactionAmt', 'ValueAsString': '75.0'},   {'FeatureName': 'ProductCD', 'ValueAsString': 'H'},   {'FeatureName': 'card1', 'ValueAsString': '4577'}, ...

Genera comandi hive DDL

La FeatureStore classe SageMaker Python SDK fornisce anche la funzionalità per generare comandi DDL Hive. Lo schema della tabella viene generato in base alle definizioni delle funzionalità. Le colonne prendono il nome da quello della funzione e il tipo di dati viene dedotto in base al tipo di funzionalità.

print(feature_group.as_hive_ddl())

Output di esempio:

CREATE EXTERNAL TABLE IF NOT EXISTS sagemaker_featurestore.identity-feature-group-27-19-33-00 (   TransactionID INT   id_01 FLOAT   id_02 FLOAT   id_03 FLOAT   id_04 FLOAT  ...

Creazione di un set di dati di addestramento

Feature Store crea automaticamente un catalogo di AWS Glue dati quando crei gruppi di funzionalità e puoi disattivarlo se lo desideri. Di seguito viene descritto come creare un singolo set di dati di addestramento con i valori delle funzionalità provenienti dai gruppi di funzionalità di identità e di transazione creati in precedenza in questo argomento. Inoltre, di seguito viene descritto come eseguire una query Amazon Athena per unire i dati memorizzati nell'archivio offline da gruppi di funzionalità di identità e transazione.

Per iniziare, crea una query Athena utilizzando athena_query() per i gruppi di funzionalità sia di identità sia di transazione. `table_name` è la AWS Glue tabella generata automaticamente da Feature Store.

identity_query = identity_feature_group.athena_query() transaction_query = transaction_feature_group.athena_query() identity_table = identity_query.table_name transaction_table = transaction_query.table_name

Scrittura ed esecuzione di una query Athena

Scrivi la tua query utilizzando SQL questi gruppi di funzionalità, quindi esegui la query con il .run() comando e specifica la posizione del bucket Amazon S3 per il set di dati da salvare lì.

# Athena query query_string = 'SELECT * FROM "'+transaction_table+'" LEFT JOIN "'+identity_table+'" ON "'+transaction_table+'".transactionid = "'+identity_table+'".transactionid' # run Athena query. The output is loaded to a Pandas dataframe. dataset = pd.DataFrame() identity_query.run(query_string=query_string, output_location='s3://'+default_s3_bucket_name+'/query_results/') identity_query.wait() dataset = identity_query.as_dataframe()

Da qui, puoi addestrare un modello utilizzando questo set di dati ed eseguire l'inferenza.

Eliminazione di un gruppo di funzionalità

È possibile eliminare un gruppo di funzionalità con la funzione delete.

feature_group.delete()

Il seguente esempio di codice è tratto dall'esempio di rilevamento delle frodi.

identity_feature_group.delete() transaction_feature_group.delete()

Per ulteriori informazioni, consulta la sezione Eliminare un gruppo di funzionalità. API

PrivacyCondizioni del sitoPreferenze cookie
© 2025, Amazon Web Services, Inc. o società affiliate. Tutti i diritti riservati.