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 creare 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 schema, o un'inferenza di apprendimento di una macchina. Il nodo genera il valore trasformato o dedotto nei nodi successivi.
La seguente guida illustra le librerie di nodi supportate per l'apprendimento automatico in tempo reale.
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'}
I nodi standard si basano su librerie open source di scienza dei dati come Pandas e ScikitLearn.
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 è un nodo di Adobe interno che richiede un ID modello per il pulling del modello ONNX preformato e lo utilizza per il punteggio sui dati in arrivo.
Specificare le colonne nello stesso ordine in cui si desidera inviare i dati al modello ONNX per la valutazione.
node_model_score = ONNXNode(params={"features": ['browser', 'device', 'login_page', 'product_page', 'search_page'], "model_id": model_id})
Il seguente nodo Pandas consente di importare qualsiasi metodo pd.DataFrame
o qualsiasi funzione di primo livello generale panda. Per ulteriori informazioni sui metodi Pandas, consultare la Documentazione sui metodi Pandas. Per ulteriori informazioni sulle funzioni di primo livello, consultare la guida di riferimento alle API Pandas per le funzioni generali.
Il nodo seguente utilizza "import": "map"
per importare il nome del metodo come una stringa nei parametri, seguito dall’inserimento dei parametri come una funzione mappa. L’esempio seguente esegue questa operazione utilizzando {"arg": {"Desktop": 1, "Mobile": 0}, "na_action": 0}
. Dopo aver posizionato la mappa, è possibile impostare inplace
come True
o False
. Impostare inplace
come True
o False
in base al fatto che si desidera applicare o meno la trasformazione. Per impostazione predefinita "inplace": False
crea una nuova colonna. Il supporto per fornire un nuovo nome di colonna è 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 sulle 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"})
Il nodo ScikitLearn consente di importare qualsiasi modello o scalatore di ScikitLearn ML. Utilizzate 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 |
---|---|
funzionalità | Inserire le feature nel modello (elenco di stringhe). Ad esempio: browser , device , login_page , product_page , search_page |
label | Nome colonna di destinazione (stringa). |
mode | 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 | Per ulteriori informazioni, vedere la documentazione relativa ai sklearn API (map/dict). |
node_instance.process(data_message_from_previous_node) | Il metodo process() prende DataMsg dal nodo precedente e applica la trasformazione. Dipende dal nodo corrente in uso. |
Utilizzate il seguente nodo per suddividere il dataframe in treno e test passando train_size
o test_size
. Questo restituisce un fotogramma dati con un indice multiplo. Potete accedere ai frame di dati del treno e del test utilizzando l'esempio seguente, msg5.data.xs(“train”)
.
splitter = Split(params={"train_size": 0.7})
msg5 = splitter.process(msg4)
Il passaggio successivo consiste nel creare nodi da utilizzare per il punteggio di un modello di apprendimento automatico in tempo reale. Per ulteriori informazioni, consultare la Guida utente del notebook Real-time Machine Learning.