自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

june_young_fan的博客

记录编程过程中的笔记和踩过的坑

  • 博客(128)
  • 收藏
  • 关注

原创 Python程序性能测试小方法

现在的IDE基本上能满足开发人员的各种基本需求,当然了,性能测试也不例外,PyCharm作为Pythoner的主流IDE,这样的需求也是不在话下,编写好你的程序之后,至于要右击你的代码页面,找到。为你的代码文件名,点击后,它会弹出一个性能测试页面,里面包含了你代码中各个耗时操作的性能分析,包括一些堆栈调用。user 记录了 CPU 花在任务上的时间,但不包括内核函数耗费的时间;以上,大家可以根据自己的喜好去选择使用对应的测试方法。同样的,假设现在我们有这样的一个代码文件。sys 记录了内核函数耗费的时间。

2023-11-16 10:44:40 537

原创 聚类算法OPTICS的理解及实现

前面给大家介绍到了聚类算法中比较经典的 DBSCAN算法,对于数据量小而且相对比较密集、密度相似的数据集来说,是比较合适的。那么接下来给大家介绍它的改进版OPTICS(),针对DBSCAN在密度差异性较大的数据集中的表现较差的弱点进行优化。例如下图中所示的数据集中,分别使用上述两种算法进行聚类,可能得到如下结果:在DBSCAN中只会考虑在指定距离参数eps范围内的样本点作为当前聚类中心的临近点,很显然这样的处理方式会遗漏掉图中右下角的类簇,不会将它们标记为一个类簇。如果我们将eps。

2022-12-08 14:48:14 3330 4

原创 常见聚类算法及使用--均衡的迭代并减少聚类中心的层次聚类(BIRCH)

前面文章给大家介绍了关于层次聚类算法的实现,那么本文给大家继续介绍层次聚类的优化算法BIRCH。大家都知道像K-means这样的聚类算法比较有局限性,而且在大数据场景下很难处理,特别是在有限的内存和较慢的CPU硬件条件下。我相信这样的情况常规的聚类算法都没有办法确保随着数据量的不断增加而保证很好的聚类的质量和高效的运行时间。于是BIRCH应运而生:是一种应用层次聚类方法将大数据场景下的样本首先生成较小而且紧凑的类簇,并且这写类簇能够保留更可能多的信息。通过生成这样的一些关键的聚类信息,因此BIRCH。

2022-11-04 17:10:02 1215

原创 常见聚类算法及使用--层次聚类(Agglomerative clustering)

层次聚类顾名思义就是按照某个层次对样本集进行聚类操作,这里的层次实际上指的就是某种距离定义。层次聚类最终的目的是消减类别的数量,所以在行为上类似于树状图由叶节点逐步向根节点靠近的过程,这种行为过程又被称为“自底向上”。更通俗的,层次聚类是将初始化的多个类簇看做树节点,每一步迭代,都是将两两相近的类簇合并成一个新的大类簇,如此反复,直至最终只剩一个类簇(根节点)。

2022-11-03 15:32:00 16914

原创 常见聚类算法及使用--Affinity Propagation(AP)

对于聚类算法,大家应该都已经略知一二,比如说它是无监督,不需要标签来监督它的学习,我们需要的是在特定场景下将这些未被标注的数据进行自然分组。聚类是在输入数据的特征空间中查找自然组的无监督问题;对于所有数据集,有许多不同的聚类算法和单一的最佳方法;在机器学习库的Python中如何实现、适配和使用顶级聚类算法。AP聚类算法与经典的K-Means聚类算法相比,具有很多独特之处:无需指定聚类“数量”参数。

2022-11-02 16:12:42 2687 1

原创 大数据之SQL优化

在日常工作中,数据处理和分析在研发、产品和运营等多个领域起着重要的作用。在海量数据处理和分析中,SQL 是一项基础且重要的能力。一个优秀的 SQL Boy 和茶树姑的 SQL 代码除了保持简单、可读和易于维护的样式风格外,还需要具备良好的执行性能,准确且高效的计算出结果才能让你在工作中决胜于千里之外。计算资源量(CPU,内存,网络等);计算数据量(输入和输出的记录数);计算复杂度(业务逻辑复杂程度和对应的 SQL 实现和执行)。

2022-10-26 14:18:09 2101

原创 SQL编码规范(百家版)

与大多数编程语言一样,我们在编写SQL语句时可以遵循一套合适的规范来提升代码的可读性、易维护性和一致性,这在团队中是提升效率的手段之一。虽然SQL官方并没有特意给出一套对应的规范,但是从SQL语句发展到现在,我相信有很多组织和个人早已有了对应的一套规范,接下来我们可以从中总结一些比较常用的作为自己在工作中的指南。

2022-10-24 17:50:38 1168

原创 现有的评分和排名算法

在之前的文章「投票==公平???」中已经得到了一个令人沮丧的结论:。投票是对不同选项或个体的排序,在投票中我们关注更多的是相对位置这样定性的结论,例如:积分前三名的同学才能进入下一环节。但有的时候我们不光想知道不同选项之间的先后顺序,还想了解不同选项之间的差异大小,这时我们就需要设计更精细的方法进行定量分析。从小到大被评分最多的应该就是考试了,, 或是 ,这三个数字应该从小学一年级一直“陪”我们走过十几载青春。考试的评分算法简单且容易区分,整个系统设置了一个总分,根据不同的表现进行加分或扣分,统计最终得分作

2022-10-24 11:47:14 2733 2

原创 投票==公平???

我们在团队中遇到意见分歧时,通常会通过投票机制以期来得到一个公平、公正的让所有人都能信服的解决方案,但是,这样的方案是否真的绝对公平?只有道德上的相对民主,没有制度上的绝对公平,求同存异才能长治久安。

2022-10-20 17:56:25 717

转载 pandas之自动优化数据类型

主动删除垃圾, 调用Python的垃圾回收库gc完成对冗余的内存的清除;尽量使用numpy数组运算来替换for循环和apply操作;数据存储方面使用更加高效的leather或者parquet等文件格式。

2022-09-09 11:16:16 244

原创 pandas提速之swifter

相信大家使用完pandas一段时间之后,多多少少会去寻找使得当下数据处理过程效率更高的方式或者方法,那么在大规模的数据之间完成一些操作,我们往往会浪费大量的时间,为了充分的利用软硬件资源,演化出了2种主流的优化方式,分别是向量化和并行化。今天要给大家介绍的一款工具swifter就是综合使用了这2中方式。swifter是一款用于给使用在 pandas DataFrame 或者 Series 上的 function 进行加速的包。那么swifter具体是如何做到高效率的呢?

2022-09-07 16:50:23 1759

转载 SQL索引优化之explain查询计划

最近工作当中使用SQL的场景比较多,遇到了一些瓶颈,在SQL优化这方面做了一些了解。监控sql执行情况,发邮件、短信报警,便于快速识别慢查询sql;打开数据库慢查询日志功能;简化业务逻辑;代码重构、优化;异步处理;sql优化;索引优化。其中解决慢查询最有效的手段就是索引优化。...

2022-09-01 16:49:35 935

原创 HMM隐马尔可夫模型解决的问题及推导过程

前言首先HMM解决的问题是基于序列的。其中:状态序列 I=i1,i2,...,iTI=i_1,i_2,...,i_TI=i1​,i2​,...,iT​ ,满足 iT∈Qi_T \in QiT​∈Q ,QQQ 是状态序列的可能取值集合 Q={q1,q2,...,qN}Q=\{q_1,q_2,...,q_N\}Q={q1​,q2​,...,qN​} ;观测序列 O=o1,o2,...,oTO=o_1,o_2,...,o_TO=o1​,o2​,...,oT​ ,满足 oT∈Vo_T \in VoT​∈

2021-03-23 11:25:36 502

转载 卷积神经网络的压缩和加速

文章目录前言一、网络裁枝二、低秩估计三、模型量化四、模型蒸馏五、总结六、参考文献前言为什么要对网络进行压缩和加速呢?最实际的原因在于当前存储条件和硬件的计算速度无法满足复杂网络的需求,当然也许十几年或更远的将来,这些都将不是问题,那么神经网络的压缩和加速是否仍有研究的必要呢?答案是肯定的,我认为对网络压缩和加速的最根本原因在于对高效率模型的追求,当前很多复杂网络中的很多参数是冗余的,对实际模型结果没什么贡献,我们怎么能容忍这些无意义的参数竟然和有意义的参数享受相同的“待遇”——相同的存储空间和计算时间。

2021-03-19 15:03:49 985

转载 机器学习之SVM(支持向量机)

前言之前一直想总结关于支持向量机的相关内容,今天终于让我找到了机会,方便自己和大家翻阅参考。SVM在之前的很长一段时间内是性能最好的分类器,它有严密而优美的数学基础作为支撑。在各种机器学习算法中,它是最不易理解的算法之一,要真正掌握它的原理有一定的难度。在本文中,将带领大家通过一张图来理清SVM的核心推导过程。正文在各种机器学习算法中,SVM是对数学要求较高的一种,一直以来不易被初学者掌握。如果能把握住推导的整体思路,则能降低理解的难度,在本文中将通过一张图来为大家讲述SVM的整个推导过程。SVM

2021-03-18 18:03:39 496

原创 关于KL散度的一些理解

前言在阅读相关文献时,看到了关于交叉熵和相对熵的概念,交叉熵比较熟悉了,一般用在多分类损失的衡量,但是相对熵见得比较少,故查阅了一些资料,以供自己日后复习查阅。正文在概率论或信息论中,KL散度( Kullback–Leibler divergence),又称相对熵(relative entropy),是描述两个概率分布P和Q差异的一种方法。KL散度可以看作是分布之间的广义距离。先看一下什么是距离:集合 XXX 上的度量(metric,或称为距离函数,或简记为距离)是一个函数 d:X×X→R+d:

2021-03-17 17:01:59 2830 2

原创 关于深度学习中数据预处理(标准化和零均值)的思考

前言在我们应用机器学习或者深度学习模型去完成某个学习任务之前,往往会对 raw data 做一些预处理,其中有一项叫做标准化,对模型的训练和调优有着至关重要的作用。正文我们直接以简单的二分类为例,如下图:假设我们有两类数据分别是红色的点和蓝色的三角形,需要使用合适的直线将这两类数据尽可能的分离开来。其中:图一是 raw data 亦即未经处理的数据,图二是经过标准化后(均值为0,标准差为1)的数据。我们发现图一的情况如果将直线的权重矩阵进行微调(直线斜率发生变化,截距 偏置 不变,即绕着与y

2021-01-05 22:39:40 1478

翻译 超参数Hyper-parameters的调试方法

前言众所周知,机器学习和深度学习工作流中最困难的部分之一,就是为模型找到最好的超参数,机器学习和深度学习模型的性能与超参数直接相关。维基百科上说,“ Hyperparameter optimization 或 tuning 是为学习算法选择一组最优的hyperparameters 的问题”。超参数调优的越好,得到的模型就越好。调优超参数可能是非常乏味和困难的,更像是一门艺术而不是科学。超参数(Hyperparameters)超参数是在建立模型时用于控制算法行为的参数。这些参数不能从常规训练过

2020-11-11 23:20:16 3068

原创 如何使用Python解决不同系统平台文件操作的差异带来的不便

前言如题,有些时候涉及到在不同的系统平台上对文件做一些操作,但是往往有一些操作并不是兼容的,比如说 Mac OS/Linux 系统和 Windows 系统之间,Python 里的 os 模块的某些功能便不是兼容的。接下来给大家安利一款文件处理和路径相关操作的库 pathlib 。正文首先,假设现在我们有这样一个需求,将某个目录中带有 .txt 后缀的文件修改成 .csv 的形式,那么根据以往经验,我们可以使用 os 模块来解决这个需求如下:import os def modify_suffix

2020-09-10 16:29:45 656 2

转载 快速get进程、线程基础知识

前言为了方便大家理解进线程的工作流程及运行状态,先来看一篇小故事:我们写好的一行行代码,为了让其工作起来,我们还得把它送进城(进程)里,那既然进了城里,那肯定不能胡作非为了。但是城里有城里的规矩,城中有个专门管辖你们的城管(操作系统),人家让你休息就休息,让你工作就工作,毕竟摊位(CPU)就一个,每个人都要占这个摊位来工作,城里要工作的人多着去了。所以城管为了公平起见,它使用一种策略(调度)方式,给每个人一个固定的工作时间(时间片),时间到了就会通知你去休息而换另外一个人上场工作。另外,在休息时候

2020-09-08 19:37:19 384

原创 安装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 1019

转载 特征选择与正则化

前言在机器学习中,对原始数据特征的处理和选择是一个非常重要的环节,Andrew NG 大佬曾经说过这么一句话:数据和特征决定了机器学习的上限,而机器学习算法和模型只是逼近这个上限而已。特征选择的重要性和分类首先,我们在现实任务中经常会遇到维数灾难问题,这是由于属性(特征)过多造成的,若能从中选择出重要的特征,使得后续的学习过程仅需要在一部分特征上构建模型,则维数灾难问题会大为减轻。从这个意义上说,特征选择与特征降维有相似的动机;事实上,它们是处理高维数据的两大主流技术。第二个原因是,取出不相关特征往往

2020-06-02 16:43:13 2587

原创 将jupyter中的ipynb文件转换成PDF文件

前言如题,有些时候,在一些终端设备上,比如说平板或者手机上查看.ipynb文件会十分不便,我们需要启动jupyter服务端,在浏览器客户端才能查看翻阅.ipynb文件,所以我在私下里找了找是否可以将.ipynb文件转换成PDF文件,再拷贝到其它设备上阅览,这不,找到曲线救国的方法。大致操作为:① 先将.ipynb文件转换成HTML文件;② 再将HTML文件转换成PDF文件。那么这里需要借助到两个工具,一个是wkhtmltopdf,另一个是 pdfkit 。实现首先,去这个官网下载wkhtmlto

2020-05-30 11:43:16 1421

原创 Python中的源代码反编译成字节码及其解析

前言我之前的一篇博文Python程序的执行过程(解释型语言和编译型语言)给大家提及了Python中的pyc文件的诞生和它的作用,其实是为了提升Python解释器的效率,将py文件编译成了字节码,并保存到了pyc文件中。其中Python实际上是将源代码编译为虚拟机的一组指令(字节码,也叫pycodeobject),Python解释器就是该虚拟机的实现。Python虚拟机Cpython使用基于堆...

2020-04-22 16:47:37 2019 1

原创 十大排序算法(Python实现)

前言手撕算法,面试必备,你懂得!一、排序及其分类所谓排序就是将一组无序的记录序列调整为有序的记录序列。① 选择排序:主要包括简单选择排序和堆排序;② 插入排序:简单插入排序、希尔排序;③ 交换排序:冒泡排序、快速排序;④ 归并排序⑤ 非比较排序:计数排序、桶排序、基数排序属于非比较排序,算法时间复杂度O(n), 属于空间换时间。二、经典排序算法的实现2.1 选择排序从待排序的...

2020-03-14 23:55:00 269 1

翻译 Redis的缓存淘汰策略

前言本文主要强调Redis缓存淘汰策略的常见处理方案以及Redis缓存的过期机制,方便自己复习查阅。一、过期策略Redis的过期策略通过以下两种方法共同实现:① 定期删除:Redis 会将每个设置了过期时间的 key 放入到一个独立的字典中,以后会定期遍历这个字典来删除到期的 key。Redis 默认会每秒进行十次过期扫描(100ms一次),过期扫描不会遍历过期字典中所有的 key,而...

2020-03-09 12:26:07 689

翻译 关于泰勒公式

前言本文对泰勒公式的由来以及证明做一些简单的总结,方便自己在闲暇时品读。本人对泰勒公式的记忆只停留在大学时期的期末考试复习阶段,说来也是十分的惭愧。俗话说,温故而知新,可以为师矣,以下内容均来之知乎大神承志。泰勒公式的用途泰勒公式本质解决的是近似的问题,比如说我们有一个看起来很复杂的方程,我们直接计算方程本身的值可能会非常的麻烦。所以我们希望能够找到一个近似的方法来获得一个足够近似的值。...

2020-03-09 00:45:50 831

原创 (.text+0xba):对‘floor’未定义的引用

前言目前正在自学C语言,看的教材是清华大学出版社出版的C语言入门经典(第5版),由Ivor Horton 著,杨浩 译。在编辑并编译第74页的练习题4时报了如下的错误:后经网上查阅得知:在linux环境下编译C源代码时,需要链接数学库,参考解决方式:在编译语句后面加一个 -lm本人使用的是linux的发行版unbuntu 18.04 LTS,所以需要在编译包含使用了数学库函数的源代码时...

2020-02-09 12:03:59 1337

原创 关于Linux中编译C的源代码时报出警告的解决方案

前言目前正在自学C语言,看的教材是清华大学出版社出版的C语言入门经典(第5版),由Ivor Horton 著,杨浩 译。在编辑并编译第51页的示例代码时报了如下的警告:解决方案于是去网上查了相关资料,发现Ubuntu官网上是这样介绍Wformat选项的:NOTE: In Ubuntu 8.10 and later versions this option is enabled by de...

2020-02-06 20:25:42 940 2

翻译 助力实现机器学习高效特征选择的一款Python工具FeatureSelector

前言鉴于特征选择在机器学习过程中的重要性,数据科学家 William Koehrsen 近日在 GitHub 上公布了一个特征选择器 Python 类,帮助研究者更高效地完成特征选择。本文是 Koehrsen 写的项目介绍及案例演示文章。项目地址:feature_selector图为工农红军长征插图,前人栽树,后人乘凉,共勉。正文特征选择( feature selection )是查找...

2020-01-05 15:10:06 2049 1

原创 导致MySQL的查询语句效率低下的可能原因

前言本文来自于网络的拼凑,目的在于面试时可以让大家 pretend to be something (zhuang bi) 。一、执行语句执行效率低下的原因① SQL语句本身没那么慢,但是在某些特殊情况下会出现执行效率低下的问题。② SQL语句本身就很慢。二、解决方法1、针对第一种情况① 数据库正在刷新脏页:当我们要往数据库插入一条数据、或者要更新一条数据的时候,我们知道数据库会在...

2019-12-30 21:06:25 1209

原创 在Windows上使用modin

前言在 Windows 上安装使用 modin 时有一些坎坷,特此记录。Modin 是加州大学伯克利分校 RISELab 的一个早期项目,旨在促进分布式计算在数据科学领域的应用。它是一个多进程的数据帧(Dataframe)库,具有与 Pandas 相同的应用程序接口(API),使用户可以加速他们的 Pandas 工作流。在一台 8 核的机器上,用户只需要修改一行代码,Modin 就能将 Pa...

2019-12-26 12:09:48 2483 12

原创 Python程序提速神器--Numba快速上手指南

前言如果你在使用 Python 进行高性能计算, Numba 提供的加速效果可以比肩原生的 C/C++ 程序,只需要在函数上添加一行 @jit 的装饰。它支持 CPU 和 GPU ,是数据科学家必不可少的编程利器。我们知道,计算机只能执行二进制的机器码,C、C++ 等编译型语言依靠编译器将源代码转化为可执行文件后才能运行,Python、Java 等解释型语言使用解释器将源代码翻译后在虚拟机上执...

2019-12-23 20:37:19 2305

原创 MySQL学习笔记

启动、停止和重启MySQLsystemctl start mysqld.service 启动systemctl stop mysqld.service 停止systemctl restart mysqld.service 重启连接与断开服务器mysql -h 地址 -P 端口 -u 用户名 -p 密码跳过权限验证登录MySQLmysqld --skip-grant-tables...

2019-12-22 20:29:46 98

原创 矩阵乘法的本质

前言在机器学习算法中,矩阵相乘非常常见。对矩阵乘法这种底层操作进行分析,有时候可以帮助我们更好地理解算法。那矩阵乘法的本质到底该怎样理解呢?其实我们大体上可以从下面5个角度来理解。一、方程组的几何解释“矩阵最初的目的,只是为线性方程组提供一个简写形式”。一个矩阵可以看成方程组的系数。我们来看这样一个方程组:记系数矩阵 A=[2−111]A = \begin{bmatrix}2 &...

2019-12-19 20:16:59 2334

原创 安装shapely-geo包出现的问题

今天需要安装一个Python包叫做shapely,但是直接安装时是报了如下的错误:这种情况即是不能自动下载啦,那就下载压缩包,直接安装压缩包。访问地址:https://www.lfd.uci.edu/~gohlke/pythonlibs/在界面全局搜索:然后选择和自己安装的Python解释器版本和系统版本对应一致的 shapely 库下载,下载好之后,是一个后缀名为 whl 的文件,...

2019-12-02 19:54:00 957

转载 EM算法原理

前言EM 算法,全称 Expectation Maximization Algorithm。期望最大算法是一种迭代算法,用于含有隐变量(Hidden Variable)的概率参数模型的最大似然估计或极大后验概率估计。它是一个基础算法,是很多机器学习领域算法的基础,比如隐式马尔科夫算法(HMM), LDA 主题模型的变分推断等等。一、EM算法的思想我们经常会从被观察的样本数据中,找出样本的模型...

2019-11-25 22:49:30 603

转载 谱聚类(Spectral Clustering)的原理

前言谱聚类(spectral clustering)是广泛使用的聚类算法,比起传统的K-Means算法,谱聚类对数据分布的适应性更强,聚类效果也很优秀,同时聚类的计算量也小很多,更加难能可贵的是实现起来也不复杂。在处理实际的聚类问题时,个人认为谱聚类是应该首先考虑的几种算法之一。一、谱聚类概述谱聚类是从图论中演化出来的算法,后来在聚类中得到了广泛的应用。它的主要思想是把所有的数据看做空间中的...

2019-11-23 21:23:53 318

原创 DBSCAN密度聚类算法的原理及sklearn实现

前言DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的空间聚类方法)是一种很典型的密度聚类算法,和 K-Means , BIRCH 这些一般只适用于凸样本集的聚类相比,DBSCAN 既可以适用于凸样本集,也可以适用于非凸样本集。一、基于密度的聚类思想DBSCAN 是一种基于密度的聚类算法,...

2019-11-16 23:16:23 2942

转载 机器学习中的奇异值(SVD)分解

前言奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不仅可以用于降维算法中的特征分解,还可用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。接下来给大家介绍一下SVD的原理实现。一、特征值和特征向量首先我们来回顾一下特征值和特征向量的概念及性质:如果存在一个实对称矩阵 A∈Rn×nA \in \mathbb...

2019-11-14 22:10:38 354

空空如也

空空如也

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

TA关注的人

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