机器学习初识

用工匠精神打造精彩文章,分享最新科技资讯,从不同角度剖析资讯内容,剑走偏锋是我的态度,茶余饭后聊百味!各位读者们老爷们好吖,我是文艺与气质于一身实力派小编——小宸,这里可以让您看到最新最有趣的资讯内容,让您感到不同凡响的科技资讯内容,会给大家带来意外惊喜,好了不跟大家逗乐了,给大家呈现今天的精彩内容:

目前,机器学习广泛应用在各行各业中。本文是作者通过学习《西瓜书》和部分网络课程后,手动实践的过程记录,对于新手有一定的帮助作用。

预期读者:有一定的Python编程基础,对机器学习有足够兴趣的新手。

一:背景

近几年人工智能快速升温,几乎所有人的工作都或多或少和人工智能产生一些关联。机器学习是人工智能中飞速发展的一部分,并且在一些领域中已经得到深入的应用。

百度百科中定义

机器学习(Machine Learning, ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

根据定义,机器学习最基本的做法是使用算法来解析数据并从中学习,然后对真实世界中的事件做出决策或预测。如果说计算机科学是研究关于算法的学问,那么机器学习就是研究关于学习算法的学问。

现实生活中,我们学习的过程可以简单概括为积累经验,然后根据经验进行有效的预判。类似的,机器学习的过程可以理解为从数据中通过计算来不断改善系统自身的性能。所以,数据是机器学习的基础,对机器学习有着至关重要的作用。

下面我们通过一个小例子来进一步了解一下什么是数据,以及描述数据时常用的名词。如上图所示的一组西瓜的数据,一般来说,我们将每个反映事件或对象在某方面的表现或性质的事项,例如色泽、根蒂、敲声,称为属性(attribute)或特征(feature)。数据中的每行是关于一个事件或对象的描述,称为示例(instance)或样本(sample)。所有行就被称为数据集(Data set),表示为 D = ,m个样本X一起组成数据集D,每个样本X又由d个属性描述, d也称为样本X的维数(dimensionality)。

机器学习的过程可以分为以下几个部分:从数据中学得模型的过程称为“学习(learning)”或“训练(training)”,这个过程通过执行某个学习算法来完成,训练过程中使用的数据称为训练数据集(training data)。而学得的模型因为对应了关于数据的某种潜在的规律,因此称为假设。数据中包含的潜在规律自身,则称为真相或真实。学习过程就是为了找出或使我们的假设不断地逼近真相。因此模型也可称为学习器,可将其看作学习算法在给定数据和参数空间上的实例化。

在实际应用中,机器学习的大致流程如下:

1.先将数据集分成训练数据集和测试数据集;

2.数据归一化(scaler):对于KNN类似算法,我们需要数据在同一尺度下;

3.对归一化后的训练数据集进行训练得到最终模型;

4.用同样的scaler(使用训练数据集的mean和std)对测试数据集也进行归一化处理;

5.将归一化后测试数据集送进最终模型中,来看分类的准确度;

6.得到模型的性能效果测评;

7.网格搜索寻找最好的超参数。

二:项目实现简介

了解了机器学习相关的概念和运行流程,下面我们就以一个具体的例子来进一步理解上面所介绍的概念。

在这个例子中,我们将通过机器学习的方法来预测年龄,即识别一张人像是成人还是小孩。这个功能在大部分的智能手机中已经是必备的功能,当摄像头对准某个人的脸部时,手机上将会显示出该人的预测年龄。笔者发现通过不同场景的比较,皮肤比较黑的,手机预测的年龄比实际年龄会大一些。

下面我们就开始动手实现:

1、数据获取

为了使数据尽量真实,我们使用python爬虫来抓取图片,此过程用到python库icrawler(库的使用请自行百度或谷歌),在百度和谷歌图片中通过关键词“adult”和“child”将图片抓取下来并存到本地。然而通过此方法抓取到的数据中包含大量无关数据,导致数据不纯净,比如一个写着18岁的生日蛋糕,及其他没有人脸的图片。由于数据量不大,因此我们通过人工过滤的方法将不符合条件的图片剔除掉。在数据集较小时可采用此方法,但对于有大量数据的实际开发中可考虑采用OpenCV等工具,使用已写好的人脸识别库实现自动过滤。

最终我们得到了大人和小孩的图片各1600张。通常此项工作是最耗费时间的。

2、模型建立

由于此处是进行演示,因此我们使用API比较人性化的深度学习框架Keras来完成建模的过程,其后台基于TensorFlow。代码编写部分我们使用的是python语言。

Keras是一个高层神经网络API,由纯Python编写而成。其后端可基于Tensorflow或Theano或CNTK。Keras为支持快速实验而生,能够把你的idea迅速转换为结果,如果你有如下需求,请选择Keras:简易和快速的原型设计(Keras具有高度模块化、极简和可扩充的特性)、支持CNN和RNN或二者的结合、无缝CPU和GPU切换。

此时,我们将两组数据(Adult,Child)随机分为三份,其中训练数据集:A-1000 pics, C-1300 pics,验证数据集:A-500 pics, C-500 pics和测试数据集: A-60 pics,C-60 pics。

在此过程中,我们训练模型的平台配置为:Windows10 CPU intel i5。

参考代码如下:

准备部署工作

建模

三:实现效果

经过一段时间的训练,模型已经基本稳定,其训练数据集准确率可达到92%,测试数据集准确率达85%。我们使用HTML5和数据可视化库(react及rechart)用于展示预测结果,如下图所示,上传一张小孩的图片:

预测结果显示为child类别。下面我们再上传一张大人的图片试试:

其预测结果显示为adult类。视频如下:

视频加载中...

今天资讯内容到此为止,大家积极探讨资讯内容,给小编提更多宝贵意见,留下您的关注,小编将持续为大家更新更多的劲爆科技资讯内容,让大家生活充满乐趣。拜拜...

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181027A1KA9O00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券