Как заставить SK Learn Classifier принимать двумерный массив в качестве входных данных для прогнозов? - PullRequest
0 голосов
/ 22 декабря 2018

Итак, я сделал модель со смешанными типами данных и использовал рекомендованный пример из документации SK Learn, используя преобразователь столбцов для построения классификатора.

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 Dataframe, он выглядит так, как будто X_test, X_train, y_test, y_train также являются фреймами данных.Передача y_test в функцию clf.predict () работает нормально, и я получаю прогнозы.

Однако я хочу разместить эту модель Google Cloud ML Engine, которая принимает двумерный массив экземпляров в API запроса прогноза.Как настроить классификатор и принять массив входных данных, а не фрейм данных?Я понимаю, что это может быть довольно тривиальным, но изо всех сил пытается найти решение.

1 Ответ

0 голосов
/ 21 января 2019

Чтобы сделать ваш классификатор совместимым с 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.При построении вашего запроса json в CMLE для прогнозирования, вам сначала нужно предварительно обработать ваш фрейм данных в 2D-массив, используя: preprocessor.transform(X_test).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...