Входной параметр для модели в виде строки в текстовой классификации
Я строю систему классификации документов с помощью 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.