
python
文章平均质量分 88
june_francis
学习笔记&填坑
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
聚类算法OPTICS的理解及实现
前面给大家介绍到了聚类算法中比较经典的 DBSCAN算法,对于数据量小而且相对比较密集、密度相似的数据集来说,是比较合适的。那么接下来给大家介绍它的改进版OPTICS(),针对DBSCAN在密度差异性较大的数据集中的表现较差的弱点进行优化。例如下图中所示的数据集中,分别使用上述两种算法进行聚类,可能得到如下结果:在DBSCAN中只会考虑在指定距离参数eps范围内的样本点作为当前聚类中心的临近点,很显然这样的处理方式会遗漏掉图中右下角的类簇,不会将它们标记为一个类簇。如果我们将eps。原创 2022-12-08 14:48:14 · 5971 阅读 · 10 评论 -
DBSCAN密度聚类算法的原理及sklearn实现
前言DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的空间聚类方法)是一种很典型的密度聚类算法,和 K-Means , BIRCH 这些一般只适用于凸样本集的聚类相比,DBSCAN 既可以适用于凸样本集,也可以适用于非凸样本集。一、基于密度的聚类思想DBSCAN 是一种基于密度的聚类算法,...原创 2019-11-16 23:16:23 · 3356 阅读 · 0 评论 -
常见聚类算法及使用--均衡的迭代并减少聚类中心的层次聚类(BIRCH)
前面文章给大家介绍了关于层次聚类算法的实现,那么本文给大家继续介绍层次聚类的优化算法BIRCH。大家都知道像K-means这样的聚类算法比较有局限性,而且在大数据场景下很难处理,特别是在有限的内存和较慢的CPU硬件条件下。我相信这样的情况常规的聚类算法都没有办法确保随着数据量的不断增加而保证很好的聚类的质量和高效的运行时间。于是BIRCH应运而生:是一种应用层次聚类方法将大数据场景下的样本首先生成较小而且紧凑的类簇,并且这写类簇能够保留更可能多的信息。通过生成这样的一些关键的聚类信息,因此BIRCH。原创 2022-11-04 17:10:02 · 1471 阅读 · 0 评论 -
常见聚类算法及使用--层次聚类(Agglomerative clustering)
层次聚类顾名思义就是按照某个层次对样本集进行聚类操作,这里的层次实际上指的就是某种距离定义。层次聚类最终的目的是消减类别的数量,所以在行为上类似于树状图由叶节点逐步向根节点靠近的过程,这种行为过程又被称为“自底向上”。更通俗的,层次聚类是将初始化的多个类簇看做树节点,每一步迭代,都是将两两相近的类簇合并成一个新的大类簇,如此反复,直至最终只剩一个类簇(根节点)。原创 2022-11-03 15:32:00 · 24320 阅读 · 0 评论 -
pandas之自动优化数据类型
主动删除垃圾, 调用Python的垃圾回收库gc完成对冗余的内存的清除;尽量使用numpy数组运算来替换for循环和apply操作;数据存储方面使用更加高效的leather或者parquet等文件格式。转载 2022-09-09 11:16:16 · 420 阅读 · 0 评论 -
pandas提速之swifter
相信大家使用完pandas一段时间之后,多多少少会去寻找使得当下数据处理过程效率更高的方式或者方法,那么在大规模的数据之间完成一些操作,我们往往会浪费大量的时间,为了充分的利用软硬件资源,演化出了2种主流的优化方式,分别是向量化和并行化。今天要给大家介绍的一款工具swifter就是综合使用了这2中方式。swifter是一款用于给使用在 pandas DataFrame 或者 Series 上的 function 进行加速的包。那么swifter具体是如何做到高效率的呢?原创 2022-09-07 16:50:23 · 2214 阅读 · 0 评论 -
超参数Hyper-parameters的调试方法
前言众所周知,机器学习和深度学习工作流中最困难的部分之一,就是为模型找到最好的超参数,机器学习和深度学习模型的性能与超参数直接相关。维基百科上说,“ Hyperparameter optimization 或 tuning 是为学习算法选择一组最优的hyperparameters 的问题”。超参数调优的越好,得到的模型就越好。调优超参数可能是非常乏味和困难的,更像是一门艺术而不是科学。超参数(Hyperparameters)超参数是在建立模型时用于控制算法行为的参数。这些参数不能从常规训练过翻译 2020-11-11 23:20:16 · 3997 阅读 · 0 评论 -
如何使用Python解决不同系统平台文件操作的差异带来的不便
前言如题,有些时候涉及到在不同的系统平台上对文件做一些操作,但是往往有一些操作并不是兼容的,比如说 Mac OS/Linux 系统和 Windows 系统之间,Python 里的 os 模块的某些功能便不是兼容的。接下来给大家安利一款文件处理和路径相关操作的库 pathlib 。正文首先,假设现在我们有这样一个需求,将某个目录中带有 .txt 后缀的文件修改成 .csv 的形式,那么根据以往经验,我们可以使用 os 模块来解决这个需求如下:import os def modify_suffix原创 2020-09-10 16:29:45 · 871 阅读 · 2 评论 -
安装fasttext过程中出现的问题解决
前言如题,因工作需要,需要安装使用fasttext这个Python库完成文本处理,但是直接pip install fasttext会报错:后来查询官网,发现直接通过github获取源码安装比较保险:git clone https://github.com/facebookresearch/fastText.git然后进入文件夹,执行安装:cd fastTextsudo pip install .但是发现还是报上面那个错误,经过一番搜索,发现是自己的centos的g++库没有,github原创 2020-09-01 15:40:23 · 1136 阅读 · 0 评论 -
特征选择与正则化
前言在机器学习中,对原始数据特征的处理和选择是一个非常重要的环节,Andrew NG 大佬曾经说过这么一句话:数据和特征决定了机器学习的上限,而机器学习算法和模型只是逼近这个上限而已。特征选择的重要性和分类首先,我们在现实任务中经常会遇到维数灾难问题,这是由于属性(特征)过多造成的,若能从中选择出重要的特征,使得后续的学习过程仅需要在一部分特征上构建模型,则维数灾难问题会大为减轻。从这个意义上说,特征选择与特征降维有相似的动机;事实上,它们是处理高维数据的两大主流技术。第二个原因是,取出不相关特征往往转载 2020-06-02 16:43:13 · 3129 阅读 · 0 评论 -
将jupyter中的ipynb文件转换成PDF文件
前言如题,有些时候,在一些终端设备上,比如说平板或者手机上查看.ipynb文件会十分不便,我们需要启动jupyter服务端,在浏览器客户端才能查看翻阅.ipynb文件,所以我在私下里找了找是否可以将.ipynb文件转换成PDF文件,再拷贝到其它设备上阅览,这不,找到曲线救国的方法。大致操作为:① 先将.ipynb文件转换成HTML文件;② 再将HTML文件转换成PDF文件。那么这里需要借助到两个工具,一个是wkhtmltopdf,另一个是 pdfkit 。实现首先,去这个官网下载wkhtmlto原创 2020-05-30 11:43:16 · 1653 阅读 · 0 评论 -
Python中的源代码反编译成字节码及其解析
前言我之前的一篇博文Python程序的执行过程(解释型语言和编译型语言)给大家提及了Python中的pyc文件的诞生和它的作用,其实是为了提升Python解释器的效率,将py文件编译成了字节码,并保存到了pyc文件中。其中Python实际上是将源代码编译为虚拟机的一组指令(字节码,也叫pycodeobject),Python解释器就是该虚拟机的实现。Python虚拟机Cpython使用基于堆...原创 2020-04-22 16:47:37 · 2295 阅读 · 3 评论 -
十大排序算法(Python实现)
前言手撕算法,面试必备,你懂得!一、排序及其分类所谓排序就是将一组无序的记录序列调整为有序的记录序列。① 选择排序:主要包括简单选择排序和堆排序;② 插入排序:简单插入排序、希尔排序;③ 交换排序:冒泡排序、快速排序;④ 归并排序⑤ 非比较排序:计数排序、桶排序、基数排序属于非比较排序,算法时间复杂度O(n), 属于空间换时间。二、经典排序算法的实现2.1 选择排序从待排序的...原创 2020-03-14 23:55:00 · 340 阅读 · 1 评论 -
助力实现机器学习高效特征选择的一款Python工具FeatureSelector
前言鉴于特征选择在机器学习过程中的重要性,数据科学家 William Koehrsen 近日在 GitHub 上公布了一个特征选择器 Python 类,帮助研究者更高效地完成特征选择。本文是 Koehrsen 写的项目介绍及案例演示文章。项目地址:feature_selector图为工农红军长征插图,前人栽树,后人乘凉,共勉。正文特征选择( feature selection )是查找...翻译 2020-01-05 15:10:06 · 2222 阅读 · 1 评论 -
在Windows上使用modin
前言在 Windows 上安装使用 modin 时有一些坎坷,特此记录。Modin 是加州大学伯克利分校 RISELab 的一个早期项目,旨在促进分布式计算在数据科学领域的应用。它是一个多进程的数据帧(Dataframe)库,具有与 Pandas 相同的应用程序接口(API),使用户可以加速他们的 Pandas 工作流。在一台 8 核的机器上,用户只需要修改一行代码,Modin 就能将 Pa...原创 2019-12-26 12:09:48 · 2774 阅读 · 12 评论 -
矩阵乘法的本质
前言在机器学习算法中,矩阵相乘非常常见。对矩阵乘法这种底层操作进行分析,有时候可以帮助我们更好地理解算法。那矩阵乘法的本质到底该怎样理解呢?其实我们大体上可以从下面5个角度来理解。一、方程组的几何解释“矩阵最初的目的,只是为线性方程组提供一个简写形式”。一个矩阵可以看成方程组的系数。我们来看这样一个方程组:记系数矩阵 A=[2−111]A = \begin{bmatrix}2 &...原创 2019-12-19 20:16:59 · 2962 阅读 · 0 评论 -
安装shapely-geo包出现的问题
今天需要安装一个Python包叫做shapely,但是直接安装时是报了如下的错误:这种情况即是不能自动下载啦,那就下载压缩包,直接安装压缩包。访问地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/在界面全局搜索:然后选择和自己安装的Python解释器版本和系统版本对应一致的 shapely 库下载,下载好之后,是一个后缀名为 whl 的文件,...原创 2019-12-02 19:54:00 · 1127 阅读 · 0 评论 -
pandas的性能优化
前言在使用 pandas 去处理某些数据的过程中,我相信有些小伙伴会有些苦恼,如何能让 pandas 的处理速度能再提升一些呢?本文给大家提供一些可行的建议,帮助大家提升处理数据的效率。什么是pandas?Pandas 是数据科学和数据竞赛中常见的 Python 第三方库,我们使用 Pandas 可以进行快速读取数据、分析数据、构造特征。但 Pandas 在使用上有一些技巧和需要注意的地方,...翻译 2019-10-25 00:04:13 · 1626 阅读 · 0 评论 -
极大似然估计(MLE)、贝叶斯估计(BE)和极大后验概率估计(MAP)的对比
前言目前正在学习统计学习方法,但是书籍里面的概念太过于抽象,索性去网上收集了各位网友给出的合理解释,同时在此记录,方便更多的同学一起来学习探讨!这篇文章重点给大家介绍极大似然估计、贝叶斯估计以及极大后验概率估计之间的联系和区别。SNACKS那么在正式介绍这些概念之前,先简单给大家介绍几个前置知识点:概率和统计,两者研究的问题相同吗?概率(probabilty)和统计(statistic...翻译 2019-10-23 23:52:30 · 1129 阅读 · 0 评论 -
Python标准库之datetime
前言在工作中遇到了这样一个需求,需要对时间做各种转换,一时之间没有构思,只隐约记得Python当中的time模块和datetime模块能够完成这件事,所以特意在工作之余花点时间对这两个标准库系统的学习一下并记录下来,方便以后查阅。正文首先datetime模块的功能是在支持日期时间数学运算的同时,关注如何能够更有效地解析其属性用于格式化输出和数据操作。datetime.date1、date...翻译 2019-05-27 18:08:47 · 668 阅读 · 0 评论 -
Collections之deque
前言此系列文章将学习总结经常用到的几个collections的方法。collections.deque语法:collections.deque([iterable[, maxlen]])使用方法:我们给deque传入一个可迭代对象iterable,返回一个新的deque对象,这个deque对象包含iterable的所有元素。那么这个deque对象到底是个什么鬼?其实它是一种类似于栈和...翻译 2019-05-09 15:48:32 · 1535 阅读 · 0 评论 -
Python标准库之Operator
前言对这个标准库觊觎已久了,今天有时间就抽空特意来学习总结一下。正文那么是什么让operator这个模块这么让人着迷呢?首先operator这个模块它包含了一系列高效的Python内置操作,比如说对象之间的对比操作,逻辑操作,数学操作和序列操作。第一弹给大家先来一张操作和operator方法的对应图,大家可以根据需要去取用:这其中的一些方法在operator中还有一些变种方法,区...翻译 2019-05-09 13:52:23 · 1819 阅读 · 0 评论 -
itertools之排列组合迭代器(Combinatoric Iterators)
一、itertools.product语法:*itertools.product(iterables, repeat=1)注解:Cartesian product of input iterables.Roughly equivalent to nested for-loops in a generator expression. For example, product(A, B) re...翻译 2019-05-06 17:37:01 · 546 阅读 · 0 评论 -
itertools之无限迭代器(Infinite Iterators)
前言在Python的标准库当中有这么一个神奇的工具库,它能让你使用最简单的方式写出更简洁高效的代码,这就是itertools,使用这个工具能为你生成一个优雅的迭代器。为此鄙人专门抽出了一点时间去研究了一下它的官方文档,感觉这个工具实在是太强大了,那么咱们闲话不多说,直接进入本次的主题,和大家一起来了解一下其中的Infinite Iterators。一、itertools.count首先它与P...翻译 2019-05-06 16:08:06 · 832 阅读 · 0 评论 -
itertools之其他常用功能函数
一、itertools.accumulate语法:itertools.accumulate(iterable[, func])注解:Make an iterator that returns accumulated sums, or accumulated results of other binary functions (specified via the optional func a...翻译 2019-05-08 17:15:59 · 721 阅读 · 0 评论 -
谈一谈Python当中对象的边界问题
固定边界:自由与孤独Python 中有一些公民向来我行我素,它们特立独行,与他人之边界划定得清清楚楚。客气的人称它们是定长对象,或者叫不可变对象,然而,懂得一些历史典故的人又叫它们是铁公鸡 。这个典故出自何处呢?亏得我曾恶补过一段历史知识,知道这指的正是激进的道家弟子杨朱。损一毫利天下,不与也;悉天下奉一身,不取也; 人人不损一毫,人人不利天下,天下治矣!----春秋·杨朱 对于定长...翻译 2019-04-23 11:33:23 · 1567 阅读 · 0 评论 -
Python中的动态赋值及其陷阱
前言在Python当中,命名空间与作用域的问题,看似微不足道,其实背后暗藏玄机。本文着重介绍Python当中的 locals() 与 globals() 的读写问题,以及由这个问题引申出来的动态赋值相关的问题。locals() 与 globals() 的调用结果都是字典类型,用法在这里我就不再赘述了。然而,在使用过程中,有一个陷阱需要注意:globals() 可读可写,而 locals() ...翻译 2019-04-22 20:45:59 · 1303 阅读 · 0 评论 -
深度辨析Python中的eval与exec函数的使用方法
前言Python 提供了很多内置的工具函数(Built-in Functions),在最新的 Python 3 官方文档中,它列出了 69 个。大部分函数是我们经常使用的,例如 print()、open() 与 dir(),而有一些函数虽然不常用,但它们在某些场景下,却能发挥出不一般的作用。内置函数们能够被“提拔”出来,这就意味着它们皆有独到之处,有用武之地。因此,掌握内置函数的用法,就成了...翻译 2019-04-22 16:43:43 · 992 阅读 · 1 评论 -
Collections之Counter
前言首先Counter这个工具能够用来让我们快速便捷的对某些对象做一些统计操作,包括可迭代对象iterable和映射对象mappings。正文语法:collections.Counter([iterable-or-mapping])注解:A Counter is a dict subclass for counting hashable objects. It is an unorder...翻译 2019-05-23 22:36:46 · 1514 阅读 · 0 评论 -
机器学习算法中Bagging和Boosting的区别
前言首先这两种方法都是基于单一弱分类器进行提升的一种手段,只不过实现的原理不一样。在工业界,传统的机器学习算法已经无法满足我们日益增加的算法需求,所以一些组合形式的算法的出现成功引起了大家的注意和学习。概念Bagging和Boosting都是将已有的分类或回归算法通过一定方式组合起来,形成一个性能更加强大的分类器,更准确的说这是一种分类算法的组装方法。即将弱分类器组装成强分类器的方法。首...翻译 2019-06-01 19:25:33 · 365 阅读 · 0 评论 -
python多任务处理之浅谈协程
协程,又称微线程,纤程。英文名Coroutine。 协程的概念很早就提出来了,但直到最近几年才在某些语言(如Lua)中得到广泛应用。 子程序,或者称为函数,在所有语言中都是层级调用,比如A调用B,B在执行过程中又调用了C,C执行完毕返回,B执行完毕返回,最后是A执行完毕。 所以子程序的调用是通过栈实现的,而一个线程就是执行一个子程序。 子程序调用总是一个入口,一次返回,调用...转载 2018-08-15 01:18:30 · 407 阅读 · 0 评论 -
关于pickle和json这两个库之间的使用对比
前言Python的json和pickle模块实现了数据的序列和反序列化。在使用和功能实现上没有太大区别,那么接下来我们分别来看看这两个模块之间的使用和对比。① json模块一、说到json这个模块我相信大家使用最多的功能就是它对json字符串的序列化和反序列化,分别对应json.dumps()和json.loads()方法:import jsondata = { 'name' ...原创 2019-09-19 00:22:27 · 1993 阅读 · 0 评论 -
线性回归损失函数的最优解推导
前言我的上一篇文章给大家分析了线性回归的损失函数为什么是最小二乘,那么接下来给大家一下简单的演绎一下线性回归损失函数的最优解的推导过程。场景假设我们有由 MMM 个 NNN 维样本组成的矩阵 XXX ,其中X的每一行对应一个样本,共 MMM 个样本,每一列对应样本的一个维度,共 NNN 维,还有额外的一维常数项,全为 111 (这个地方是为了拟合回归方程中的偏置项,不再详细解释)。解析式推...原创 2019-07-31 15:28:14 · 4098 阅读 · 0 评论 -
线性回归的目标函数为什么是最小二乘
前言关于线性回归的目标函数的由来,个人一直很好奇,索性自己下去研究了一番,着实有趣,特整理这篇文章,供自已以后翻阅回味,同时也供广大同胞们解解馋。一、线性回归的似然函数我们都知道线性回归是用数学方程式的形式去拟合现实生活中的问题,然后期望通过这样的方式能够找到问题的最优解。这里我们还是以最为经典的波士顿房价预测为例:前13个属性是特征值,这里为了方便,记作 {x1,x2,...,x13...原创 2019-07-31 13:39:58 · 2285 阅读 · 0 评论 -
使用递归的思想完成汉诺塔游戏(Python实现)
前言关于汉诺塔的问题我是在看一道面试题时发现它的存在的,不得不说这个东西值得花时间去研究研究,因为当时看完面试题的需求之后我是百脸懵逼的状态!!!正文首先这是百度百科关于汉诺塔的内容:法国数学家爱德华·卢卡斯曾编写过一个印度的古老传说:在世界中心贝拿勒斯(在印度北部)的圣庙里,一块黄铜板上插着三根宝石针。印度教的主神梵天在创造世界的时候,在其中一根针上从下到上地穿好了由大到小的64片金...原创 2019-06-04 20:09:29 · 1608 阅读 · 2 评论 -
Collections之namedtuple
前言今天给大家再介绍一款工具,非常的实用,这款工具就是Python标准库collections里面的namedtuple。关于它的介绍,官网给出了明确的定义:Named tuples assign meaning to each position in a tuple and allow for more readable, self-documenting code. They can b...翻译 2019-06-10 00:14:14 · 7520 阅读 · 0 评论 -
在Python中使用装饰器的技巧
前言在Python当中使用装饰器的场景非常的多,比如说一些异常的捕捉、日志的记录、特定功能的复用、权限验证等等。那么我们在这些场景下使用装饰器会遇到哪些坑呢?装饰器(Decorator) 是 Python 里的一种特殊工具,它为我们提供了一种在函数外部修改函数的灵活能力。它有点像一顶画着独一无二 @ 符号的神奇帽子,只要将它戴在函数头顶上,就能悄无声息的改变函数本身的行为。你可能已经和装饰器...转载 2019-06-09 21:25:16 · 274 阅读 · 0 评论 -
做一个精通Python规则的玩家
前言本文转自“Python工匠”,也非常感谢“Python猫”的极力推荐,感兴趣的同学可以关注一下这两个公众号。之所以会post出这篇文章,因为它不仅能够让我们学习成为在Python世界里的骨灰级玩家,还能让我们在工作生活中获益匪浅。说到底,语言不仅是一个工具箱,而我们这些使用者,更不应是流水线上的站桩工人。编程,其实和玩电子游戏有一些相似之处。你在玩不同游戏前,需要先学习每个游戏的不同规则...转载 2019-06-08 20:47:21 · 196 阅读 · 0 评论 -
关于对决策树算法的解析
前言决策树作为一个在分类算法领域应用较为广泛的经典算法,近些年来关注度也很高。本文从决策树算法的常用底层算法和原理进行解析。正文决策树的分类原理其实决策树也能用于回归场景,这里我们只讨论它的强项------分类。决策树分类器完成分类之后,会形成一颗倒立的树,这棵树从根节点到叶节点,每一个节点的分裂都是依据决策树对每个特征进行综合计算之后得出的最佳结果。实际上,样本所有特征中有一些特征在...翻译 2019-06-02 22:03:05 · 560 阅读 · 0 评论 -
Python中如何将字符串常量转换为变量?
如何动态生成变量名?相信大多数同学在看到本文标题后内心是疑惑的,到底什么样的场景下会遇到这种需求呢?接下来我们通过技术讨论群抛出的问题以及一系列答案做一个分析,并由此引申到更进一步的学习话题,希望对各位同学有所帮助。首先,M同学的问题如下:打扰一下大家,请教个问题,已知list = ['A', 'B', 'C', 'D'], 如何才能得到以list中元素命名的新列表A = [], B =...转载 2019-04-22 15:16:58 · 4218 阅读 · 0 评论