草庐IT

机器学习--起手式

epictus 2023-03-28 原文

几个贯穿始终的概念

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
当我们把人类学习简单事物的过程抽象为几个阶段,再将这些阶段通过不同的方法具体化为代码,依靠通过计算机的基础能力--计算。我们就可以让机器能够“学会”一些简单的事物。

我们首先将视线聚焦在最简单的判断题上。而包括OCR,CV,自然语言处理在本质上来说就是对给定的图像(语句)做判断

判断:给定输入,得到一个输出

graph LR A[输入端数据] --> |算法,模型| B(输出端数据)

数据由我们学习的内容所决定.但是从现实生活中收集而来的数据,并不是机器能够"食用"的,需要我们通过一定的数据预处理,清洗数据以备使用.

而算法和模型决定了了输出端和输入端之间的关系.机器是否能够学会处理输入端的数据,需要合适的算法和模型的帮助

而机器学习不仅要从0到1,还要从1到100.这就意味着机器需要不断的练习.来提高正确率.

所以数据、模型、算法和训练是贯穿我们学习机器学习过程的四个关键词.也是一个面对问题建立模型最终实现的过程.

  • 数据部分:学习了解流行的数据流.知道数据处理的benchmark.学会常见的数据预处理方法,总结数据处理技巧.

  • 模型部分:学习常见的模型.各个模型相互关联加强记忆

  • 算法部分:误差损失函数,反向传播,梯度下降.

算法和模型的区别在于:模型是静态的神经网络,没有特殊性;而算法就是模型动态的调整以吻合特定问题的需要

  • 训练部分:降低训练时间,提高性能

环境配置

  • CUDA “训练”时的算力由显卡提供。CUDA为英伟达的底层显卡驱动(AMD暂时不了解)。
  • 主要使用Python内置的数学库来实现,推荐使用Anaconda来配置.

CUDA

1.打开NVIDIA控制台


2.看一下有没有CUDA-GPUs

3.下载CUBA

在NVIDIA控制界面的左下角,点击系统性息

查看一下驱动程序版本,对照下图查看,下载支持的CUDA的版本

我的驱动版本是512.72,所以支持的最新驱动是CUBA 11.8.X
附上链接以供查阅

下载CUDA

安装没有难度,只不过建议 路径不要出现中文字符,记住安装路径即可。安转完成之后 按下win+r键 打开cmd在命令行中输入nvcc -V然后回车,成功的话就会返回CUBA的版本号

安装Anaconda

这个安装比较简单(路径不要出现中文字符)建议去清华或者其他镜像库安装,下面讲述如何配置环境变量

环境配置

1.设置 -> 系统 -> 关于 -> 右侧目录中选择高级系统设置

点击环境变量

在path中添加anaconda文件夹和script

conda install镜像配置

软件本体下载慢,python的一些包也下载慢。所以我们可以配置清华的镜像。清华镜像网站

简要介绍:
1、现在用户目录下查看是否有.condarc文件 没有的话 在cmd命令行中执行
conda config -set show_channel_urls yes
然后进行修改。
2、修改之后执行
conda clean -i

Anaconda的使用

conda的好处在于我们可以按照需要配置环境,无论是Python版本还是其中包的版本和依赖

conda命令行

注意:使用conda命令时应该确定是对某个特定环境使用

conda –version #查看conda版本,验证是否安装

conda update conda #更新至最新版本,也会更新其它相关包

conda update –all #更新所有包

conda update package_name #更新指定的包

conda create -n env_name package_name #创建名为env_name的新环境,并在该环境下安装名为package_name 的包,可以指定新环境的版本号,例如:conda create -n python3 python=python3.7 numpy pandas,创建了python3环境,python版本为3.7,同时还安装了numpy pandas包

conda activate env_name #切换至env_name环境

conda deactivate #退出环境

conda info -e #显示所有已经创建的环境 或者使用 conda env list

conda create –name new_env_name –clone old_env_name #复制old_env_name为new_env_name

conda remove –name env_name –all #删除环境

conda list #查看所有已经安装的包

conda install package_name #在当前环境中安装包

conda install –name env_name package_name #在指定环境中安装包

conda remove – name env_name package #删除指定环境中的包

conda remove package #删除当前环境中的包

conda env remove -n env_name #强制删除环境

先来安装比较重要的一个包numpy来试试手

先要进入base环境 ,然后执行conda install 命令。

也可以自行创建新环境,然后在新环境中安装。

Anaconda Navigator 使用

四个主要的界面:

home页面


选择一个环境,然后打开应用开发.
有一些是自带安装了的,有一些是我们可以安装的
比如我们可以点击launch打开预先安装了的Jupyter Notebook

environment页面

learning页面

提供了绝大多数python相关的官方文档.相比B站上的教程这里讲述的会更加具体详细系统可以按需查找

community页面

提供了常见的python论坛,像著名的stack overflow

Jupyter Notebook 使用

Jupyter Notebook小巧玲珑,实时交互,单独的cell之中可以单独执行,无需从头执行代码,自动保存,支持markdown,Latex公式学习思路,非常适合学习者使用.

+ Jupyter Notebook
    + 安装,打开,问题调试
        + Anaconda
        + 命令行
    + 调教
        + 修改打开的默认目录
        + 关闭,退出
    + 使用
        + 快捷键
        + Markdown

打开,安装,问题调试

可以在anaconda navigator中直接点lauch就行,不再赘述,如果打不开,修复bug,或者尝试通过命令行打开。
下面讲述

base环境

已经默认安装了Jupyter Notebook
我们win+r 再输入cmd 打开命令行

conda activate base激活base环境
Jupyter Notebook打开 Jupyter Notebook

1.请不要关闭命令行窗口不然无法操作
2.如果没有跳转浏览器, 修复bug,或者打开浏览器打开最后的链接

新环境

创建一个名为Epictus的python环境
conda create -n Epictus python
不要忘记加上python了
也可以使用
conda create -n Epictus python=版本
安装指定版本的Python

新创建的环境中不包含 Jupyter Notebook使用
conda install Jupyter Notebook
再输入
Jupyter Notebook

调教

改变储存目录

我们只要在目标目录下打开 Jupyter Notebook即可

cd 目标路径

盘符:

关闭,退出

使用完毕可以在命令行窗口连按两次[Ctrl+c]关闭服务

使用

快捷键

Jupyter Notebook有两种不同的键盘输入模式。编辑模式允许您在单元格中键入代码或文本,并由绿色单元格边框指示。命令模式将键盘绑定到笔记本级别的命令,并由带有蓝色左边距的灰色单元格边框指示。
具体的快捷键按H键
编辑模式和命令模式按Esc键切换

markdown


在markdown中还可以输入latex公式

Matplotlib

最流行的Python绘图库,名字取自MATLAB,数据可视化工具
conda install Matplotlib进行安装

没有必要从头学,只要根据自己想要画的图找到代码再把自己的数据输入就OK了,经常出现的图代码也会熟悉的,属于熟能生巧的技能。

Numpy

大名鼎鼎的 Numpy究竟是什么

Numerical Python的缩写

  • 一个开源的Python科学计算库
  • 方便的矩阵,数组运算(与matlab相比各有千秋 numpy官方文档)
  • 包括线性代数、傅里叶变换、随机数生成等大量函数

以上的特点使得Numpy比直接编写python代码:

  • 更加简洁:数组和矩阵的引入
  • 更加高效:数组储存效率比原生list高,numpy以c语言来实现

学习目标

主要利用的是其中narray这一对象,所以首先掌握对于narray的各项操作,然后对于其他的操作在后面实际操作中在学习.

narray

实际上就是一个数表,只起到储存数的作用.
厉害的不是narray,而是其背后的代数学的发展.当然我们不能否认采用c语言之后对于性能的优化.但是归根到底是因为数表这一个方式更加适合运算.
更加适合求解方程组(在代数学中矩阵的出现就是为了求解方程)
更加适合加减乘除

属性

属性名 含义
shape array的形状
ndim 表示array的维度
size 表示array元素的数目
dtype array中元素的数据类型
itemsize 数组中每个元素的字节大小

创建array的方法

  • 转化python原生的list和嵌套列表
  • 使用预定函数arrange,linspace等创建等差数组
  • 使用ones,ones_like,zeros,zeros_like,empty,empty_like,full,full_like,eye等创建
  • 生成随机书的random模块创建

array的两个要点就是元素和形状,确定两者array就确定了.
前菜--Numpy;详细介绍

数据处理

  • 数据采集
  • 数据清洗
  • 数据标准化
  • 数据增强

数据采集

实际上就是爬虫。现代的数据网络每秒产生的数据就成千上万个,想要得到我们想要的数据,我们就必须要学会使用爬虫自动访问网页回去信息。

数据清洗

爬虫返回的数据千奇百怪,不乏有错误的“脏”数据,主要包括一致性检查和无效值/缺失值处理
但是对于圣都学习来说,这些错误本来就是需要,甚至对于干净的数据我们还要人为添加噪声.
所以我们的数据清洗主要是针对人为造成的错误

数据标准化

归一化,归一化有很多的理解的方式.把数据进行归一化的最直观的好处就是单位消失了.那后续的好处会在算法和模型的使用中显现出来的.

最简单的归一化方法就是离差标准化,也叫做min-max标准化或者缩放归一化.

def Normalization(x):
    return [(float(i)-min(x))/float(max(x)-min(x)) for i in x]

但是这种方法在每次最大值和最小值变化的时候都要重新计算

所以最为常见的方法是标准差归一化,也叫做z-score标准化。经过处理的数据符合高斯分布,均值为0,标准差为1

先求出整体样本的均值和标准差,让每个样本的取值减去均值在除以标准差

import numpy as np

def z_score(x):
    x -= np.mean(x)
    x /= np.std(x)
    return x

还有Decimal scaling小数定标标准化,对数Logistic模式,atan模式,模糊量化模式。可以Google scholar一下

数据增强

深度学习模型是否强大和训练的数据集有很大的关系,至少要几千次的训练才能完成一个简单的人物。
当数据不够的时候怎么办呢?
我们可以对已有的数据进行整容,添加噪声等等的方法来自己造数据。

  • PyTorch中就自带图像的旋转功能
  • Mixup把几张图片混合起来
  • 添加噪声
  • GAN网络中有一个自动生成模型的功能
  • 那对于自然语言处理,我们可以先机翻到英文在翻回来

有关机器学习--起手式的更多相关文章

  1. ruby - 在 Windows 机器上使用 Ruby 进行开发是否会适得其反? - 2

    这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby​​-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub

  2. LC滤波器设计学习笔记(一)滤波电路入门 - 2

    目录前言滤波电路科普主要分类实际情况单位的概念常用评价参数函数型滤波器简单分析滤波电路构成低通滤波器RC低通滤波器RL低通滤波器高通滤波器RC高通滤波器RL高通滤波器部分摘自《LC滤波器设计与制作》,侵权删。前言最近需要学习放大电路和滤波电路,但是由于只在之前做音乐频谱分析仪的时候简单了解过一点点运放,所以也是相当从零开始学习了。滤波电路科普主要分类滤波器:主要是从不同频率的成分中提取出特定频率的信号。有源滤波器:由RC元件与运算放大器组成的滤波器。可滤除某一次或多次谐波,最普通易于采用的无源滤波器结构是将电感与电容串联,可对主要次谐波(3、5、7)构成低阻抗旁路。无源滤波器:无源滤波器,又称

  3. CAN协议的学习与理解 - 2

    最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总

  4. 深度学习部署:Windows安装pycocotools报错解决方法 - 2

    深度学习部署:Windows安装pycocotools报错解决方法1.pycocotools库的简介2.pycocotools安装的坑3.解决办法更多Ai资讯:公主号AiCharm本系列是作者在跑一些深度学习实例时,遇到的各种各样的问题及解决办法,希望能够帮助到大家。ERROR:Commanderroredoutwithexitstatus1:'D:\Anaconda3\python.exe'-u-c'importsys,setuptools,tokenize;sys.argv[0]='"'"'C:\\Users\\46653\\AppData\\Local\\Temp\\pip-instal

  5. ruby - 我的 Ruby IRC 机器人没有连接到 IRC 服务器。我究竟做错了什么? - 2

    require"socket"server="irc.rizon.net"port="6667"nick="RubyIRCBot"channel="#0x40"s=TCPSocket.open(server,port)s.print("USERTesting",0)s.print("NICK#{nick}",0)s.print("JOIN#{channel}",0)这个IRC机器人没有连接到IRC服务器,我做错了什么? 最佳答案 失败并显示此消息::irc.shakeababy.net461*USER:Notenoughparame

  6. ruby - 我正在学习编程并选择了 Ruby。我应该升级到 Ruby 1.9 吗? - 2

    我完全不是程序员,正在学习使用Ruby和Rails框架进行编程。我目前正在使用Ruby1.8.7和Rails3.0.3,但我想知道我是否应该升级到Ruby1.9,因为我真的没有任何升级的“遗留”成本。缺点是什么?我是否会遇到与普通gem的兼容性问题,或者甚至其他我不太了解甚至无法预料的问题? 最佳答案 你应该升级。不要坚持从1.8.7开始。如果您发现不支持1.9.2的gem,请避免使用它们(因为它们很可能不被维护)。如果您对gem是否兼容1.9.2有任何疑问,您可以在以下位置查看:http://www.railsplugins.or

  7. ruby - 我如何学习 ruby​​ 的正则表达式? - 2

    如何学习ruby​​的正则表达式?(对于假人) 最佳答案 http://www.rubular.com/在Ruby中使用正则表达式时是一个很棒的工具,因为它可以立即将结果可视化。 关于ruby-我如何学习ruby​​的正则表达式?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/1881231/

  8. 深度学习12. CNN经典网络 VGG16 - 2

    深度学习12.CNN经典网络VGG16一、简介1.VGG来源2.VGG分类3.不同模型的参数数量4.3x3卷积核的好处5.关于学习率调度6.批归一化二、VGG16层分析1.层划分2.参数展开过程图解3.参数传递示例4.VGG16各层参数数量三、代码分析1.VGG16模型定义2.训练3.测试一、简介1.VGG来源VGG(VisualGeometryGroup)是一个视觉几何组在2014年提出的深度卷积神经网络架构。VGG在2014年ImageNet图像分类竞赛亚军,定位竞赛冠军;VGG网络采用连续的小卷积核(3x3)和池化层构建深度神经网络,网络深度可以达到16层或19层,其中VGG16和VGG

  9. 机器学习——时间序列ARIMA模型(四):自相关函数ACF和偏自相关函数PACF用于判断ARIMA模型中p、q参数取值 - 2

    文章目录1、自相关函数ACF2、偏自相关函数PACF3、ARIMA(p,d,q)的阶数判断4、代码实现1、引入所需依赖2、数据读取与处理3、一阶差分与绘图4、ACF5、PACF1、自相关函数ACF自相关函数反映了同一序列在不同时序的取值之间的相关性。公式:ACF(k)=ρk=Cov(yt,yt−k)Var(yt)ACF(k)=\rho_{k}=\frac{Cov(y_{t},y_{t-k})}{Var(y_{t})}ACF(k)=ρk​=Var(yt​)Cov(yt​,yt−k​)​其中分子用于求协方差矩阵,分母用于计算样本方差。求出的ACF值为[-1,1]。但对于一个平稳的AR模型,求出其滞

  10. 建模分析 | 平面2R机器人(二连杆)运动学与动力学建模(附Matlab仿真) - 2

    目录0专栏介绍1平面2R机器人概述2运动学建模2.1正运动学模型2.2逆运动学模型2.3机器人运动学仿真3动力学建模3.1计算动能3.2势能计算与动力学方程3.3动力学仿真0专栏介绍?附C++/Python/Matlab全套代码?课程设计、毕业设计、创新竞赛必备!详细介绍全局规划(图搜索、采样法、智能算法等);局部规划(DWA、APF等);曲线优化(贝塞尔曲线、B样条曲线等)。?详情:图解自动驾驶中的运动规划(MotionPlanning),附几十种规划算法1平面2R机器人概述如图1所示为本文的研究本体——平面2R机器人。对参数进行如下定义:机器人广义坐标

随机推荐