Google Cloud ML-engine поддерживает возможность развертывания объектов scikit-learn Pipeline
. Например, текстовая классификация Pipeline
может выглядеть следующим образом:
classifier = Pipeline([
('vect', CountVectorizer()),
('clf', naive_bayes.MultinomialNB())])
Классификатор можно обучить,
classifier.fit(train_x, train_y)
Затем классификатор можно загрузить в Google Cloud Storage,
model = 'model.joblib'
joblib.dump(classifier, model)
model_remote_path = os.path.join('gs://', bucket_name, datetime.datetime.now().strftime('model_%Y%m%d_%H%M%S'), model)
subprocess.check_call(['gsutil', 'cp', model, model_remote_path], stderr=sys.stdout)
Затем можно создать Model
и Version
с помощью Google Cloud Console или программным способом , связывание файла 'model.joblib'
с Version
.
Затем этот классификатор можно использовать для прогнозирования новых данных, вызывая развернутую модель predict
конечная точка,
ml = discovery.build('ml','v1')
project_id = 'projects/{}/models/{}'.format(project_name, model_name)
if version_name is not None:
project_id += '/versions/{}'.format(version_name)
request_dict = {'instances':['Test data']}
ml_request = ml.projects().predict(name=project_id, body=request_dict).execute()
ML-движок Google Cloud вызывает функцию классификатора predict
и возвращает прогнозируемый класс. Тем не менее, я хотел бы иметь возможность вернуть счет доверия. Обычно этого можно достичь, вызвав функцию predict_proba
класса, однако, похоже, нет возможности изменить вызываемую функцию. Мой вопрос: возможно ли вернуть показатель достоверности для классификатора scikit-learn при использовании ML-движка Google Cloud? Если нет, то не могли бы вы дать какие-либо рекомендации относительно того, как еще добиться этого результата?
Обновление:
Я нашел хакерское решение. Он включал перезапись функции predict
классификатора собственной функцией predict_proba
,
nb = naive_bayes.MultinomialNB()
nb.predict = nb.predict_proba
classifier = Pipeline([
('vect', CountVectorizer()),
('clf', nb)])
Удивительно, но это работает. Если кто-нибудь знает более точное решение, пожалуйста, дайте мне знать.
Обновление: Google выпустил новую функцию (в настоящее время в бета-версии) под названием Custom prediction routines
. Это позволяет вам определить, какой код запускается при поступлении запроса на предсказание. Он добавляет больше кода к решению, но, безусловно, менее хакерский.