Skip to content

Commit cccd7f4

Browse files
authored
Fix attribute name mismatches from mlops sdk (#845)
* Convert numerical -> numeric * Adjust attr names to match mlops sdk * Add feature_/label_ prefix to type & name attrs * model_name -> modelName * Set event type to inferenceData
1 parent ad05014 commit cccd7f4

File tree

3 files changed

+135
-134
lines changed

3 files changed

+135
-134
lines changed

newrelic/hooks/mlmodel_sklearn.py

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -194,16 +194,16 @@ def create_label_event(transaction, _class, inference_id, instance, return_val):
194194

195195
event = {
196196
"inference_id": inference_id,
197-
"model_name": model_name,
198197
"model_version": model_version,
199198
"label_name": str(label_names_list[index]),
200-
"type": value_type,
201-
"value": str(value),
199+
"label_type": value_type,
200+
# The following are used for entity synthesis.
201+
"modelName": model_name,
202202
}
203203
# Don't include the raw value when inference_event_value is disabled.
204204
if settings and settings.machine_learning.inference_events_value.enabled:
205-
event["value"] = str(value)
206-
transaction.record_custom_event("ML Model Label Event", event)
205+
event["label_value"] = str(value)
206+
transaction.record_custom_event("inferenceData", event)
207207

208208

209209
def _get_label_names(user_defined_label_names, prediction_array):
@@ -234,7 +234,7 @@ def find_type_category(data_set, row_index, column_index):
234234

235235
def categorize_data_type(python_type):
236236
if "int" in python_type or "float" in python_type or "complex" in python_type:
237-
return "numerical"
237+
return "numeric"
238238
if "bool" in python_type:
239239
return "bool"
240240
if "str" in python_type or "unicode" in python_type:
@@ -289,15 +289,16 @@ def create_feature_event(transaction, _class, inference_id, instance, args, kwar
289289
value_type = find_type_category(data_set, row_index, col_index)
290290
event = {
291291
"inference_id": inference_id,
292-
"model_name": model_name,
293292
"model_version": model_version,
294293
"feature_name": str(final_feature_names[row_index]),
295-
"type": value_type,
294+
"feature_type": value_type,
295+
# The following are used for entity synthesis.
296+
"modelName": model_name,
296297
}
297298
# Don't include the raw value when inference_event_value is disabled.
298299
if settings and settings.machine_learning and settings.machine_learning.inference_events_value.enabled:
299-
event["value"] = str(value)
300-
transaction.record_custom_event("ML Model Feature Event", event)
300+
event["feature_value"] = str(value)
301+
transaction.record_custom_event("inferenceData", event)
301302

302303

303304
def _nr_instrument_model(module, model_class):

tests/mlmodel_sklearn/test_inference_events.py

Lines changed: 73 additions & 73 deletions
Original file line numberDiff line numberDiff line change
@@ -29,31 +29,31 @@
2929
{
3030
"users": {
3131
"inference_id": None,
32-
"model_name": "DecisionTreeClassifier",
32+
"modelName": "DecisionTreeClassifier",
3333
"model_version": "0.0.0",
3434
"feature_name": "col1",
35-
"type": "categorical",
36-
"value": "2.0",
35+
"feature_type": "categorical",
36+
"feature_value": "2.0",
3737
}
3838
},
3939
{
4040
"users": {
4141
"inference_id": None,
42-
"model_name": "DecisionTreeClassifier",
42+
"modelName": "DecisionTreeClassifier",
4343
"model_version": "0.0.0",
4444
"feature_name": "col2",
45-
"type": "categorical",
46-
"value": "4.0",
45+
"feature_type": "categorical",
46+
"feature_value": "4.0",
4747
}
4848
},
4949
{
5050
"users": {
5151
"inference_id": None,
52-
"model_name": "DecisionTreeClassifier",
52+
"modelName": "DecisionTreeClassifier",
5353
"model_version": "0.0.0",
5454
"label_name": "0",
55-
"type": "numerical",
56-
"value": "27.0",
55+
"label_type": "numeric",
56+
"label_value": "27.0",
5757
}
5858
},
5959
]
@@ -79,38 +79,38 @@ def _test():
7979
_test()
8080

8181

82-
label_type = "bool" if sys.version_info < (3, 8) else "numerical"
82+
label_type = "bool" if sys.version_info < (3, 8) else "numeric"
8383
true_label_value = "True" if sys.version_info < (3, 8) else "1.0"
8484
false_label_value = "False" if sys.version_info < (3, 8) else "0.0"
8585
pandas_df_bool_recorded_custom_events = [
8686
{
8787
"users": {
8888
"inference_id": None,
89-
"model_name": "DecisionTreeClassifier",
89+
"modelName": "DecisionTreeClassifier",
9090
"model_version": "0.0.0",
9191
"feature_name": "col1",
92-
"type": "bool",
93-
"value": "True",
92+
"feature_type": "bool",
93+
"feature_value": "True",
9494
}
9595
},
9696
{
9797
"users": {
9898
"inference_id": None,
99-
"model_name": "DecisionTreeClassifier",
99+
"modelName": "DecisionTreeClassifier",
100100
"model_version": "0.0.0",
101101
"feature_name": "col2",
102-
"type": "bool",
103-
"value": "True",
102+
"feature_type": "bool",
103+
"feature_value": "True",
104104
}
105105
},
106106
{
107107
"users": {
108108
"inference_id": None,
109-
"model_name": "DecisionTreeClassifier",
109+
"modelName": "DecisionTreeClassifier",
110110
"model_version": "0.0.0",
111111
"label_name": "0",
112-
"type": label_type,
113-
"value": true_label_value,
112+
"label_type": label_type,
113+
"label_value": true_label_value,
114114
}
115115
},
116116
]
@@ -142,31 +142,31 @@ def _test():
142142
{
143143
"users": {
144144
"inference_id": None,
145-
"model_name": "DecisionTreeRegressor",
145+
"modelName": "DecisionTreeRegressor",
146146
"model_version": "0.0.0",
147147
"feature_name": "col1",
148-
"type": "numerical",
149-
"value": "100.0",
148+
"feature_type": "numeric",
149+
"feature_value": "100.0",
150150
}
151151
},
152152
{
153153
"users": {
154154
"inference_id": None,
155-
"model_name": "DecisionTreeRegressor",
155+
"modelName": "DecisionTreeRegressor",
156156
"model_version": "0.0.0",
157157
"feature_name": "col2",
158-
"type": "numerical",
159-
"value": "300.0",
158+
"feature_type": "numeric",
159+
"feature_value": "300.0",
160160
}
161161
},
162162
{
163163
"users": {
164164
"inference_id": None,
165-
"model_name": "DecisionTreeRegressor",
165+
"modelName": "DecisionTreeRegressor",
166166
"model_version": "0.0.0",
167167
"label_name": "0",
168-
"type": "numerical",
169-
"value": "345.6",
168+
"label_type": "numeric",
169+
"label_value": "345.6",
170170
}
171171
},
172172
]
@@ -198,31 +198,31 @@ def _test():
198198
{
199199
"users": {
200200
"inference_id": None,
201-
"model_name": "ExtraTreeRegressor",
201+
"modelName": "ExtraTreeRegressor",
202202
"model_version": "0.0.0",
203203
"feature_name": "0",
204-
"type": "numerical",
205-
"value": "1",
204+
"feature_type": "numeric",
205+
"feature_value": "1",
206206
}
207207
},
208208
{
209209
"users": {
210210
"inference_id": None,
211-
"model_name": "ExtraTreeRegressor",
211+
"modelName": "ExtraTreeRegressor",
212212
"model_version": "0.0.0",
213213
"feature_name": "1",
214-
"type": "numerical",
215-
"value": "2",
214+
"feature_type": "numeric",
215+
"feature_value": "2",
216216
}
217217
},
218218
{
219219
"users": {
220220
"inference_id": None,
221-
"model_name": "ExtraTreeRegressor",
221+
"modelName": "ExtraTreeRegressor",
222222
"model_version": "0.0.0",
223223
"label_name": "0",
224-
"type": "numerical",
225-
"value": "1.0",
224+
"label_type": "numeric",
225+
"label_value": "1.0",
226226
}
227227
},
228228
]
@@ -253,31 +253,31 @@ def _test():
253253
{
254254
"users": {
255255
"inference_id": None,
256-
"model_name": "ExtraTreeRegressor",
256+
"modelName": "ExtraTreeRegressor",
257257
"model_version": "0.0.0",
258258
"feature_name": "0",
259-
"type": "numerical",
260-
"value": "12",
259+
"feature_type": "numeric",
260+
"feature_value": "12",
261261
}
262262
},
263263
{
264264
"users": {
265265
"inference_id": None,
266-
"model_name": "ExtraTreeRegressor",
266+
"modelName": "ExtraTreeRegressor",
267267
"model_version": "0.0.0",
268268
"feature_name": "1",
269-
"type": "numerical",
270-
"value": "13",
269+
"feature_type": "numeric",
270+
"feature_value": "13",
271271
}
272272
},
273273
{
274274
"users": {
275275
"inference_id": None,
276-
"model_name": "ExtraTreeRegressor",
276+
"modelName": "ExtraTreeRegressor",
277277
"model_version": "0.0.0",
278278
"label_name": "0",
279-
"type": "numerical",
280-
"value": "11.0",
279+
"label_type": "numeric",
280+
"label_value": "11.0",
281281
}
282282
},
283283
]
@@ -308,41 +308,41 @@ def _test():
308308
{
309309
"users": {
310310
"inference_id": None,
311-
"model_name": "DecisionTreeClassifier",
311+
"modelName": "DecisionTreeClassifier",
312312
"model_version": "0.0.0",
313313
"feature_name": "0",
314-
"type": "str",
315-
"value": "20",
314+
"feature_type": "str",
315+
"feature_value": "20",
316316
}
317317
},
318318
{
319319
"users": {
320320
"inference_id": None,
321-
"model_name": "DecisionTreeClassifier",
321+
"modelName": "DecisionTreeClassifier",
322322
"model_version": "0.0.0",
323323
"feature_name": "1",
324-
"type": "str",
325-
"value": "21",
324+
"feature_type": "str",
325+
"feature_value": "21",
326326
}
327327
},
328328
{
329329
"users": {
330330
"inference_id": None,
331-
"model_name": "DecisionTreeClassifier",
331+
"modelName": "DecisionTreeClassifier",
332332
"model_version": "0.0.0",
333333
"feature_name": "0",
334-
"type": "str",
335-
"value": "22",
334+
"feature_type": "str",
335+
"feature_value": "22",
336336
}
337337
},
338338
{
339339
"users": {
340340
"inference_id": None,
341-
"model_name": "DecisionTreeClassifier",
341+
"modelName": "DecisionTreeClassifier",
342342
"model_version": "0.0.0",
343343
"feature_name": "1",
344-
"type": "str",
345-
"value": "23",
344+
"feature_type": "str",
345+
"feature_value": "23",
346346
}
347347
},
348348
]
@@ -373,28 +373,28 @@ def _test():
373373
{
374374
"users": {
375375
"inference_id": None,
376-
"model_name": "DecisionTreeClassifier",
376+
"modelName": "DecisionTreeClassifier",
377377
"model_version": "0.0.0",
378378
"feature_name": "0",
379-
"type": "str",
379+
"feature_type": "str",
380380
}
381381
},
382382
{
383383
"users": {
384384
"inference_id": None,
385-
"model_name": "DecisionTreeClassifier",
385+
"modelName": "DecisionTreeClassifier",
386386
"model_version": "0.0.0",
387387
"feature_name": "1",
388-
"type": "str",
388+
"feature_type": "str",
389389
}
390390
},
391391
{
392392
"users": {
393393
"inference_id": None,
394-
"model_name": "DecisionTreeClassifier",
394+
"modelName": "DecisionTreeClassifier",
395395
"model_version": "0.0.0",
396396
"label_name": "0",
397-
"type": "str",
397+
"label_type": "str",
398398
}
399399
},
400400
]
@@ -473,31 +473,31 @@ def _test():
473473
{
474474
"users": {
475475
"inference_id": None,
476-
"model_name": "MultiOutputClassifier",
476+
"modelName": "MultiOutputClassifier",
477477
"model_version": "0.0.0",
478478
"label_name": "0",
479-
"type": "numerical",
480-
"value": "1",
479+
"label_type": "numeric",
480+
"label_value": "1",
481481
}
482482
},
483483
{
484484
"users": {
485485
"inference_id": None,
486-
"model_name": "MultiOutputClassifier",
486+
"modelName": "MultiOutputClassifier",
487487
"model_version": "0.0.0",
488488
"label_name": "1",
489-
"type": "numerical",
490-
"value": "0",
489+
"label_type": "numeric",
490+
"label_value": "0",
491491
}
492492
},
493493
{
494494
"users": {
495495
"inference_id": None,
496-
"model_name": "MultiOutputClassifier",
496+
"modelName": "MultiOutputClassifier",
497497
"model_version": "0.0.0",
498498
"label_name": "2",
499-
"type": "numerical",
500-
"value": "1",
499+
"label_type": "numeric",
500+
"label_value": "1",
501501
}
502502
},
503503
]

0 commit comments

Comments
 (0)