首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >接收到,“抛出错误并没有捕获:提供的验证数据必须包含.”使用CreateML创建文本分类器模型时

接收到,“抛出错误并没有捕获:提供的验证数据必须包含.”使用CreateML创建文本分类器模型时
EN

Stack Overflow用户
提问于 2020-01-07 22:35:22
回答 2查看 164关注 0票数 4

我正在使用Playground创建一个使用CreateML的文本分类器模型,并不断地获取错误:

代码语言:javascript
复制
Playground execution terminated: An error was thrown and was not caught:
▿ The validation data provided must contain class.
  ▿ type : 1 element
    - reason : "The validation data provided must contain class."

我的代码相对简单,使用了数据表中的两列。textColumn标记为"text“,labelColumn标记为"class":

代码语言:javascript
复制
import Cocoa
import CreateML

let data = try MLDataTable(contentsOf: URL(fileURLWithPath: "/Users/ ... .csv"))
let(trainingData, testingData) = data.randomSplit(by: 0.8, seed: 5)
let sentimentClassifier = try MLTextClassifier(trainingData: trainingData, textColumn: "text", labelColumn: "class")
let evaluationMetrics = sentimentClassifier.evaluation(on: testingData, textColumn: "text", labelColumn: "class")
let evaluationAccuracy = (1.0 - evaluationMetrics.classificationError) * 100

我能找到的与Apple Developer文档中提供的代码之间唯一的区别是,而不是

代码语言:javascript
复制
let evaluationMetrics = sentimentClassifier.evaluation(on: testingData, textColumn: "text", labelColumn: "class")

他们的文件是:

代码语言:javascript
复制
let evaluationMetrics = sentimentClassifier.evaluation(on: testingData)

如果我尝试使用Apple Developer文档中的代码行,那么Xcode的11.2.1版本会给我一个失败。

提前感谢你能提供的任何帮助。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-19 09:28:25

尝尝这个!对我来说很管用

代码语言:javascript
复制
let data = try MLDataTable(contentsOf: URL(fileURLWithPath: "/Users/justinmacbook/Desktop/twitter-sanders-apple3.csv"))

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

let sentimentClassifier = try MLTextClassifier(trainingData: trainingData, textColumn: "class", labelColumn: "text")

let evaluationMetrics = sentimentClassifier.evaluation(on: testingData, textColumn: "class", labelColumn: "text")

let evaluationAccuracy = (1.0 - evaluationMetrics.classificationError) * 100
票数 0
EN

Stack Overflow用户

发布于 2020-06-27 16:04:14

这是对我有效的解决方案。我相信这个原始代码只适用于OSX 10.15+。

代码语言:javascript
复制
import Cocoa
import CreateML
import NaturalLanguage

let data = try MLDataTable(contentsOf: URL(fileURLWithPath: "/Users/m0a04y6/Desktop/iOS/ML/twitter-sanders-apple3.csv"))

let (trainingData, testingData) = data.randomSplit(by: 0.8, seed: 5)
    
let parameters = MLTextClassifier.ModelParameters.init(validationData: trainingData, algorithm: MLTextClassifier.ModelAlgorithmType.maxEnt(revision: 1), language: NLLanguage.english, textColumnValidationData: "text", labelColumnValidationData: "class")
let sentimentClassifier = try MLTextClassifier(trainingData: trainingData, textColumn: "text", labelColumn: "class", parameters: parameters)

let evaluationMetrics = sentimentClassifier.evaluation(on: testingData, textColumn: "text", labelColumn: "class")     //Training accuracy as a percentage

let evaluationAccuracy = (1.0 - evaluationMetrics.classificationError) * 100
print(evaluationAccuracy)

let metadata = MLModelMetadata(author: "Madhur Ahuja", shortDescription: "A model trained to classify movie review sentiment", version: "1.0")
try sentimentClassifier.write(to: URL(fileURLWithPath: "/Users/m0a04y6/Desktop/iOS/ML/sentiment.mlmodel"), metadata: metadata)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59637050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档