2018/4/14 21:01:55当前位置推荐好文程序员浏览文章

python3玩转机器学习

究竟什么是机器学习?

让机器去学习

传统的算法课程中写的代码,是让机器去执行

markmark

最早的机器学习应消耗 - 垃圾邮件分辨

一封邮件是垃圾邮件还是不是垃圾邮件

传统的计算机处理问题思路:

  • 编写规则: 定义"垃圾邮件",让计算机执行
markmark

有固定的输入输出。输入邮件信息,输出能否是垃圾邮件

markmark
  • 对于很多如垃圾邮件这样的问题,规则很难定义,很难判断怎么是垃圾邮件

  • 规则在不断的变化。

同一个时间点,不同的地点,不同的行业等针对这些人群的垃圾邮件也是不同的。

图像识别

markmark

图像识别最基本的问题就是这个图片体现的具体是什么?

我给你一张照片,不是猫就是狗。现在我给你一张照片让你分辨这张照片究竟是猫还是狗

  • 典型的二分类问题

使消耗什么样的特征才可以分辨出一张图片是猫还是狗呢?

具体定义什么是一只狗的样子,什么是一只猫的样子。这很不容易实现

可以找到很多的狗拥有猫科的斑纹。斑纹难以消耗计算机量化。

机器学习就是让机器去寻觅这张图片的信息和它究竟是猫还是狗之间的关系。

关系可可以使消耗我们人类的语言都无法形容出来。

人脸识别

markmark

人和人之间整体的特征是基本完全一致的,都拥有五官,头发,皮肤等等。

但是与此同时: 人和人之间的样貌相差也是非常大的。

我们人类能容易的分辨出这个人是谁,那个人是谁。但是让计算机来做就比较难实现

机器学习的方法来完成人脸识别,效果不错。

数字识别

markmark

MNIST 数据集

给你一个手写的数字,让你判断其中是哪一个数字

机器学习在这个方面的精确率已经达到了99%以上。 邮政编码,快递包裹分类

交通摄像头来识别你的车牌号

课程主要内容

  • 机器学习算法:
    • KNN(k近邻算法)
    • 线性回归
    • 多项式回归
    • 逻辑回归
    • 模型正则化
    • PCA 方法(进行降维)
    • SVM
    • 决策树
    • 随机森林
    • 集成学习

模型的选择和模型调整

markmark

其余的还有: 贝叶斯算法和LDA算法

  • 成体系地系统详情机器学习算法

讲解准则

  • 深入了解算法基本原理: 不是简单的调包

  • 实际使消耗算法处理真实场景的问题

  • 手写识别 & 数据集

对不同算法进行比照实验

什么样的场景应该使消耗什么样的算法,不同算法的优缺点是怎么的。

调参;对同一算法的不同参数进行比照实验

了解不同的参数是怎么影响算法的最终结果的。

  • 对部分的算法进行底层的编写
markmark

详情如何使消耗算法

不可以像传统算法学习一样: 了解并实现即可以了

markmark
  • 一个非常重要的任务: 如何评价算法的好坏

对于同一个任务有很多算法能进行处理,怎么评价。

看似某些算法得到了非常好的结果,但是当我们深入分析会发现你的算法在其中起到的作消耗很小。使消耗相对客观的方式来评价算法的好坏。

  • 如何处理过拟合和欠拟合的问题

  • 如何调节算法的参数

  • 如何验证算法的正确性

不仅仅是调库

这个课程是不是在调库?

  • 不反对调库

真正反对的是:

markmark

完成一个排序任务,基本上不会手写一个排序算法,都是调消耗系统的sort函数来完成的。

很多标准库都会提供一个稳固排序和一个非稳固排序。

在什么情况下使消耗哪种排序?

高效的组合api来完成业务。

前提是在调库的时候应该对概念原理有所理解

  • 深入代码内部,能帮助我们更好的了解算法
  • 更好的了解算法,能帮助我们更好的选择算法

选择算法是我们在机器学习领域很重要的一步

  • 甚至在将来创立新的算法

当现有算法无法满足我们的需求时,前提是对于旧的算法深入了解的基础上来完成的。

这门课希望兼顾

  • 算法原理的学习
  • 部分算法底层的编写(方便的让我们在底层代码中增加少量绘制的代码,让我们更好的了解算法)
  • scikit-learn 机器学习库的使消耗学习

算法的编写,也会使消耗模仿scikit对于算法的封装模式

算法原理 + scikit learn 使消耗

技术栈

语言: python3
框架: scikit-learn
其余: numpy(矩阵),matplotlib(绘图),..

第三章进行简单详情numpy和Matplotlib

只要要掌握python3的基础语法

不断使消耗scikit-learn的方法

IDE: Jupyter Notebook,不需要一次一次的运行。探究的数据结果。

pycharm 来完成算法底层的探索

markmark

课程学习基础

  • 语言: python3

数学:
- 基本高中数学水平
- 本科高等数学(求导),线性代数(矩阵的运算),概率论。(及格水平)

学习过这些课程

入门机器学习: 数学的要求并不高。

深入机器学习: 对于数学的要求越来越高

课程所使消耗的数据集

框架: scikit-learn 内置数据集或者通过scikit-learn能直接下载的数据集

喂给算法数据。

不会在互联网中寻觅其余数据源。

markmark

scikit-learn官方文档中datasets部分。

波斯顿的房价,糖尿病人医疗数据,手写数字,鸢尾花

非内置,但是能由简单的函数调消耗实现下载

markmark

MNIST数据集

这门课程不涵盖的内容

  • 本课程专注于机器学习的算法学习

但根据使消耗场景不同,机器学习从数据准备到实际应消耗是一个庞大繁琐的过程

不会对整个过程进行详情。

  • 不包括专门领域的机器学习任务,但课程详情的算法都是这些领域的基础

  • 视觉领域 & 推荐系统 & 自然语言解决 & 时间序列分析

普适度非常高的基础算法的运行原理。

不包括对于真实世界的数据进行预解决的过程

TOy(玩具) datasets,简单,规整,特征也被整理的非常好。

markmark

主要关注于监督学习。

非监督学习的算法如k-means主要是做数据的预解决任务,PCA算法。

机器学习主要内容

机器学习相关的算法

markmark

人工智可以是一个比机器学习更大的概念

机器学习只是人工智可以领域处理问题的一部分方法

搜素为策略的人工智可以方法,也可以处理很多的问题

深蓝计算机所采取的算法就是以搜索为基础的算法

学习人工智可以: 传统的搜索算法策略也要理解

这些搜索算法策略,也是能处理很多交叉问题的。

梯度下降法来计算某个目标函数的最优解

  • 梯度下降法本身就是一种搜索算法

传统的搜索策略和传统算法领域在实现机器学习的底层领域也起着重要的作消耗。

阿尔法狗更新为阿尔法zero机器: 能从0开始训练自己,一点一点打败去年的阿尔法狗

阿尔法zero本身的原理就深度结合了传统的启发式搜索中的诸多思路
这里只是告诉同学们不要把机器学习孤立的看待

机器学习算法和很多不同领域能碰撞出许多奇妙的火花。

人工智可以领域除过以搜索为基础的传统策略以外,还有很多经典策略:
以符号为代表的,通过推导逻辑为基础的形成智可以的方法

机器学习算法主要是对数据样本的学习,得到学习样本和学习目的之间的联络。
来完成智可以的任务。

深度学习

markmarkmarkmark

神经网络也是机器学习领域非常重要的一个方法。

2017调查中,神经网络在业界的使消耗频率排在第四名

排名前三的: 逻辑回归,决策树,随机森林。

我们都会进行详细的详情

  • 深入了解算法基本原理
  • 实际使消耗算法处理真实场景问题
  • 对不同算法进行比照实验
  • 调参: 对同一算法的不同参数进行比照实验
  • 对部分算法底层编写

评价算法

markmark

不仅仅是调库。现有算法进行创新

网友评论