我想训练一个MLClassifier来识别特定的设备运动。因此,我记录了运动数据,并对每条记录的数据进行了相应的标记。当这种方法没有如我所愿的那样有效时,我开始意识到我需要记录“运动”本身,而不仅仅是某一时刻的运动数据。
于是,我将5个数据集(字典)连续打包,作为我的新训练特征。我这样想过,但当我尝试训练新数据时,创建分类器时遇到了以下错误:
在列’s’中遇到的值类型为’字典’,无法映射到分类值。分类值必须是整数、字符串或None。
现在我慢慢开始放弃了……你们中有没有人有建议,或者知道为什么我不能使用序列(数组)作为特征?
…
顺便说一下,这里有一些我的JSON样本数据:
[{"s":[{"rZ":-1.0,"p":0.2,"aY":-0.0,"rX":1.5,"y":0.1,"r":-1.3,"aZ":0.2,"rY":-2.8,"aX":0.6},{"rZ":-1.9,"p":0.2,"aY":0.0,"rX":2.0,"y":0.2,"r":-1.4,"aZ":0.0,"rY":-3.2,"aX":0.5},{"rZ":-1.8,"p":0.3,"aY":0.0,"rX":2.4,"y":0.2,"r":-1.5,"aZ":0.9,"rY":-4.8,"aX":0.5},{"rZ":-1.6,"p":0.3,"aY":0.0,"rX":2.5,"y":0.3,"r":-1.6,"aZ":0.9,"rY":-3.8,"aX":0.6},{"rZ":-1.8,"p":0.3,"aY":0.1,"rX":2.2,"y":0.3,"r":-1.7,"aZ":0.1,"rY":-3.0,"aX":0.6}],"v":0}]
这是我用来创建模型的代码:
do{ let a = try MLDataTable(contentsOf: dummyJSONurl) let recognizer = try MLClassifier(trainingData: a, targetColumn: "v")}catch let er{ er}
回答:
你不能使用序列,因为MLClassifier
不是一个能够处理序列的分类器。或许苹果公司会在未来的版本中添加这一功能,但目前看来,你需要使用更强大的工具。