自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

GMH的博客

未到终局,焉知生死。

  • 博客(186)
  • 资源 (2)
  • 收藏
  • 关注

原创 线性回归LinearRegression

当我们学习一门新课程、接触一个新专业时,总会对该领域的专有名词感到困惑,甚至看完解释仍难以理解其含义。在我们一起学习machine learning的过程中,我会尽量对相关名词用“人话”做一遍解释,以减少学习的“痛苦感”。譬如今天要学的线性“回归”,这个回归(regression)和我们平时说的“回归祖国”的回归(return)是两个含义完全不同的词,它有“倒推”的含义在里面。我们学习的时候一定要抛开现有的认知,这样才能对新知识有更高的接受度。那么,这个回归究竟是什么意思呢?其实回归算法是相对分类算法。

2024-04-08 10:12:18 1018

原创 Crontab 命令详解 (定时任务)

crond是linux下用来周期性的执行某种任务或等待处理某些事件的一个守护进程,与windows下的计划任务类似,当安装完成操作系统后,默认会安装此服务 工具,并且会自动启动crond进程,crond进程每分钟会定期检查是否有要执行的任务,如果有要执行的任务,则自动执行该任务。Linux下的任务调度分为两类系统任务调度和用户任务调度。系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。在/etc目录下有一个crontab文件,这个就是系统任务调度的配置文件。MAILTO=""

2023-07-11 10:30:47 1069

原创 将python项目用docker 部署到服务器上的全过程

解压完以后就能看到docker镜像了!然后正常执行docker run操作就可以啦!docker ps 列出container(正在运行的)(可以加 -a 列出所有的)在查阅了大量资料后,踩了无数坑后,今天记录一下全过程,希望对大家有帮助。由于笔记本算力有限,要将python项目部署到服务器上。在linus下,cd到Dockerfile文件下。在这里给大家总结一下一些docker命令。docker image ls 列出镜像。至此,我们已经得到IMAGE.tar了。│││ └── 其他配置文件。

2023-04-07 10:37:16 2484 1

原创 用 Docker 部署一个 Python 应用

显而易见,就是一个非常基础的项目,当我们在浏览器输入网址以及对应的端口号的时候,会返回“Hello World!最后我们在浏览器中,访问一下该网页,要是你用到的是远程服务器,则需要用到公网的IP,对应的端口号是5000。是一个放置在项目根目录下的描述文件,其中包含了一条条指令,有了这个文件,就可以创建出我们所需要的镜像。是一个放置在项目根目录下的描述文件,其中包含了一条条指令,有了这个文件,就可以创建出我们所需要的镜像。这里为了演示的方便,我们就写一个简单的。代表的是镜像的名字及标签,

2023-04-07 10:25:35 583

原创 Scrapy API 启动爬虫

scarpy 不仅提供了 scrapy crawl spider 命令来启动爬虫,还提供了一种利用 API 编写脚本 来启动爬虫的方法。scrapy 基于 twisted 异步网络库构建的,因此需要在 twisted 容器内运行它。可以通过两个 API 运行爬虫:scrapy.crawler.CrawlerProcess 和 scrapy.crawler.CrawlerRunner。

2023-04-07 10:16:04 789

原创 python list 完全相等的坑:元素顺序不同判定为不相等

【代码】python list 完全相等的坑:元素顺序不同判定为不相等。

2023-04-07 10:10:25 439

原创 NLP模型检查英语语法错误

比如,He wants that you send him an email.只要装上一个专门纠正语法错误的库就可以,还是毫秒钟就可揪出来的那种。应该变成:I can do his homework.没关系,现在可以像小时候的英语老师,改作文一样简单。具体安装可分成如下四个步骤,详细可戳文末链接。当NLP模型产生了语法错误,怎么办?(不会真有人看不出其中的语法错误吧)想要了解更多细节,呐~传送门送上!

2023-02-10 11:02:20 514

原创 Python中xmltodict对xml的操作

该函数有一个streaming模式适合用来 处理不能放入内存的文件,它还支持命名空间。xmltodict是另一个简易的库,它致力于将XML变得像JSON.xmltodict 也有unparse函数让您可以转回XML。这是第三方包,在处理前先用pip来安装。

2023-02-10 10:58:25 433

原创 tkinter 打包成exe可执行文件

1.安装pyinstaller。

2023-02-09 17:56:55 1297

原创 Python中append浅拷贝机制

下一步,代码执行a.append(0),列表是可变类型,这一步在原地址的列表的末尾添加0,原地址的内容被改变了但是地址没有变(可以将Python中的list理解为链表,所以这个list的地址不会变,这相当于链表的头结点),所以a和b[0]的内容同时被改变了,这就是为什么对a进行append操作b会跟着发生改变。在Python中,先生成对象,变量再对对象进行引用,在这个例子中,1就是对象,然后a再对1进行引用,由于常数是不可变类型,所以1的内存空间是一样的,所以a,b引用的是用一块内存空间。

2023-02-02 09:45:11 352

原创 Python中mmap模块(处理大文本)

当需要写入时,找到内存名称,然后写入内存,等需要读取时候, 首先要知道你要读取多大(因为物理内存比你要读取的东西大,全部读取的话会读到一些“空”的东西),然后寻找对应名称的物理块,然后读取。速度也是个问题,传统的缓存IO方式,涉及到OS内核态的内存和进程虚拟空间内存的内容交换,对于超大文件而言,这种交换会浪费大量的CPU时间和内存。而之后访问数据时发现内存中并无数据而发起的缺页异常过程,可以通过已经建立好的映射关系,只使用一次数据拷贝,就从磁盘中将数据传入内存的用户空间中,供进程使用。

2023-02-01 17:31:24 1382

原创 Python中字符串类型代码的执行函数——eval()、exec()和compile()

如果是single类型,表示这是一个单一语句,采用交互模式执行,在这种情况下,如果是一个表达式,一般会输出结果,而不是打印为None输出。参数,所以我们要将该递归函数转化成一个字符串,当然,格式还是要Python代码的格式来,注意换行和缩进。locals:该参数掌控局部的命名空间,功能和globals类型,不过当参数冲突时,会执行locals处的参数。如果是eval类型,表示这是一个单一的表达式语句,可以用来计算相应的值出来;flags:变量作用域,局部命名空间,如果被提供,可以是任何映射对象。

2023-02-01 15:16:22 2115

原创 Python中的闭包

i在外层作用域lambda x: x*i 为内层(嵌)函数,他的命名空间中只有 {'x': 1} 没有i,所以运行时会向外层函数(这里是列表解析式函数[])的命名空间中请求i,而当列表解析式运行时,列表解析式命名空间中的i经过循环依次变化为0-->1-->2-->3最后固定为3,所以当 lambda x: x*i内层函数运行时,去外层函数取i每次都只能取到 3。比如两个嵌套函数,一个函数(或类)A 里面又包含了一个函数 B ,那么对于 B 中的名称来说 A 中的作用域就为 nonlocal。

2023-02-01 15:06:05 457

原创 Python中处理字符串的String模块

按照行分隔,返回一个包含各行作为元素的列表。返回字符串 ‘01234567’,也即是八进制数字。注意:该函数从左往右搜索,只会返回第一个找到的索引。的 ASCII 字符组成的字符串。返回一个原字符串右对齐并使用空格填充至长度。至少有一个字符并且都是字母或者数字则返回。存在区分大小写的字符,并且都是小写则返回。存在区分大小写的字符,并且都是大写则返回。的字符串,原字符串右对齐,前面填充0。是标题化的(单词首字母大写)则返回。中的位置索引,没有则返回-1。的字符串,原字符串内容居中。以指定编码格式编码字符串。

2023-02-01 14:52:42 890

原创 Python中专门处理JOSN数据的JSON模块

后两个方法将json格式的字符串转换成python的数据类型。需要一个类似文件指针的参数(并不是真正的指针,可以称之为文件对象),与文件操作相结合,即先将Python文件对象转化为json字符串再保存在文件中。的方式呈现,其简洁和清晰的层次结构使得JSON成为理想的数据交换语言,而在Python中处理JSON格式的模块有两个,分别是。json.dump():用于存入json格式的文件,将字典类型转换为json形式的字符串,无返回;:用于存入json格式的文件,将字典类型转换为json形式的字符串,无返回。

2023-02-01 14:13:15 196

原创 Python中解决线性规划和二次型规划问题的CVXOPT模块

Python中支持Convex Optimization(凸规划)的模块为CVXOPT,能够解决线性规划和二次型规划问题,其应用场景如SVM中的Hard Margin SVM。Python CVXOPT模块。

2023-02-01 14:06:05 1207

原创 Python中最小堆结构的heapq模块

nlargest(num, heap),从堆中取出num个数据,从最大的数据开始取,返回结果是一个列表(即使只取一个数据)。如果num大于等于堆中的数据数量,则从大到小取出堆中的所有数据,不会报错,相当于实现了降序排序。然后依次将堆顶的值取出,添加到一个新的列表中,直到堆中的数据取完,新列表就是排序后的列表。两种方法实现的结果会有差异,但都满足小顶堆的特性,不影响堆的使用(堆只会从堆顶开始取数据,取出数据后会重新调整结构)。将堆顶的数据出堆,并将堆中剩余的数据构造成新的小顶堆。这个方法可以用于归并排序。

2023-02-01 14:02:30 719

原创 Python中用于符号型数学计算的sympy模块

使用代码表示数学符号与手写体的数学运算符号存在一定的差异,对于长的表达式,如果不确定运算符的优先级,可以加入小括号提升其优先级。Solve函数的第一个参数是要解的方程,要求右端等于0,第二个参数是未知数。在写入方程的时候,将等号右边的数移到了等号左边,然后将等号丢弃,最后变成了一个式子。PS:不要混淆了sympify()函数与 simplify()函数,前者是转化,后者是简化。在sympy里进行符号运算之前,必须先定义sympy的符号,这样sympy才能识别该符号。开启时,运行时输出的是LaTeX的格式。

2023-02-01 13:49:27 1195

原创 Python网络编程必备的socket模块

SocketServer 是标准库中的一个高级模块(Python 3.x 中重命名为 socketserver),它的目标是简化很多样板代码,它们是创建网络客户端和服务器所必需的代码。在此处的服务器循环中,并非在服务器中创建代码,而是定义一个处理程序,这样当服务器接收到一个传入的请求时,服务器就可以调用你的函数。UDP 和 TCP 服务器之间的另一个显著差异是,因为数据报套接字是无连接的,所以就没有为了成功通信而使一个客户端连接到一个独立的套接字“转换”的操作。将string中的数据发送到连接的套接字。

2023-02-01 12:45:19 540

原创 Python总结Collections模块:namedtuple、ChainMap、deque、Counter、orderedDict和Defaultdict

字典里面还有另一种常用的删除方法pop(),pop(key[,default]),其中,key是必选参数,必须给出,default是可选参数,可以不给出。Python中默认的字典dict是无序的,因为它是按照hash来存储的,但是collections模块中的OrderedDict子类实现了对字典对象中元素的排序,它是有序的。只有getitem()才能调用missing(),这意味着,如果get()起作用,如普通的词典,将会返回None作为默认值,而不是使用default_factory;

2023-02-01 11:25:57 264

原创 Python中的反射—通过字符串的形式操作对象

如果抛出AttributeError异常,则会直接调用__getattr__方法,因为属性没有找到,__getattribute__方法中为了避免在该方法中无限递归,它的实现应该永远调用基类的同名方法以访问需要的任何属性。实例的所有的属性访问,第一个都会调用__getattribute__方法,它阻止了属性的查找,该方法应该返回值或者抛出一个AttributeError异常。来访问对象的属性,本质上就是利用反射的能力,但是上面的例子中,访问的方式不优雅,Python提供了内置的函数。第三参数为新的属性值。

2023-01-31 18:16:38 549

原创 Python中的猴子补丁

执行了types.MethodType(f1,c)之后,相当于产生了一个特殊返回值,这个返回值指向f1函数,里面已经被默认传递了c对象作为参数,只要使用这个返回值,就可以当做是调用了对象的方法。例如,如果要更改程序的行为,则可以为要更改的类定义子类。可以看到,上面类中并没有定义__len__的方法,但当我们做了猴子补丁以后,仍然可以正确的调用len函数。注意:该有的参数还是要有,但名称可以不一样,类中原本应该是是self,在类外的实现可以任意写 (例如obj),因为会在做猴子补丁的时候自己去对应起来。

2023-01-31 17:59:33 585

原创 Python中的正则表达式

对于一些特别的正则表达式编译,可选的标记可能以参数的形式给出,这些标记允许不区分大小写的匹配,使用系统的本地化设置来匹配字母数字,等等。比如一个简单的正则表达式模式\w+-\d+,它由连字符号分隔的字母数字字符串和数字组成,可以通过添加()来添加一个子组,构造一个新的正则表达式 (\w+)-(\d+)来完成这项工作。re模块和正则表达式的对象方法split()对于相对应字符串的工作方式是类似的,但是与分割一个固定字符串相比,它们基于正则表达式的模式分隔字符串,为字符串分隔功能添加 一些额外的威力。

2023-01-31 17:22:03 735

原创 Python中的元类(metaclass)

但是,它的本质仍然是一个对象,于是你可以对它做如下的操作: 你可以将它赋值给一个变量, 你可以拷贝它, 你可以为它增加属性, 你可以将它作为函数参数进行传递。当在类中定义一个魔术方法的时候,function除了__dict__中的条目之外,在整个类结构中,作为一个描述着这个类的指针一样结束。在Python里,int整形是对象,整数2也是对象,定义的函数、类都是对象,定义的变量也是对象。元类、装饰器、类装饰器都可以归为元编程,它们之间有一些相似点,还是在实际的应用中选择比较,使用合适的工具进行编程。

2023-01-31 16:46:50 265

原创 Python中的垃圾回收机制

如果创建的对象总和减去被释放的对象,达到一定的值(某个阈值),那么Python就会遍历这个零代链表,找到那些有相互引用的对象,将这些对象的引用计数减1,如果引用计数值为0了,那么就说明这个对象是可以被释放的。新创建的对象都会分配在年轻代,年轻代链表的总数达到上限时,Python垃圾收集机制就会被触发,把那些可以被回收的对象回收掉,而那些不会回收的对象就会被移到中年代去,依此类推,老年代中的对象是存活时间最久的对象,甚至是存活于整个系统的生命周期内。Python的引用计数算法不能够处理互相指向自己的对象。

2023-01-31 13:56:13 403

原创 Python中具备精确分配和释放资源功能的上下文管理器

在第4步和第6步之间,如果发生异常,Python 会将异常的type,value和 traceback传递给 __exit__方法。但是with后面的表达式并不是可以任意写的。不过有一点需要我们注意:在使用 contextmanager装饰器时,如果被装饰的方法内发生了异常,那么我们需要在自己的方法中进行异常处理,否则将不会执行 yield之后的逻辑。这样一来,当我们使用这个 contextmanager装饰器后,就不用再写一个类来实现上下文管理协议,只需要用一个方法装饰对应的方法,就可以实现相同的功能。

2023-01-30 18:11:39 332

原创 Python中最全魔术方法整理

在Python中set集合要求数据类型是可哈希的,因为set集合会默认调用对象的__hash__函数进行快速查询,如果找到了则调用对象的__eq__判断两个是是否相同,如果相同则不添加。如果抛出AttributeError异常,则会直接调用__getattr__方法,因为属性没有找到,__getattribute__方法中为了避免在该方法中无限递归,它的实现应该永远调用基类的同名方法以访问需要的任何属性。__call__()方法可以让类的实例具有类似于函数的行为,这进一步模糊了函数和对象之间的概念。

2023-01-30 14:37:38 2259

原创 Python中的集合(set and frozenset)语法汇总

set类型是可变的, 其内容可以使用 add() 和 remove() 这样的方法来改变,因为是可变的,所以没有哈希值,且不能被用作字典的键或其它集合的元素。frozenset是冻结的集合,它是不可变的,存在哈希值,好处是它可以作为字典的key,也可以作为其它集合的元素。两个集合(A和B)的对称差分是指另外一个集合C,该集合中的元素,只能是属于集合A或者集合B的成员,不能同时属于两个集合。即A的元素也都是B的元素,但是B的元素比A的元素数量多。集合是一个无序的不重复的元素序列,能够去重复,删除重复项。

2023-01-29 17:40:16 727

原创 Python中的os模块

路径,深层次遍历指定路径下的所有子文件夹,返回的是一个由路径、文件夹列表、文件列表组成的元组。os模块是Python标准库中整理文件和目录最为常用的模块,该模块提供了非常丰富的方法用来处理文件和目录。路径,将该路径拼接起来,形成一个新的完整路径;路径,判断指定路径下的目录是否存在。传入一个完整的文件路径,判断它是否是文件夹;传入一个完整的文件路径,只获取其绝对路径;传入一个完整的文件路径,判断它是否是文件;传入一个完整的文件路径,返回该文件的大小;路径,删除指定路径下的文件夹;路径,生成一个递归的文件夹;

2023-01-29 17:31:18 790

原创 Python中的logging模块

如果没有为根记录器定义处理程序handler,则debug(),info(),warning(),error()和critical()函数将自动调用basicConfig()函数。重要性也可以称为级别或严重性。Python标准库自带日志模块,程序的日志功能直接调用标准库的日志模块即可通过日志,开发者可以清楚的了解发生了哪些事件,包括出现了哪些错误。由标准库模块提供的日志记录API的主要好处是所有Python模块都可以参与日志记录,因此您的应用程序日志可以包括您自己的消息以及与第三方模块的消息集成的消息。

2023-01-29 14:24:24 226

原创 Python的装饰器用法

于是乎,就想到了把test传递到某个函数,而这个函数内恰巧内嵌了一个内函数,再根据内嵌函数的作用域(内嵌函数可以访问外部参数),把test包在这个内函数当中,一起返回,最后调用这个返回的函数。而我们知道test = func = deco,因此test()=func()=deco(),那么当test(parameter)有参数时,就必须给func()和deco()也加上参数,为了使程序更加有扩展性,因此在装饰器中的deco()和func(),加如了可变参数*agrs和 **kwargs。

2023-01-29 14:11:33 519 1

原创 Python中的迭代器与生成器

可以把这个数据流看做是一个有序序列,但我们却不能提前知道序列的长度,只能不断通过next()函数实现按需计算下一个数据,所以Iterator的计算是惰性的,只有在需要返回下一个数据时它才会计算。然后,我们使用 num 生成器调用 __next__() 方法,该方法的作用和 next() 函数完全相同(事实上,next() 函数的底层执行的也是 __next__() 方法),它会是程序继续执行,即输出“继续执行”,程序又会执行到yield i,此时 i=1,因此输出“1”,然后程序暂停。

2023-01-29 13:40:47 791

原创 Python中的文件对象

不过有的时候我们还需要反复读取文件中的内容,如果多次打开文件读取再多次关闭,显然不是特别好的操作,我们可以借助Python文件对象的seek()和tell()函数,来实现反复的读取文件内容,最后再关闭文件。readline()函数也可以带一个长度,表示在这个长度范围内读取一行,如果读取一个超大文件,文件中没有换行符,readline()不带长度,程序可能直接卡死。read()函数可以带一个长度,用来控制每次读入的内容长度,这根内容直接相关,如果读取一个超大文件,read()不带长度,程序可能直接卡死。

2023-01-28 18:02:55 618

原创 Python中的进制转换

十进制是我们常用的数字形式,但机器使用的却是二进制,八进制,十六进制之类的,所以进制转换是基础要求,很多编程语言提供的有进制转换的方法,下面来扒一扒利用Python如何进行进制转换~,这个函数相信用Python的都应该用过,可以将浮点数转换成整数。函数可以用于进制转换,其第一个参数是一个字符串,第二个参数是字符串的进制(默认是十进制)。这里先说一个知识点:进制前面一般会有一个符号,这个符号表明了到底是多少进制。函数用于将10进制整数转换成16进制,返回16进制数以字符串形式表示。,其余的函数就不多说了。

2023-01-28 17:16:02 1592

原创 Python中的“_args”和“__kwargs”用法

首先,要知道的是并不是必须写成*args和**kwargs。只有变量前⾯的*才是必须的。所以,你也可以写成*var 和**vars。写成*args 和**kwargs只是⼀个通俗的命名约定。*args 和 **kwargs 主要⽤于函数定义。你可以将不定数量的参数传递给⼀个函数。,作为参数传递给⼀个函数。使⽤ *args 和 **kwargs 来调用函数。来调用⼀个参数为列表或者字典的函数。来给这个函数传递参数。最常见的用例是在写函数装饰器的时候。*args 和 **kwargs。**kwargs的用法。

2023-01-28 17:08:59 787

原创 Python中的 Map,Filter 和 Reduce用法

reduce()将一个数据集合(链表,元组等)中的所有数据进行下列操作:用传给 reduce() 中的 function函数 (有两个参数)先对集合中的第1和2个元素进行操作,得到的结果再与第三个数据用 function 函数运算,最后得到一个结果。另外,由于仅需要一个可迭代的函数,因此隐含的是func必须仅接受一个参数。func是对iterable中的每个元素累积应用的函数,而initial是在计算中置于iterable元素之前的可选值,并且在iterable为空时用作默认值。

2023-01-28 16:59:55 1059 1

原创 Python中的 for-else 语法

所以,for-else 的语法其实很简单:如果for循环正常结束,else中的语句正常执行。如果 for 循环中有 break 字段等导致 for 循环没有正常执行完毕,那么 else 中的内容就不会执行。else语法解决的问题是:一般for循环结束后,我们无法直接知道for循环是提前跳出的,还是走完整个循环结束的,需要通过额外的if语句进行判断,而for-else则很简单的解决了这个问题。在这个例子当中,i==3的时候退出了循环,然后else当中的语句没有执行。现在,我们可以加上一个附加的。

2023-01-28 16:53:15 1543

原创 使用Python包组织代码

如果一个模块被import过,Python会将导入的模块缓存在sys.modules字典里缓存起来,再次导入的时候不会重新执行导入动作,直接从缓存里取。反之,如果我们从sys.modules里把导入的模块删除,则再次import会再次触发模块导入动作。所谓 Regular packages 就是指含有__init__.py的目录,这样的包被其他模块导入的时候,会先执行目录下__init__.py里的代码。字典里缓存起来,再次导入的时候不会重新执行导入动作,直接从缓存里取。删除的是变量,而不是数据。

2023-01-28 16:38:47 321

原创 pyhon把程序打包为whl

首先把需要打包的py文件放在一个文件夹内(我的文件夹名为coordTrans,记住这个名字,后面要用)。同时,该文件夹内还需要有一个名字为__init__.py的文件,该py程序内容为空也可以,但必须有,因为这是包的引导初始化文件。其中coordTrans为包名(文件夹名),也就是文章开头,让你记住的那个文件夹;在setup.py文件所在路径下运行cmd运行打包命令,要打包成egg文件或whl文件,需要改变最后传入的参数。如果是conda环境的话,这个包是自带的,不需要另外安装。

2023-01-10 15:58:15 663

原创 ubuntu查看进程和结束进程

当然,我们也可以通过进程名command来关闭进程。2、killall 进程名 关闭同一进程组内的所有进程。3、kill -KILL pid更加强制关闭进程。查看所有处于网络连接的进程,适合服务器端使用。树状显示进程信息,便于查看子进程和父进程。2、kill -9 -pid强制关闭进程。1、pkill 进程名 关闭进程。ps a | grep 进程名。1、kill pid关闭进程。查询进程名对应的进程信息。我们可以通过上一步查看的。查看所有进程的详细信息。

2023-01-10 15:41:37 1908

mongodb聚合学习使用文档.txt

mongodb聚合学习使用文档

2021-06-07

微软官方工具制作win10启动盘

微软官方工具制作win10启动盘 MediaCreationTool20H2.rar

2021-05-27

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除