模型的输入参数作为文本分类中的字符串

Input parameter for model as string in Text classification

我正在使用 scikit-learn 构建文档分类系统,它运行良好。我正在将模型转换为 Core ML 模型格式。但模型格式除了输入参数为 multiArrayType。我想把它变成 excepts string 或 array of string 这样我就可以很容易地从 IOS 预测 application.I 已经尝试过以下方式:

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" 

我检查了 GitHub 库中的 Core ML model,我可以看到输入和输出不同。

我怎样才能做到这一点,以便我可以从 IOS 应用传递一个简单的参数来进行预测。

听起来您发现的其他 mlmodel 使用 DictVectorizer 将字符串转换为索引(可能后跟 OneHotEncoder)。

您可以通过在 sklearn 中创建管道并将该管道转换为 Core ML 来实现。