Как получить уверенность в прогнозе от MLModel (Модель машинного обучения) в Swift 5 - PullRequest
1 голос
/ 25 января 2020

, хотя мой код довольно прост c в том, что он пытается сделать, в основном я хочу, чтобы модель классификатора возвращала значение точности / достоверности для того, насколько точным она считает прогноз, в реальном Xcode приложение (не игровая площадка), пожалуйста .

Я использую искусственный классификатор породы собак, например, классификатор текста:

Код:

do {

  if try DogClassiferModel().prediction(text: "value").confidence >= 90 {

  print("We have a high enough accuracy that this is the name of a dog breed")

  }

} catch let error {

  print(error)
}

Я знаю, что на игровой площадке XCode вы можете сделать это с тестовыми данными:

Код:

  let data = try MLDataTable(contentsOf: URL(fileURLWithPath: "Path"))

  let (trainingData, testingData) = data.randomSplit(by: 0.8, seed: 5)

  let testClassifier = try MLTextClassifier(trainingData: trainingData, textColumn: "text", labelColumn: "recognized")

  // Getting the testing evaluation.
  let evaluationMetrics = testClassifier.evaluation(on: testingData)
  let evaluationAccuracy = (1.0 - evaluationMetrics.classificationError) * 100

  // We can print the accuracy with print(evaluationAccuracy).

Мысль: Возможно, CoreML не работает так, как я пытаюсь не знаю?

1 Ответ

0 голосов
/ 25 января 2020

Когда вы пишете,

try DogClassiferModel().prediction(text: "value")

то, что возвращается, является DogClassiferModelOutput объектом. Если вывод вашей модели называется confidence, вы можете получить его, написав:

if let output = try DogClassiferModel().prediction(text: "value") {
  print(output.confidence)
}

Однако модели классификатора в Core ML обычно обрабатываются особым образом. Они могут вернуть метку класса с наивысшей оценкой или словарь, содержащий вероятности для всех меток.

Лучший способ узнать, как это работает для вашей модели, - это посмотреть на файл mlmodel в Xcode, щелкнуть стрелку, чтобы go автоматически сгенерировать файл исходного кода, и найти «Вывод» учебный класс. Это будет иметь одно или несколько свойств, к которым вы можете получить доступ (как показано в примере выше).

...