CoreML:为什么预测是数组?

时间:2019-01-28 12:45:47

标签: swift macos coreml createml

考虑像这样的os.scandir()文件:

dirs

和类似的代码

csv

//打印(数据表)

number,weigth,length,depth,diameter
1,100,202,314,455
2,1040,2062,3314,4585
3,1200,2502,3134,4557
4,1500,2052,3143,4655
...

let csvFile = Bundle.main.url(forResource: "myData", withExtension: "csv")! let dataTable = try! MLDataTable(contentsOf: csvFile) 是一个浮点数组,具有与let regressorColumns = ["weigth", "length", "depth", "diameter"] let regressorTable = dataTable[regressorColumns] let (regressorEvaluationTable, regressorTrainingTable) = regressorTable.randomSplit(by: 0.20, seed: 5) let regressor = try! MLLinearRegressor(trainingData: regressorTrainingTable, targetColumn: "weigth") let prediction = try! regressor.predictions(from: dataTable) print (prediction) 文件本身相同数量的元素。

四个问题:

  1. 为什么是数组?
  2. 为什么要漂浮?
  3. 为什么数组的元素数与输入prediction相同?
  4. 此数组确切代表什么?

1 个答案:

答案 0 :(得分:0)

您发布的代码的作用是在某些输入数据(regressorTrainingTable)上训练机器学习模型(特别是线性回归模型),目的是能够预测一些权重值(“或“目标”值)(基于“长度”,“深度”和“直径”(“独立”或“特征”值)。 然后,该模型实际上用于计算存储在dataTable中的每一行数据(长度,深度和直径)的权重值。

因此prediction是根据dataTable中存储的每一行的长度,深度和直径值得出的权重值预测的集合。希望这能回答问题1、3和4。

对于第二个问题,它仅与线性回归方法在内部构建模型的方式有关。构建(训练)模型时,即使将所有输入(依赖和独立)值都视为连续数字(即浮点数),即使它们在数据文件中表示为整数也是如此。