![](/img/trans.png)
[英]How do I make a shared 2D array that multiprocessing.Pool will accept for computing pairwise statistics?
[英]How do I make an SK Learn Classifier accept a 2D array as input for predictions?
因此,我制作了一個具有混合數據類型的模型,並使用了列轉換器來構建分類器,並使用了來自SK Learn Docs的推薦示例。
由於輸入來自csv,並轉換為Pandas數據框,因此X_test,X_train,y_test和y_train看起來也都是數據框。 將y_test傳遞到clf.predict()函數可以正常工作,並且我收到了預測。
但是,我想托管此模型Google Cloud ML Engine,該模型在預測請求API中接受2D實例數組。 如何使分類器適應並接受輸入數組而不是數據框? 我意識到這可能是微不足道的,但是努力尋找解決方案。
為了使您的分類器與Google Cloud Machine Learning Engine(CMLE)兼容,您需要從管道中分離出預處理器和LogisticRegression分類器。 您將需要執行預處理邏輯客戶端,並且獨立分類器將托管在CMLE上。
讀取csv文件並定義數量和分類轉換器后,您需要按如下所示修改培訓代碼:
...
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
preprocessor = ColumnTransformer(
transformers=[
('num', numeric_transformer, numeric_features),
('cat', categorical_transformer, categorical_features)])
model = LogisticRegression(solver='lbfgs')
X_train_transformed = preprocessor.fit_transform(X_train)
model.fit(X_train_transformed, y_train)
print("model score: %.3f" % model.score(preprocessor.transform(X_test), y_test))
您可以導出模型(使用pickle或joblib)並將其部署在CMLE上。 在構造向CMLE進行預測的json請求時,您首先需要使用以下代碼將數據幀預處理為2D數組: preprocessor.transform(X_test)
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.