美文网首页
CreateML初体验

CreateML初体验

作者: MariaPang | 来源:发表于2019-07-26 00:11 被阅读0次
      我不写代码, 我只是代码的搬运工.  公众号(曼鱼说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

    未完待续.......

    相关文章

      网友评论

          本文标题:CreateML初体验

          本文链接:https://www.haomeiwen.com/subject/ljdlrctx.html