問題
您有一個ML模型,它將文檔作為輸入,特別是字符串數組。
你使用一個特征提取器,比如TfidfVectorizer將文檔轉換為字符串數組,並將該數組攝取到模型中。
模型經過訓練,並在筆記本中進行預測,但模型服務不會為JSON輸入返回預期的結果。
導致
TfidfVectorizer期望一個文檔數組作為輸入。
Databricks將輸入轉換為Pandas數據幀TfidfVectorizer處理不正確。
解決方案
您必須創建一個自定義變壓器,並將其添加到管道的頭部。
例如,下麵的示例代碼檢查DataFrames的輸入。如果它找到一個DataFrame,那麼第一列將被轉換為文檔數組。然後將文檔數組傳遞給TfidfVectorizer在被攝取到模型之前。
%python類DataFrameToDocs(): def transform(self, input_df): import pandas as pd if isinstance(input_df, pd. dataframe):返回input_df[0]. ifreturn input_df def fit(self, X, y=None, **fit_params): return self steps = [('dftodocs', DataFrameToDocs()),('tfidf', TfidfVectorizer()), ('nb_clf',多米亞nb ())] pipeline = pipeline (steps)