【1.0】机器学习基础
前言我尝试从线性代数的部分写起,但是我发现这样太拖拉了,对于我的学习来说很不利,所以我打算就不写线性代数和高等数学的内容了,在学习机器学习之前请确保你已经对如下内容有一定的基础:
python语言:如果不会请参考我的一些 python 内容或者自行网络上学习
线性代数:考研数学即可
高等数学:考研数学即可
本系列内容参考自:Peter Harrington 的 《Machine Learning in Action》和《智能之门》以及哔哩哔哩,网络上相内容上结合本人实践编写。
什么是机器学习除了一些无关紧要的情况,人们很难直接从原始数据本身获取所需的信息。例如:对于垃圾邮件的检测,侦测一个单词是否存在没有太大的作用,然后当多个特定单词同时出现,再根据邮件的时间长度等其他因素,就可以快速的判断该邮件是否为垃圾邮件。简单的来说,机器学习就是把无序的数据转换为有用的信息。
机器学习用到了统计学知识,在大多数人看来,统计学不过是企业用以炫耀产品功能的一种统计而已。那么我们为什么还需要利用统计学呢?就工程实践来说,它是利用科学知识来解决具体的问题。在某些情况下,我们会面对很多需要确凿解法,或 ...
关于Python的一些工具
前言想了一阵,还是觉得这个标题有些不太对,或者说不太切题。关于这篇内容,我主要是想说明如果使用Anaconda来更加方便的管理python环境,对于机器学习相关方便更是大有帮助。另外来简单搭建使用PyQt来开发跨平台桌面软件。
大概如此,标题果然还是有些太大了。
Anaconda关于python的环境配置相关内容基础,我已经在之前的python文章中做了说明,对于繁杂的环境操作,我们可以使用Anaconda来更加方便的管理我们的python环境,对于做机器学习相关的伙伴来说更加方便,它包含了大量的机器学习相关的包,可以某种程度上避免国内网络问题导致某些包无法安装的问题。
安装 Anaconda你可以通过访问Anaconda官网来访问下载安装对应系统的Anaconda,此处省略下载安装。
安装完成后,运行Anaconda Navigator,它会做一些初始化工作,期间屏幕会闪出一些命令窗口是正常的,仅需要等待软件启动即可。
进入软件后,界面如下所示:
你可以在主页中,配置相关工具,例如如果你下载了PyCharm或者VS code都可以在这里配置,其中有一个jupyter这个工具, ...
【5.0】类
前言类是一种对象的抽象化描述,它是基于面向对象语言而产生的概念。类提供了一种组合数据和功能的方法。 创建一个新类意味着创建一个新的对象 类型,从而允许创建一个该类型的新 实例 。 每个类的实例可以拥有保存自己状态的属性。 一个类的实例也可以有改变自己状态的(定义在类中的)方法。
Python 的类提供了面向对象编程的所有标准特性:类继承机制允许多个基类,派生类可以覆盖它基类的任何方法,一个方法可以调用基类中相同名称的的方法。对象可以包含任意数量和类型的数据。和模块一样,类也拥有 Python 天然的动态特性:它们在运行时创建,可以在创建后修改。
初识类定义类类的定义语法格式类似于如下所示:
12class ClassName: #这是类的内容
当进入类定义时,将创建一个新的命名空间,并将其用作局部作用域 — 因此,所有对局部变量的赋值都是在这个新命名空间之内。 特别的,函数定义会绑定到这里的新函数名称。
类对象类对象支持两种操作:属性引用和实例化。
属性引用使用 Python 中所有属性引用所使用的标准语法: obj.name。 因此,如果类定义是这样的:
12345class ...
【6.0】虚拟环境和包
前言Python应用程序通常会使用不在标准库内的软件包和模块。应用程序有时需要特定版本的库,因为应用程序可能需要修复特定的错误,或者可以使用库的过时版本的接口编写应用程序。
这意味着一个Python安装可能无法满足每个应用程序的要求。如果应用程序A需要特定模块的1.0版本但应用程序B需要2.0版本,则需求存在冲突,安装版本1.0或2.0将导致某一个应用程序无法运行。
这个问题的解决方案是创建一个 virtual environment,一个目录树,其中安装有特定Python版本,以及许多其他包。
然后,不同的应用将可以使用不同的虚拟环境。 要解决先前需求相冲突的例子,应用程序 A 可以拥有自己的 安装了 1.0 版本的虚拟环境,而应用程序 B 则拥有安装了 2.0 版本的另一个虚拟环境。 如果应用程序 B 要求将某个库升级到 3.0 版本,也不会影响应用程序 A 的环境。
创建虚拟环境用于创建和管理虚拟环境的模块称为 venv。venv 通常会安装你可用的最新版本的 Python。如果您的系统上有多个版本的 Python,您可以通过在系统变量中设置然后通过自定义命令来选择特定的Pyth ...
【4.0】模块
前言因为Python是解释型的,这就意味着如果你运行后退出再次运行,之前定义的变量及其相关数据都会丢失。因此如果你希望编写一些长的程序,则需要使用文本编辑器来进行,并将编辑好的python代码作为输入运行。这种形式的文件被称为:脚本。
随着编写的内容越来越多,当你希望将其编写的内容拆分成几个不同类型的文件以方便维护;或者你希望经常使用自己的某个函数(方法),而不必要每次都编写一次代码内容。为了支持这些需求,python可以将定义放在一个文件里,并在脚本中交互的时候它们。这种文件被称为:模块。
在我们编写的脚本中,可以导入不同的模块,以实现各种我们所需要的功能。
模块本质仍是一个包含python语句的文件,其后缀为:.py。在模块内部,模块名称可以通过全局变量__name__的值获得。
例如,你可以在任意文件路径下,创建一个新的.py文件,其代码内容如下所示:
12def PutText(): print("test");
该.py文件中仅仅定义了一个名称为PutText的函数(方法),你可以通过如下代码在另一个.py文件中,调用你定义的这个方法,代码示例:
...
【3.0】数据结构
前言这部分会再前面涉及的数据结构的基础上拓展并且说明更多的数据结构,这些数据结构在编程方面就如图画家的画笔,是编程工具或者说小帮手。
✒️:现在需要说明一个事情,且后面不会再强调说明:如果方法签名中某些参数两边的方括号([])表示这个参数是可选的,而不是要你输入方括号。你会在 Python 参考库中经常看到这种表示方法。
列表的更多特性前面已经说明了列表的基本概述,其还有很多的方法,如下所示:
方法
说明
list.append(x)
在列表的末尾添加一个元素
list.extend(iterable)
使用可迭代对象中的所有元素来扩展列表
list.insert(i, x)
在给定的位置插入一个元素。第一个参数是要插入的元素的索引,第二个参数是要插入的元素
list.remove(x)
移除列表中第一个值为 x 的元素。如果没有这样的元素,则抛出 ValueError异常
list.pop([i])
删除列表中给定位置的元素并返回它。如果没有给定位置,a.pop() 将会删除并返回列表中的最后一个元素
list.clear()
移除列表中的所有元素
...
【2.0】流程控制工具
前言除了上一部分使用的的 while语句,Python 中也会使用其他语言中常见的流程控制语句,只是稍有变化。
流程控制语句while语句语句格式如下所示:
123# 这是基本语法格式while 条件: 执行过程
注:执行过程语句的缩进是必要的且要缩进一致
if 语句这是编程中最基本也是最常用的语句之一了,代码原型:
12345678910111213141516171819# 最基本的用法if 条件: 执行语句else 条件: 执行语句# 当然你也可以只使用 if 条件if 条件: 执行语句# 当然你也可以多条件使用if 条件: 执行语句elif 条件: 执行语句elif 条件: 执行语句else 条件: 执行语句
可以有零个或多个 elif1部分,以及一个可选的 else部分。
注:python 并不支持 else if 全称写法
for语句Python 的for语句和其他编程语言不太相同,Python 并不是设置步长,循环条件来完成for循环。反而是对任意序列进行迭代(例如列表或字符串),条目的迭代顺序与它们在序列中出 ...
【1.0】Python入门
前言Python 很容易使用,但它是一种真正的编程语言,提供了很多数据结构,也支持大型程序,远超 shell 脚本或批处理文件的功能。Python 还提供比 C 语言更多的错误检查,而且作为一种 “超高级语言”,它有高级的内置数据类型,比如灵活的数组和字典。
Python 是一种解释型语言,在程序开发阶段可以为你节省大量时间,因为不需要编译和链接。
注:本内容使用的Python版本为 3.8
Python解释器调用解释器如果你在安装Python的时候选择了自动添加Python环境变量,则可以在CMD或者直接在桌面空白处右键选择在终端处打开(仅Win11支持),在命令终端中直接输入python即可调用Python解释器。
如果你并没有配置环境变量,需要先配置对应的环境变量。
关于环境变量的说明,可以查看环境变量那些事
在调用解释器后,每次输入命令的样式变为如下:
1>>> 这里是你的命令
在Windows系统下,使用Ctrl + z 来退出调用解释器或者输入命令quit()来退出调用。
解释器运行的时候有点像 Unix 命令行:在一个标准输入 tty1 ...
【5.0】输入输出(IO)管理
前言NULL,懒得写了
I/O管理概述I/O设备的概念和分类“I/O”就是“输入/输出”(Input/Output)。I/O设备就是可以将数据输入到计算机,或者可以接收计算机输出数据的外部设备,属于计算机中的硬件部件。
UNIX 系统将外部设备抽象为一种特殊的文件,用户可以使用与文件操作相同的方式对外部设备进行操作。
按使用特性分类
按传输速率分类
按信息交换单位分类
I/O控制器I/O设备的机械部件主要用来执行具体 I/O操作。如我们看得见摸得着的鼠标/键盘的按钮;显示器的LED屏;移动硬盘的磁臂、磁盘盘面。I/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板。
I/O设备的电子部件通常是一块插入主板扩充槽的印刷电路板。
CPU无法直接控制I/O设备的机械部件,因此I/O设备还要有一个电子部件作为CPU和I/O设备机械部件之间的“中介”,用于实现CPU对设备的控制。
I/O控制器的组成
注意:
一个I/O控制器可能会对应多个设备;
数据寄存器、控制寄存器、状态寄存器可能有多个(如:每个控制/状态寄存器对应 ...
【4.0】文件管理
前言这部分说明了文件整个系统的原理和底层大概逻辑。
文件系统基础初识文件管理文件——就是一组有意义的信息/数据集合。
文件的属性文件名:由创建文件的用户决定文件名,主要是为了方便用户找到文件,同一目录下不允许有重名文件。
标识符:一个系统内的各文件标识符唯一,对用户来说毫无可读性,因此标识符只是操作系统用于区分各个文件的一种内部名称。
类型:指明文件的类型
位置:文件存放的路径(让用户使用)、在外存中的地址(操作系统使用,对用户不可见)
大小:指明文件大小
创建时间、上次修改时间,文件所有者信息
保护信息:对文件进行保护的访问控制信息
文件数据的组织
无结构文件(如文本文件)——由一些二进制或字符流组成,又称“流式文件。
有结构文件(如数据库表)——由一组相似的记录组成,又称“记录式文件。
用户可以自己创建一层一层的目录,各层目录中存放相应的文件。系统中的各个文件就通过一层一层的目录合理有序的组织起来了。目录其实也是一种特殊的有结构文件(由记录组成)。
文件的外存存放类似于内存分为一个个“内存块”,外存会分为一个个“块/磁盘块/物理块”。每个磁盘块的大小是相等的,每块一般包含2的 ...














