Входной параметр для модели в виде строки в текстовой классификации

Я строю систему классификации документов с помощью scikit-learn, и она отлично работает. Я конвертирую модель в формат модели Core ML. Но формат модели исключает входной параметр как multiArrayType. Я хочу, чтобы он исключал строку или массив строк, чтобы я мог легко предсказать из приложения IOS. Я попытался следующим образом:

from sklearn.linear_model import LogisticRegression

logreg = LogisticRegression()
logreg.fit(X_train_dtm, y_train)

#testing a value
docs_new = ['get exclusive prize offer']
docs_pred_class = nb.predict(count_vect.transform(docs_new))

#Exporting to coremodel
import coremltools

coreml_model = coremltools.converters.sklearn.convert(logreg)
#print model
coreml_model

Печать модели coreml дает следующий результат:

 input {
     name: "input"
     type {
     multiArrayType {
      shape: 7505
      dataType: DOUBLE
    }
  }
}
output {
  name: "classLabel"
  type {
    int64Type {
    }
  }
}
output {
  name: "classProbability"
  type {
    dictionaryType {
      int64KeyType {
      }
    }
  }
  }
  predictedFeatureName: "classLabel"
predictedProbabilitiesName: "classProbability" 

Я проверил модель Core ML в библиотеке GitHub, я вижу, что есть разные входные и выходные данные.

Как я могу добиться этого, чтобы я мог передать простой параметр из приложения IOS, чтобы сделать прогноз.

1 ответ

Решение

Похоже, что другая млмодель, которую вы нашли, использует DictVectorizer превратить строки в индексы (возможно, сопровождаемый OneHotEncoder).

Вы можете сделать это, создав конвейер в sklearn и преобразовав его в Core ML.

Другие вопросы по тегам