训练你的第一个机器学习模型

在之前的文章手把手教你在应用里用上iOS机器学习框架Core ML里,我们用苹果的机器学习框架Core ML和事先训练好的模型,在iOS11上体验了一把机器学习的智能。这些新技术让我对机器学习能给产品设计和开发提供的丰富可能性充满期待。

大家都知道,机器学习是一个充满着复杂数学公式和算法的门槛较高的领域。也许你现在也跟之前的我一样,看着机器学习的大门不知道该怎么迈出第一步。洗脚不用先学游泳,让我用一个不能更简单的例子,告诉你怎么训练出你的第一个机器学习模型。

要解决的问题

机器学习的一个重要应用领域就是事先使用大量数据训练机器,让训练后的机器在面对从未见过的数据时能做出相应的判断。所以我们先准备好要解决的问题和相应的数据。

人的身体的各个属性往往存在联系,身高高的人体重往往会重一些。
这里是一份人的身体数据,它包括了性别、身高和体重三列。我们将用这份数据来训练一个机器学习模型,让他可以根据人的性别和身高预测他的体重。数据详见Data.csv

Gender Height(cm) Weight(kg)
0 163 50
0 163 47
1 169 61
0 163 55
0 163 61
... ... ...

顺带提一下,这份数据是我根据一个规则加上正态分布的随机数生成出来的,生成用的代码是GenerateFakeData.py

开发环境

运行这个例子需要机器上有Python 2.7的开发环境。同时安装好numpy, pandassklearn三个库。
推荐下载Anaconda的Python2.7版本。Anaconda包括了以上所有要用到的东西,还附带了别的科学计算用的库,同时它还提供了一系列库管理的功能,你值得拥有。

训练模型

from sklearn.linear_model import LinearRegression
import pandas as pd

导入要用到的库。

full_data = pd.read_csv("Data.csv")

用pandas库把Data.csv文件里的内容读出来。

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

创建一个线性回归的模型,调用它的fit方法训练它,注意我们要用性别和身高预测体重,所以fit方法的第一个参数是性别和身高,第二个参数是体重。

我们来试试这个模型预测的结果吧。

print model.predict([[1, 172]])

传入一个数组[1, 172],我要预测身高172cm男性的体重。

[ 66.811415]

推测体重是66.811415kg。
根据生成数据的逻辑,172cm的男性的体重应该是67kg,与预测的情况基本一致。

这只是个开始

这篇文章提供的内容其实特别特别简单。但我希望通过这篇文章,在尽可能的屏蔽理论细节的情况下,让你以最快的速度训练起自己的第一个机器学习模型。我相信,比起理论,实际的应用更容易激发人的好奇心,让人开始继续深入探索。

这个简单的用性别和身高预测体重的例子就可以提出很多问题。能不能用性别和体重来预测身高?能不能用身高和体重来预测出这个人的性别?在例子里我直接用了线性回归作为模型算法,我没有解释原因,这个算法到底是干什么的?它适合解决什么样的问题?还有没有别的算法?它们都能用来解决什么问题?这一个个问题会引导着你在这个领域的一步步前行。

如果你有兴趣在机器学习的领域走的更远一点,在Kaggle上有个很合适的练习。这个练习提供了一份泰坦尼克号上乘客的名单,包括了乘客的个人信息:性别、年龄、在哪上的船、社会阶层、船票的价格等等等等。我们要做的,是根据这些已知的乘客信息,在判断一个新的乘客是不是会在这个灾难后存活。
如果你有兴趣,你还可以好好逛逛Kaggle,这里有非常多的问题和数据,甚至还有一些带有悬赏的比赛,你也可以找一个你感兴趣的开始你的研究。

如果你想把你生成的机器模型用到自己的iOS应用上,请参阅如何把sklearn机器学习模型转换为Core ML支持的格式

本文所有的代码都已经上传到Github上。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容