CreateML初体验

2019-07-26  本文已影响0人  MariaPang
  我不写代码, 我只是代码的搬运工.  公众号(曼鱼说iOS)密码忘记了, 先写在这里.
  研究ML有比较长一段时间了, 之前都是看的Python的, 最近挤时间看了下CreateML , 在它出现之前, 在苹果机上只能用在其他平台已经训练好的模型,然后用CoreML 这个框架去做些预测工作.   有了CreateML 就可以在Mac上用playground 实时训练模型了. 
  打算用一个数据集(10000组数据), 来根据 一个人喝咖啡数,醒来时间,预估睡眠时间这三个特征来  预测实际去睡觉的时间. 

步骤大概是:

下载json 格式的数据集, 放于桌面 -> 根据数据源创建表 -> 分配训练集和测试集的比例(要保证每次一样效果,用带seed参数的那个分配方法) -> 根据目标预测项创建回归器 -> 评估回归器的效果 -> 加上元数据 -> 转化为.mlmodel模型并写入本地 ->  用这个模型结合 CoreML框架做预测app(这部分下次补充).

代码:

 import CreateML
import Foundation

//通过桌面的json 文件创建一个 数据表
let table = try MLDataTable(contentsOf:URL(fileURLWithPath: "/Users/maria.pang/Desktop/better-rest.json"))

// 把表数据分为训练集和测试集, 并且两者比例 为 8: 2
let (trainingData, testingData) = table.randomSplit(by: 0.8)

//根据目标项 (实际要预测的是 喝不同量的咖啡等三个特征条件下,实际开始入睡的时间)创建回归器
/* json 格式如下
 {
 "wake": 31500,
 "estimatedSleep": 9,
 "coffee": 6,
 "actualSleep": 38230
 }
 */
let regressor = try MLRegressor(trainingData: trainingData, targetColumn: "actualSleep")

//根据数据集 和所使用的 回归器生成 评估矩阵, 打印错误集的方差和最大值
let evaluationMetrics = regressor.evaluation(on: table)
print(evaluationMetrics.rootMeanSquaredError)
print(evaluationMetrics.maximumError)

//模型创建者,描述等生成模型所需的额外元信息
let metadata = MLModelMetadata(author: "MariaPang", shortDescription: "A model trained to predict optimum sleep times for coffee drinkers.", license: "not sure by now", version: "1.0", additional: nil)

//将训练玩的回归器 添加额外的元信息后 转化为 coreML 可以用的.mlmodel, 写入到指定路径
try regressor.write(to: URL(fileURLWithPath: "/Users/maria.pang/Desktop/SleepCalculator.mlmodel"), metadata: metadata)


image.png

未完待续.......

上一篇下一篇

猜你喜欢

热点阅读