如何把sklearn机器学习模型转换为Core ML支持的格式

手把手教你在应用里用上iOS机器学习框架Core ML里,我们用苹果提供的模型Places205-GoogLeNet在iOS应用里实现了一个支持Core ML的应用。然后在
5行代码训练出你的第一个机器学习模型里,训练了出了一个自己的机器学习模型。

接下来我来告诉你怎么在应用里用上自己训练的模型。

开发环境

5行代码训练出你的第一个机器学习模型里的开发环境的基础上,我们还要安装苹果的coremltools

在控制台执行下面这一行命令就够了。

pip install -U coremltools

如果你用的Python版本不是2.x,上面的命令会报错,这里有解决方案。

转换模型

我们在上篇文章的代码基础上往下写。简单说,就是我们的模型可以通过提供的性别和身高推算出人的体重,更多细节请翻回这里看。

from sklearn.linear_model import LinearRegression
import pandas as pd

full_data = pd.read_csv("Data.csv")
model = LinearRegression()
model.fit(full_data[['Gender', 'Height']], full_data["Weight"])

model就是我们在Python里的模型对象,下面我们把它转化成Core ML要用的mlmodel格式。

import coremltools
coreml_model = coremltools.converters.sklearn.convert(model, ["gender", "height"], "weight")

coreml_model.author = "chenyi"
coreml_model.license = 'BSD'
coreml_model.short_description = 'Predicts weight by gender and height'

coreml_model.input_description['gender'] = "Gender:0 for male;1 for female."
coreml_model.input_description['height'] = "Height in cm."
coreml_model.output_description['weight'] = "Weight in kg."

coreml_model.save('PredictWeight.mlmodel')

大部分代码都是用来填写模型的描述信息的,真正做转换工作的只有convertsave两行。

大功告成,接下来你就可以按照手把手教你在应用里用上iOS机器学习框架Core ML里提到的方法把模型用在自己的iOS应用上啦。

要注意一下,coremltools现在的版本(0.3.0)还不支持sklearn的所有算法。具体的支持情况请查阅文档

参考资料

CoreMLTools官网
CoreMLTools文档

推荐阅读更多精彩内容