机器学习 1 Hello World

常用的 Python Machine Learning 开源库

  • scikit-learn
  • TensorFlow

这里写图片描述

之后主要就演示使用 scikit-learn 进行 Machine Learning 的学习

什么是机器学习

我们可以把 机器学习看作是人工智能的一个子领域,初期的 AI 人工智能程序只能做好一件事情,eg: 深蓝很会下棋,但只会下棋

但是现在我们写的程序可以解决更多问题,而不需要重新编码, eg: 阿尔法狗, 不仅会下棋,还很会玩打砖块的游戏

之后我们学的就是这样一种 可以从样本中学习的算法,它取代了硬编码规则

区分苹果和橘子的代码怎么写?

需求: 以一张图片为基础,做一些分析,然后辨别出图上是哪一种水果

分析: 需要写出大量的规则来完成这种分析,比如写一个程序将橘子的像素点相加,然后比较其中绿色像素点的数量,这个比例可以给你判断这是哪种水果的依据

但是更深刻的看这个问题时,你将会发现这个世界充满着不确定因素,你好不容易写的规则可能会被一些个例打破,eg :你要写怎样的代码才能识别黑白照片,或者图片中根本没有苹果和橘子呢?

事实上,不管你写多少规则,都能找到一张没法让他识别的图片,你必须写成千上万的规则而这只是用来区分 苹果跟橘子, 如果换一个问题,你又得重写这些代码

对于这类问题,我们需要一种算法,可以自动生成规则,这样我们就不需要一条条重复劳动了,为了做到这些,我们需要训练一个分类器 Classifier

你可以将分类器看作一个 方法, 它将接受一些数据作为输入,然后它们分配标签作为输出

比如,给我一张图片,我需要知道图片上到底是橘子还是苹果,或者我收到一封邮件,我需要区分这到底是不是一封垃圾邮件

用来实现自动分类器的技术,我们称之为 监督学习: Supervised Learning

Supervised Learning :

  • Create a classifier by finding patterns in examples

Hello World

Installing scikit-learn

这里写图片描述

Supervised Learning

Supervised Learning 有这样几个基本步骤

这里写图片描述

收集数据

首先将描述的水果属性作为输入数据:根据像质量、质感等特性对收集到的数据进行预测,这到底是一个苹果还是橘子

这里写图片描述

我们把测量好的数据记录在一张表中,在机器学习中,我们把这种测量得到的值叫做 特征

表格的每一行都是我们训练数据的一个样本,它描述了一个水果的属性,最后一列我们把它叫做标签,用来标注每行的数据是什么水果

我们需要让 训练器 学习这所有的数据,我们拥有更多的训练数据,分类器就能更好的工作

Train Classifier

现在我们用代码来表示训练数据,首先我们定义两个变量:features 和 labels

features 包含了上面图中表格前两列的数据:分类器的输入

label 特指最后一列数据:我们希望分类器给出的输出

  • features 中第二个数据 smooth& bumpy 用 0&1 表示是因为:scikit-learn uses real-values features,所以用整数而不是字符串
  • label 中 0 -> 苹果, 1 -> 橘子
#Firest Machine Learing Program
from sklearn import tree

features = [[140,1], [130,1], [150,0], [170,0]]
labels = [0,0,1,1]

下面要用这些示例数据来训练我们的分类器,这里我们用到的分类器类型叫做 决策树

这里写图片描述

暂时不做深入解释,但现在,我们可以把分类器看作是汇集了很多规则的盒子,有很多类型的分类器,但是输出输入型总是一样的,

from sklearn import tree
...
clf = tree.DecisonTreeClassifier()

上面的代码中我们使用了 决策树,到这一步,它还是一个没有规则的空盒子,完全不知道如何区别苹果和橘子,为了训练它,我们需要一种算法

如果分类器是一种有许多规则的盒子,你可以把学习算法思想看成是 创造这个盒子的过程,它通过训练来寻找一些固有的模式,比如,它会注意到橘子可能会更重一点,苹果会更光滑一点(我会什么会想到妹子的皮肤呢,=-=)

那么它会创造一条规则,对于重一些的水果,有较大可能是个橘子

在 scikit 这个库里,训练算法包含在分类器实例中,叫 fit, 你可以把 fit 理解成 发现数据固有模式的同义词

clf = clf.fit(features, labels)

Make Predictions

输入数据: 一个重约 150g, 表皮粗糙的水果,输出0 -> 苹果,输出1 -> 橘子

print(clf.predict([[150, 0]]))

完整代码

#Firest Machine Learing Program
from sklearn import tree

features = [[140,1], [130,1], [150,0], [170,0]]
labels = [0,0,1,1]

#使用决策树
clf = tree.DecisionTreeClassifier()
clf = clf.fit(features, labels)

print(clf.predict([[150, 0]]))
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值