一、机器学习概述
1.1 机器学习与人工智能、深度学习的关系:
-
人工智能:机器展现的人类智能
-
机器学习:计算机利用已有的数据(经验),得出了某种模型,并利用此模型预测未来的一种方法。
-
深度学习:实现机器学习的一种技术。
1.2 机器学习的范围
1.3 机器学习可以解决什么问题
给定数据的预测问题:
-
数据清洗/特征选择
-
确定算法模型/参数优化
-
结果预测
二、机器学习的类型
2.1 机器学习的类型-监督学习
分类(Classification):
-
身高1.65m,体重100kg的男人肥胖吗?
-
根据肿瘤的体积、患者的年龄来判断良性或恶性?
回归(Regression):
-
如何预测上海浦东的房价?
-
未来的股票市场走向?
2.2 机器学习的类型-无监督学习
聚类(Clustering):
-
如何将教室里的学生按爱好、身高划分为5类?
降维( Dimensionality Reduction ):
-
如何将将原高维空间中的数据点映射到低维度的空间中?
2.3 机器学习的类型-强化学习
强化学习(Reinforcement Learning):
-
用于描述和解决智能体(agent)在与环境的交互过程中通过学习策略以达成回报最大化或实现特定目标的问题 。
三、机器学习的背景知识
3.1 机器学习的背景知识-希腊字母
3.2 机器学习的背景知识-数学基础
高等数学:导数、微分、泰勒公式
线性代数:向量、矩阵、行列式、秩、线性方程组、特征值和特征向量
概率论与数理统计:随机事件和概率、概率的基本性质和公式、常见分布、期望、协方差
3.3 机器学习的背景知识-Python基础
Python 的主要数据类型:
-
字符串
-
整数与浮点数
-
布尔值
-
日期时间
Python 的数据结构:
-
列表(list):用来存储一连串元素的容器,列表用[ ]来表示,其中元素的类型可不相同。
-
元组(tuple):元组类似列表,元组里面的元素也是进行索引计算。列表里面的元素的值可以修改,而元组里面的元素的值不能修改,只能读取。元组的符号是( )。
-
集合(set):集合主要有两个功能,一个功能是进行集合操作,另一个功能是消除重复元素。 集合的格式是:set( ),其中()内可以是列表、字典或字符串,因为字符串是以列表的形式存储的。
-
字典(dict):字典dict也叫做关联数组,用大括号{ }括起来,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度,其中key不能重复。
Python控制流:
-
顺序结构
-
分支结构
-
循环结构
-
break、continue和pass
-
列表生成式
Python函数:
-
调用内置函数
-
定义函数
-
高阶函数
-
匿名函数:高阶函数传入函数时,不需要显式地定义函数,直接传入匿名函数更方便(lambda函数)
Python模块-NumPy:
-
numpy:NumPy(Numeric Python)提供了许多高级的数值编程工具,如:矩阵数据类型、矢量处理,以及精密的运算库。专为进行严格的数字处理而产生。多为很多大型金融公司使用,以及核心的科学计算组织如:Lawrence Livermore,NASA用其处理一些本来使用C++,Fortran或Matlab等所做的任务。
-
Numpy是一个用python实现的科学计算的扩展程序库,包括:
-
一个强大的N维数组对象Array
-
比较成熟的(广播)函数库
-
用于整合C/C++和Fortran代码的工具包
-
实用的线性代数、傅里叶变换和随机数生成函数
-
切片:
广播:
Python模块-pandas:
-
pandas:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。
-
pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。
-
pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
-
基本数据结构:
-
Series:一维数据结构,包含行索引和数据两个部分。
-
DataFrame:二维数据结构,包含带索引的多列数据,各列的数据类型可能不同。
-
-
数据索引:
//通 过 切 片 方 式 选 取 多 行
df[5:10]
//选 取 列
df[col_label] or df.col_label
//通过标签选取行/列.
df.loc[row_label, col_label]
通过位置(自然数)选取行/列
df.iloc[row_loc, col_loc] -
数据合并:
-
数据融合:
轴向连接多个DataFrame,pd.concat([df1, df2])
Python模块-Scipy:
-
Scipy:scipy是构建在numpy的基础之上的,它提供了许多的操作numpy的数组的函数。
-
SciPy是一款方便、易于使用、专为科学和工程设计的python工具包,它包括了统计、优化、整合以及线性代数模块、傅里叶变换、信号和图像图例,常微分方差的求解等。
Python模块-matplotlib:
-
Matplotlib:Matplotlib 是一个 Python 的 2D绘图库,它以各种硬拷贝格式和跨平台的交互式环境生成出版质量级别的图形 。
-
通过 Matplotlib,开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等。
-
图形的各元素名称如下:
-
绘图框 是图形的最高容器,所有图形必须放置在绘图框中。
-
⼦图 是绘图框中所包含的图形,即便绘图框只包含一幅图,也称之为子图。
-
元素 是组成子图的部件,从子图最内部的数据线条到外围的坐标轴标签等都属于元素。
-
四、机器学习的开发流程
4.1 机器学习的一般步骤
4.2 数据决定一切
通过这张图可以看出,各种不同算法在输入的数据量达到一定级数后,都有相近的高准确度。于是诞生了机器学习界的名言:成功的机器学习应用不是拥有最好的算法,而是拥有最多的数据!
五、参考资料
-
Prof. Andrew Ng. Machine Learning. Stanford University
-
《统计学习方法》,清华大学出版社,李航著,2019年出版
-
《机器学习》,清华大学出版社,周志华著,2016年出版
-
Christopher M. Bishop, Pattern Recognition and Machine Learning, Springer-Verlag, 2006
-
Stephen Boyd, Lieven Vandenberghe, Convex Optimization, Cambridge University Press, 2004