7
7
8
8
from mlflow import pyfunc
9
9
from seldon_core import Storage
10
- from seldon_core .user_model import SeldonComponent
10
+ from seldon_core .user_model import SeldonComponent , SeldonNotImplementedError
11
11
from typing import Dict , List , Union
12
12
13
13
logger = logging .getLogger ()
@@ -23,6 +23,7 @@ def __init__(self, model_uri: str, xtype: str = "ndarray"):
23
23
self .model_uri = model_uri
24
24
self .xtype = xtype
25
25
self .ready = False
26
+ self .column_names = None
26
27
27
28
def load (self ):
28
29
logger .info (f"Downloading model from { self .model_uri } " )
@@ -47,6 +48,11 @@ def predict(
47
48
df = pd .DataFrame (data = X )
48
49
result = self ._model .predict (df )
49
50
51
+ if isinstance (result , pd .DataFrame ):
52
+ if self .column_names is None :
53
+ self .column_names = result .columns .to_list ()
54
+ result = result .to_numpy ()
55
+
50
56
logger .debug (f"Prediction result: { result } " )
51
57
return result
52
58
@@ -64,3 +70,9 @@ def init_metadata(self):
64
70
f"metadata file { file_path } present but does not contain valid yaml"
65
71
)
66
72
return {}
73
+
74
+ def class_names (self ):
75
+ if self .column_names is not None :
76
+ return self .column_names
77
+
78
+ raise SeldonNotImplementedError ("prediction result is not a dataframe" )
0 commit comments