求业之精,别无他法,日专而已矣!

一、概论

1.机器学习是什么

2.机器学习做什么

3.机器学习基本概念

二、机器学习第一步:数据分析

1.Python被大量应用在数据挖掘和深度学习领域;

2.其中使用极其广泛的是Numpy、Pandas、Matplotlib、PIL等库;

3.数据分析流程:提出问题--准备数据--分析数据--或的结论--成果可视化。

三、机器学习四剑客(Numpy、Pandas、PIL、Matplotlib)

        1.Numpy:是高性能科学计算和数据分析的基础包。

        2.Pandas:是python第三方库,提供高性能易用数据类型和分析工具。

        3.PIL:是一个具有强大图像处理能力的第三方库。用途:图像处理

        4.Matplotlib:是一个主要用于绘制二维图形的Python库。用途:绘图、可视化

四、四剑客的应用

        1.数据增强:深层神经网络一般都需要大量的训练数据才能获得比较理想的结果。在数据量有限的情况下,可以通过数据增强(Data Augmentation)来增加样本的多样性,提高模型鲁棒性

1)增加数据量(翻转/噪声/旋转/裁剪/缩放/拉伸/模糊)

2)采集更多的图像特征

3)使网络可见更多的数据变化,提高模型的泛化能力

        2.训练可视化

        3.数据可视化

第一节:Numpy

  • Numpy(Numerical Python的简称)是高性能科学计算和数据分析的基础包。其功能如下:
  • ndarray,一个具有矢量算术运算和复杂广播能力的快速且节省空间的多维数组。
  • ndarray数组是Numpy的基础数据结构。
  • 用于对整组数据进行快速运算的标准数学函数(无需编写循环)。
  • 用于读写磁盘数据的工具以及用于操作内存映射文件的工具。
  • 线性代数、随机数生成以及傅里叶变换功能。
  • 用于集成由C、C++、Fortran等语言编写的代码的工具。

优点:1)批量操作比列表更快;2)支持广播机制,矩阵运算不需要写for循环;3)底层C语言;

# 创建ndarray
import numpy as np
data = [1, 2, 3, 4]
arr = np.array(data)  # 创建ndarray
print(arr)
print(type(arr))

>>函数一: numpy.zeros() 用于机器学习程序中,函数提供给定形状和类型的新数组, 并用零填充。

# 模板:numpy.zeros(shape, dtype=float, order='C')import numpy as np
arr_zero = np.zeros(5, dtype=int, order='C')
print(arr_zero)
print(arr_zero.dtype)
print(type(arr_zero))

参数解析:numpy.zeros(shape, dtype=float, order='C')

1)shape:整数或整数元组  此参数创建数组的形状, 例如(3, 2)或2。

2)dtype:数据类型(可选)    此参数用于定义数组的所需数据类型。默认情况下, 数据类型为numpy.float64。此参数对于定义不是必需的。

3)order:{‘C’, ‘F’}(可选)   此参数用于定义存储数据的顺序, 即行(C样式)或列(Fortran样式)。

拓展:np.empty() 函数创建一个没有任何具体值的ndarray数组,是创建数组最快的方法,根据给定的维度和数值类型返回一个新的数组,其元素不进行初始化。

import numpy as np# 创建全1数组
arr_one = np.ones((2,2), dtype=int, order='C')
print(arr_one)
print(arr_one.dtype)# 创建全1数组
arr_empty = np.empty((2,2))
print(arr_empty)
print(arr_empty.dtype)# np.empty()函数创建一个没有任何具体值的ndarray数组,是创建数组最快的方法。
# 根据给定的维度和数值类型返回一个新的数组,其元素不进行初始化。

>>函数二: 创建随机数组

import numpy as np# 01 创建随机数组#设置随机数种子
np.random.seed(10)# 均匀分布
arr1 = np.random.rand(2,2)                # 创建指定形状的数组(范围在0至1之间)
arr2 = np.random.uniform(0,10)            # 创建指定范围内的一个数
arr3 = np.random.randint(0,10)            # 创建指定范围内的一个整数# 正态分布
a = np.random.randn(3,3)                  # 生成标准正态分布随机数
arr4 = np.random.normal(0.5, 0.1, (2,2))  # 给定均值/标准差/维度的正态分布# 02 随机打乱数组序列
np.random.shuffle(a)
print(a)print('arr1:', arr1)
print('arr2:', arr2)
print('arr3:', arr3)
print('arr4:', arr4)# 查看ndarray的常用属性
print(arr4.size)       # 数组元素个数
print(arr4.shape)      # 数组形状
print(arr4.ndim)       # 数组维度
print(arr4.dtype)      # 数组元素类型

>>函数三: 数组的运算

  • 标量和ndarray数组之间运算;
  • 两个ndarray数组之间运算;

注意:大小相等的数组之间的任何算术运算都会将运算应用到元素级,数组与标量的算术运算也会将标量值传播到各个元素。矢量化(vectorization):不用编写循环即可对数据执行批量运算。

# 数组和标量之间的运算import numpy as np
arr = np.array([[1, 2], [3, 4], [5, 6]])
print('arr + arr = \n', arr + arr)
print('arr - arr = \n', arr - arr)
print('arr * arr = \n', arr * arr)
print('arr / arr = \n', arr / arr)
print('arr + 1 = \n', arr + 1)
print('arr - 1 = \n', arr - 1)
print('arr * 2 = \n', arr * 2)
print('arr / 2 = \n', arr / 2)
print('1 / arr = \n', 1 / arr)
print('arr ** 2 = \n', arr**2)

>>函数四: 数组的索引和切片

注意:跟列表最重要的区别在于,数组切片是原始数组的视图。这意味着数据不会被复制,视图上的任何修改都会直接反映到源数组上。

# 数组的索引和切片import numpy as nparr = np.arange(10)
print(arr)
arr_slice = arr[4:8]
print(arr_slice)
arr_slice[:] = 20   # 将一个标量值赋值给一个切片时,该值会自动传播到整个选区
print(arr_slice)
print(arr)

>>函数五: 数学和统计方法

注意:可以通过数组上的一组数学函数对整个数组或某个轴向的数据进行统计计算 ,sum、mean以及标准差std等聚合计算既可以当做数组的实例方法调用,也可以当做顶级Numpy函数使用。

# 数学和统计方法import numpy as np
arr = np.random.randn(3,3)     # 随机创建指定形状数组
print(arr)
print(np.mean(arr))            # 对所有元素求均值
print(arr.mean())              # 对所有元素求均值
print('------------------------------------------')
print('0',np.mean(arr, 0))     # 压缩行,对各列求均值
print(arr.mean(axis=0))        # 压缩行,对各列求均值print('1',np.mean(arr, 1))     # 压缩列,对各行求均值
print(arr.mean(axis=1))        # 压缩列,对各行求均值
print('------------------------------------------')print(arr.sum())               # 对所有元素求和
print(arr.std())               # 对所有元素求标准差
print('------------------------------------------')
方法 说明
sum 对数组中全部或某轴向的元素求和。零长度的数组的sum为0
mean 算术平均数。零长度的数组的mean为Nan
std, var 分别为标准差和方差,自由度可调(默认为n)
min, max 最大值和最小值
argmin, argmax 分别为最大和最小元素的索引
cumsum 所有元素的累加
cumprod 所有元素的累积

>>函数六: 矩阵乘法

线性代数:(如矩阵乘法、矩阵分解、行列式以及其他方阵数学等)是任何数组库的重要组成部分unumpy提供了一个用于矩阵乘法 dot()函数

# 矩阵乘法
import numpy as np
x = np.array([[1,2],[3,4]])
y = np.array([[5,6],[7,8]])
print(np.dot(x,y))
print(x.dot(y))

>>其他常用函数

函数名 用途
diag 以一维数组的形式返回方阵的对角线(或非对角线)元素,或将一维数组转换为方阵(非对角线元素为0)
dot 矩阵乘法
trace 计算对角线元素的和
det 计算矩阵行列式
eig 计算方阵的特征值和特征向量
inv 计算方阵的逆
svd 计算奇异值分解(SVD)
inv 计算方阵的逆
solve 解线性方程组Ax=b,其中A为一个方阵
lstsq 计算Ax=b的最小二乘解

>>Numpy保存和导入文件

  • 设置参数sep='  '表述用空白字符来分隔数据
import numpy as np# 文件读写
datafile = '../data/home/housing.data'
data = np.fromfile(datafile, sep=' ')
print(data)# 文件保存
np.save('data.npy',data)

机器学习四剑客1——Numpy相关推荐

  1. 机器学习四剑客4——PIL

    PIL库是一个具有强大图像处理能力的第三方库 在命令行下的安装方法:pip install pillow 在使用过程中的引入方法:from PIL import Image Image 是 PIL 库 ...

  2. 机器学习四剑客3——Pandas

    pandas是python第三方库,提供高性能易用数据类型和分析工具 pandas基于numpy实现,常与numpy和matplotlib一同使用 pandas中有两大核心数据结构:Series(一维 ...

  3. 机器学习四剑客2——Matplotlib

    1.什么是Matplotlib 2.Matplotlib的基本要点 3.Matplotlib的散点图.直方图.柱状图 4.更多的画图工具 函数 说明 plt.plot(x,y,fmt,...) 绘制一 ...

  4. iPhone开发四剑客之《Objective-C基础教程》

    iPhone 开发四剑客之<Objective-C 基础教程> Objective-C 语言是 C 语言的一个扩展集,许多(可能是大多数)具备 Mac OS X 外观的应用程序都是使用该语 ...

  5. 创客常用开发板“四剑客”对比,谁最“快”?

    小编提到过随着嵌入式平台和框架之间的相互学习和融合,Arduino爱好者的工具箱里的工具也越来越多了,比如时下最流行的支持Arduino IDE开发的"四剑客": Arduino ...

  6. linux四剑客-grep/find/sed/awk/详解-技术流ken

    四剑客简介 相信接触过linux的大家应该都学过或者听过四剑客,即sed,grep,find,awk,有人对其望而生畏,有人对其爱不释手.参数太多,变化形式太多,使用超级灵活,让一部分人难以适从继而望 ...

  7. 四剑客查找字符_linux 四剑客 find 、grep、sed、awk整理

    linux 四剑客 find .grep.sed.awk整理 find 主要是用于查找Linux 操作系统的某个文件.目录所在路径,查找出满足条件的文件或者目录的路径 find / -name *.r ...

  8. 史上最高效Shell四剑客实操案例

    01.Shell编程四剑客之Find 通过如上基础语法的学习,读者对Shell编程有了更近一步的理解,Shell编程不再是简单命令的堆积,而是演变成了各种特殊的语句.各种语法.编程工具.各种命令的集合 ...

  9. 调优四剑客的实战演练,福尔摩斯•K带你轻松优化性能

     前言 天下武功,唯快不破.在侦探的世界中,破案效率永远是衡量一名侦探能力的不二法门.作为推理界冉冉升起的新星,大侦探福尔摩斯·K凭借着冷静的头脑.严谨的思维,为我们展现了一场场华丽而热血的推理盛宴. ...

最新文章

  1. 【青少年编程(第29周)】8月份的青少年编程组队学习结营了!
  2. 英特尔史上最大收购!英特尔拟300亿美元收购GF,审批成关键!
  3. java同步互斥功能检测_猿考研之操作系统篇三(进程同步,管程,死锁)
  4. VS.NET 2005 SP1 安装注意
  5. 2021高考襄阳四中成绩查询,襄阳四中2020年高考成绩怎么样(高考喜报)
  6. 定时任务重启后执行策略_C语言操作时间函数time.ctime,实现定时执行某个任务小例子...
  7. onclick 源码_精读:手写React框架 解析Hooks源码
  8. Java性能调优:利用VisualVM进行性能分析
  9. structs - 标签库(html)
  10. [原创].关于SD卡的隐藏分区的认识过程及结果
  11. 研磨设计模式-设计模式的基础-设计模式的学习【思路】
  12. 嵌入式 CIF/4CIF/QCIF/D1分辨率
  13. teamviewer 回车键和空格键 失灵 鼠标点击有时也失灵
  14. 如何在51单片机实现日程提醒(生日闹钟)
  15. 谈业务流程全生命周期管理支撑业务流程再造(1)
  16. adguard拦截规则存在哪里_Adguard怎么用-使用Adguard拦截广告的方法 - 河东软件园...
  17. New 900 Sentences
  18. 如何为Android Activity设置背景图片?
  19. Envoy proxy 源代码解读 - original_dst cluster
  20. 怀旧服湖畔镇服务器位置,蓝贴:怀旧服合服的服务器!!!

热门文章

  1. TypeError: showInformation() missing 1 required positional argument: ‘self‘
  2. View requires API level 21 (current min is 15): Toolbar
  3. TableLayout 表格布局,FrameLaout 帧布局 ,AbsoluteLayout绝对布局的分析
  4. 基本的函数返回值 使用
  5. 20190226-利用序列化完成小型记账程序
  6. BZOJ.1558.[JSOI2009]等差数列(线段树 差分)
  7. codevs 2075 yh女朋友的危机
  8. BZOJ1922: [Sdoi2010]大陆争霸
  9. int与string转换
  10. C#实现网页截图功能