У меня есть модель, которую я обучил с использованием sklearn Pipeline и OneVsRestClassifier, который я пытаюсь развернуть в Cloud ML Engine, однако при использовании команды:
gcloud ml-engine predict --model $MODEL_NAME --version $VERSION_NAME --json-instances $INPUT_FILE
Я получаю ошибку:
{
"error": "Prediction failed: Bad output type returned.The predict function should return either a numpy ndarray or a list."
}
Это наводит меня на мысль, что это тот факт, что вывод метода предиктирования OneVsRestClassifier является разреженной матрицей, когда он должен быть массивом с нулевыми значениями. Как я могу преобразовать его вывод в плотный массив в моем конвейере?
Архитектура конвейера выглядит следующим образом:
Pipeline([('tfidf', tfidf), ('clf', OneVsRestClassifier(XGBClassifier())])
Спасибо!
Я пытался использовать методы, приведенные здесь ( вероятность предсказания scikit-обучения Google Cloud ML-engine 'pregnate_proba ()' ), чтобы перезаписать метод предиката OneVsRestClassifier его методомgnakt_proba, однако это приводит к следующая ошибка при попытке выбора нового конвейера:
PicklingError: Can't pickle <function OneVsRestClassifier.predict_proba at 0x10a8f9d08>: it's not the same object as sklearn.multiclass.OneVsRestClassifier.predict_proba