使用Xcode自带 Core ML GUI界面的Machine Learning操作教学一

引文

这段时间刚好在学习Swift UI和Machine Learning,发现Xcode自带的Machine Learning 还是挺强大的,虽然只能使用部分的算法,但是对于一些小项目而言还是足够了的。此外,GUI图形界面真的爽到我了,Mac党狂喜

本文只涉及最基础的使用方法,如果需要进行批量预测和输出,需要自己学习SwiftUI的io流和文件处理,因为我暂时还没学这么多…只浅学了一下CoreML,所以这篇教程不会涉及批量的数据处理,只涉及基础的训练和预测

使用方法

需要提前准备的东西

  • 一台Mac电脑
  • Xcode
  • 训练用的csv文件,需要用其他方法提前清洗和处理数据。需要竖排是属性和数值,横排是每一个样本。每一行是属性的名称。详情可以以我测试用的csv作为参考
  • 一些Swift基本语法知识(和python有点类似,可以浅学一下)
  • PS:本例中使用的csv数据以及最终的模型,以及成品的代码在(可以帮我star一下):SwiftUI/Swift ML基础教学 at main · TomorrowMC/SwiftUI (github.com)

训练并得到模型

1. 打开Xcode主界面,找到左上角,依次点击:Xcode——Open Developer Tool——Creat ML——new document

使用Xcode自带 Core ML GUI界面的Machine Learning操作教学一_第1张图片

 

2.  选择需要的功能,这里以Tabular Regression为例,点击next,输出模型的名字,作者名字,储存位置,然后next

使用Xcode自带 Core ML GUI界面的Machine Learning操作教学一_第2张图片

使用Xcode自带 Core ML GUI界面的Machine Learning操作教学一_第3张图片 

 

 3. 点击choose,select选择csv数据文件

使用Xcode自带 Core ML GUI界面的Machine Learning操作教学一_第4张图片

 4.选择需要预测的值Target(即输出值),传入csv格式测试集 Testing Data(如果有的话)

使用Xcode自带 Core ML GUI界面的Machine Learning操作教学一_第5张图片

5. 点击Features按钮,选择输入值和特征(这个例子里我都选上了)

 

 5.选择合适的算法,调参(如果选择自动的话Xcode会自动帮你选择最优的模型)

使用Xcode自带 Core ML GUI界面的Machine Learning操作教学一_第6张图片

6.  点击左上角的Train按键开始训练。训练完成以后点击output——get,储存最后的模型文件使用Xcode自带 Core ML GUI界面的Machine Learning操作教学一_第7张图片

 使用模型进行预测

1. 新建一个playground:打开xcode——file——new——playGround

 2. 新建一个iOS的Playground文件,名字随便取

使用Xcode自带 Core ML GUI界面的Machine Learning操作教学一_第8张图片

3. 把训练的模型拖到导航栏里(导入完成是不会显示的,你也看不到是否导入成功了。但是不要紧)

 

4. 在代码栏写代码进行预测(可以看看官方文档写的更详细)

import UIKit

import CoreML  //导入机器学习模块

let config=MLModelConfiguration() 
//获取ML的参数,括号内是可以传入额外参数的,但是简单的机器学习我就用默认参数了

let model=try!SleepCalculator(configuration: config) 
//获取模型,SleepCalculator表示你导入的模型的【文件名称】,我的文件名叫SleepCalculator.mlmodel。使用 try! 可以避免try catch异常。括号内的configuration传入我们默认的config参数。

let result = try! model.prediction(wake: 32400, estimatedSleep: 8.5, coffee: 1.0)
//进行预测得到一个result对象,使用model.prediction 方法进行预测,参数填入input值。因为这里只是举例,所以我随便传入了几个参数

print(result.actualSleep)
//result对象包含output的属性名称和output的数值。我需要输出的是预测的actualSleep数值,所以调用result.actualSleep。如果需要输出属性的名称,使用result.featureNames

5. 运行代码,获得最终值

PS:拆包看了一下,训练出来的模型里面Apple应该是加密过的,不能直接获取到参数和任何有用的信息,绝了。深入的学习还需要去观摩一下官方文档,这里我就不多提了……我也没学这么多…

你可能感兴趣的:(xcode,机器学习,swift)