Riferimento del nodo di apprendimento automatico in tempo reale (Alpha)

IMPORTANTE

L'apprendimento automatico in tempo reale non è ancora disponibile per tutti gli utenti. Questa funzione è in alfa e viene ancora testata. Questo documento è soggetto a modifiche.

Un nodo è l'unità fondamentale di cui si formano i grafici. Ogni nodo esegue un'attività specifica e può essere concatenato utilizzando i collegamenti per formare un grafico che rappresenta una pipeline ML. L'attività eseguita da un nodo rappresenta un'operazione sui dati di input, ad esempio una trasformazione di dati o schemi o un'inferenza di apprendimento automatico. Il nodo restituisce il valore trasformato o dedotto ai nodi successivi.

La guida seguente illustra le librerie di nodi supportate per il machine learning in tempo reale.

Esplorazione dei nodi da utilizzare nella pipeline ML

Copiare il codice seguente in un blocco appunti Python per visualizzare tutti i nodi disponibili per l'uso.

from pprint import pprint
 
from rtml_nodelibs.core.nodefactory import NodeFactory as nf
# Discover Nodes
pprint(nf.discover_nodes())

Risposta di esempio

{'FieldOps': 'rtml_nodelibs.nodes.standard.preprocessing.fieldops.FieldOps',
 'FieldTrans': 'rtml_nodelibs.nodes.standard.preprocessing.fieldtrans.FieldTrans',
 'ModelUpload': 'rtml_nodelibs.nodes.standard.ml.artifact_utils.ModelUpload',
 'ONNXNode': 'rtml_nodelibs.nodes.standard.ml.onnx.ONNXNode',
 'Pandas': 'rtml_nodelibs.nodes.standard.preprocessing.pandasnode.Pandas',
 'Processor': 'rtml_nodelibs.nodes.standard.preprocessing.processor.Processor',
 'Receiver': 'rtml_nodelibs.nodes.standard.preprocessing.receiver.Receiver',
 'ScikitLearn': 'rtml_nodelibs.nodes.standard.ml.scikitlearn.ScikitLearn',
 'Simulator': 'rtml_nodelibs.nodes.standard.preprocessing.simulator.Simulator',
 'Split': 'rtml_nodelibs.nodes.standard.preprocessing.splitter.Split'}

Nozioni standard

I nodi standard si basano su librerie open source di scienza dei dati come Pandas e ScikitLearning.

ModelUpload

Il nodo ModelUpload è un nodo di Adobe interno che prende un percorso_modello e carica il modello dal percorso del modello locale all'archivio BLOB di apprendimento automatico in tempo reale.

model = ModelUpload(params={'model_path': model_path})
  
msg_model = model.process(None, 1)
  
model_id = msg_model.model['model_id']

ONNXNode

ONNXNode è un nodo di Adobe interno che prende un ID modello per richiamare il modello ONNX pre-addestrato e lo utilizza per segnare i dati in arrivo.

SUGGERIMENTO

Specificare le colonne nello stesso ordine in cui si desidera inviare i dati al modello ONNX per ottenere il punteggio.

node_model_score = ONNXNode(params={"features": ['browser', 'device', 'login_page', 'product_page', 'search_page'], "model_id": model_id})

Panda

Il seguente nodo Pandas ti consente di importare qualsiasi metodo pd.DataFrame o qualsiasi funzione generale di livello superiore dei panda. Per ulteriori informazioni sui metodi Pandas, consulta la documentazione sui metodi Pandas. Per ulteriori informazioni sulle funzioni di primo livello, visita la Guida di riferimento API Pandas per le funzioni generali.

Il nodo seguente utilizza "import": "map" per importare il nome del metodo come stringa nei parametri, seguito dall’immissione dei parametri come funzione di mappa. L’esempio seguente lo fa utilizzando {"arg": {"Desktop": 1, "Mobile": 0}, "na_action": 0}. Dopo aver impostato la mappa, puoi impostare inplace come True o False. Imposta inplace come True o False in base al fatto che desideri applicare o meno la trasformazione al suo interno. Per impostazione predefinita "inplace": False crea una nuova colonna. Il supporto per fornire un nuovo nome di colonna deve essere impostato per essere aggiunto in una versione successiva. L’ultima riga cols può essere un nome di colonna singolo o un elenco di colonne. Specificare le colonne alle quali si desidera applicare la trasformazione. In questo esempio device è specificato.

#  df["device"] = df["device"].map({"Desktop":1, "Mobile":0}, na_action=0)
 
node_device_apply = Pandas(params={"import": "map",
    "kwargs": {"arg": {"Desktop": 1, "Mobile": 0}, "na_action": 0},
    "inplace": True,
    "cols": "device"})
 
 
# df["browser"] = df["browser"].map({"chrome": 1, "firefox": 0}, "na_action": 0})
 
node_browser_apply = Pandas(params={"import": "map",
    "kwargs": {"arg": {"chrome": 1, "firefox": 0}, "na_action": 0},
    "inplace": True,
    "cols": "browser"})

ScikitImpara

Il nodo ScikitLearning consente di importare qualsiasi modello o scaler di ScikitImpara ML. Utilizza la tabella seguente per ulteriori informazioni su uno dei valori utilizzati nell’esempio:

model_train = ScikitLearn(params={
    "features":['browser', 'device', 'login_page', 'product_page', 'search_page'],
    "label": "payment_confirm",
    "mode": "train",
    "model_path": "resources/model.onnx",
    "params": {
        "model": "sklearn.linear_model.LogisticRegression",
        "model_params": {"solver" : 'lbfgs'}
    }})
msg6 = model_train.process(msg5)
Valore Descrizione
caratteristiche Feature di input nel modello (elenco di stringhe).
Ad esempio: browser, device, login_page, product_page, search_page
etichetta Nome della colonna di destinazione (stringa).
modalità Treno/prova (stringa).
model_path Percorso del modello di salvataggio locale in formato onnx.
params.model Percorso di importazione assoluto del modello (stringa), ad esempio: sklearn.linear_model.LogisticRegression.
params.model_params I parametri ipertestuali del modello sono indicati nella documentazione Sklearn API (map/dict) per ulteriori informazioni.
node_instance.process(data_message_from_previous_node) Il metodo process() prende DataMsg dal nodo precedente e applica la trasformazione. Questo dipende dal nodo corrente utilizzato.

Dividere

Usa il seguente nodo per dividere il dataframe in treno e testare passando train_size o test_size. Questo restituisce un dataframe con un multi-indice. È possibile accedere ai dataframe del treno e del test utilizzando il seguente esempio, msg5.data.xs(“train”).

splitter = Split(params={"train_size": 0.7})
msg5 = splitter.process(msg4)

Passaggi successivi

Il passaggio successivo consiste nel creare nodi da utilizzare per il punteggio di un modello di apprendimento automatico in tempo reale. Per ulteriori informazioni, visita la Guida utente del notebook Real-time Machine Learning.

In questa pagina