使用文檔作為輸入時的錯誤結果

當使用TfidfVectorizer輸入文檔時,模型不會返回預期的結果。JSON數組

寫的pradeepkumar.palaniswamy

最後發布時間:2022年5月16日

問題

您有一個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)
刪除

信息

當輸入為JSON時,兩者都是“你好”,“世界”)而且“你好”,["世界"]]返回相同的輸出。