簡體   English   中英

如何使SK Learn分類器接受2D數組作為預測的輸入?

[英]How do I make an SK Learn Classifier accept a 2D array as input for predictions?

因此,我制作了一個具有混合數據類型的模型,並使用了列轉換器來構建分類器,並使用了來自SK Learn Docs的推薦示例。

https://scikit-learn.org/stable/auto_examples/compose/plot_column_transformer_mixed_types.html#sphx-glr-auto-examples-compose-plot-column-transformer-mixed-types-py

由於輸入來自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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM