predict_onnx_fl()predict_onnx_fl()

La funzione predict_onnx_fl() prevede l'uso di un modello di apprendimento automatico con training esistente.The function predict_onnx_fl() predicts using an existing trained machine learning model. Questo modello è stato convertito in formato ONNX , serializzato in stringa e salvato in una tabella Esplora dati di Azure standard.This model has been converted to ONNX format, serialized to string, and saved in a standard Azure Data Explorer table.

Nota

SintassiSyntax

T | invoke predict_onnx_fl(models_tbl , MODEL_NAME , features_cols , pred_col)T | invoke predict_onnx_fl(models_tbl, model_name, features_cols, pred_col)

ArgomentiArguments

  • models_tbl: il nome della tabella che contiene tutti i modelli serializzati.models_tbl: The name of the table containing all serialized models. Questa tabella deve contenere le colonne seguenti:This table must contain the following columns:
    • nome: nome del modelloname: the model name
    • timestamp: ora del training del modellotimestamp: time of model training
    • modello: rappresentazione di stringa del modello serializzatomodel: string representation of the serialized model
  • MODEL_NAME: il nome del modello specifico da usare.model_name: The name of the specific model to use.
  • features_cols: matrice dinamica contenente i nomi delle colonne delle funzionalità utilizzate dal modello per la stima.features_cols: Dynamic array containing the names of the features columns that are used by the model for prediction.
  • pred_col: il nome della colonna in cui sono archiviate le stime.pred_col: The name of the column that stores the predictions.

UtilizzoUsage

predict_onnx_fl()funzione tabulare definita dall'utente da applicare utilizzando l' operatore Invoke.predict_onnx_fl() is a user-defined tabular function to be applied using the invoke operator. È possibile incorporare il codice nella query o installarlo nel database.You can either embed its code in your query, or install it in your database. Sono disponibili due opzioni di utilizzo, ad hoc e permanenti.There are two usage options: ad hoc and persistent usage. Per esempi, vedere le schede seguenti.See the below tabs for examples.

Per l'utilizzo ad hoc, incorporare il codice utilizzando l' istruzione Let.For ad hoc usage, embed the code using the let statement. Non è richiesta alcuna autorizzazione.No permission is required.

let predict_onnx_fl=(samples:(*), models_tbl:(name:string, timestamp:datetime, model:string), model_name:string, features_cols:dynamic, pred_col:string)
{
    let model_str = toscalar(models_tbl | where name == model_name | top 1 by timestamp desc | project model);
    let kwargs = pack('smodel', model_str, 'features_cols', features_cols, 'pred_col', pred_col);
    let code =
    '\n'
    'import pickle\n'
    'import binascii\n'
    '\n'
    'smodel = kargs["smodel"]\n'
    'features_cols = kargs["features_cols"]\n'
    'pred_col = kargs["pred_col"]\n'
    'bmodel = binascii.unhexlify(smodel)\n'
    '\n'
    'features_cols = kargs["features_cols"]\n'
    'pred_col = kargs["pred_col"]\n'
    '\n'
    'import onnxruntime as rt\n'
    'sess = rt.InferenceSession(bmodel)\n'
    'input_name = sess.get_inputs()[0].name\n'
    'label_name = sess.get_outputs()[0].name\n'
    'df1 = df[features_cols]\n'
    'predictions = sess.run([label_name], {input_name: df1.values.astype(np.float32)})[0]\n'
    '\n'
    'result = df\n'
    'result[pred_col] = pd.DataFrame(predictions, columns=[pred_col])'
    '\n'
    ;
    samples | evaluate python(typeof(*), code, kwargs)
};
//
// Predicts room occupancy from sensors measurements, and calculates the confusion matrix
//
// Occupancy Detection is an open dataset from UCI Repository at https://archive.ics.uci.edu/ml/datasets/Occupancy+Detection+
// It contains experimental data for binary classification of room occupancy from Temperature,Humidity,Light and CO2.
// Ground-truth labels were obtained from time stamped pictures that were taken every minute
//
OccupancyDetection 
| where Test == 1
| extend pred_Occupancy=bool(0)
| invoke predict_onnx_fl(ML_Models, 'ONNX-Occupancy', pack_array('Temperature', 'Humidity', 'Light', 'CO2', 'HumidityRatio'), 'pred_Occupancy')
| summarize n=count() by Occupancy, pred_Occupancy

Matrice di confusione:Confusion matrix:

Occupancy   pred_Occupancy  n
TRUE        TRUE            3006
FALSE       TRUE            112
TRUE        FALSE           15
FALSE       FALSE           9284