
机器学习
文章平均质量分 66
V丶Chao
记录自己的学习过程,时常反思,时常进步
展开
-
分布式机器学习
20221216 -(本文为在进行大量的实验过程中的一些思考,主要关注利用分布式平台进行实验的相关内容,内容暂时不加整理,想到什么写什么)原创 2022-12-16 17:08:15 · 894 阅读 · 0 评论 -
提升KNN的运行效率
20221005 -原创 2022-10-05 11:11:39 · 1574 阅读 · 0 评论 -
一维数据聚类
20220924 -在以往的学习中,通常聚类行为都是应用于高维数据,或者利用2维数据,最为实验性验证过程。但是最近遇到了一项任务,对某数据处理的结果进行处理,处理完之后,数据只有一维,如果数据内容比较简单,那么用直方图绘制之后,可以发现只有两个簇,而且距离也比较远。当然,这种情况比较少。那么这里其实引发一个问题,怎么来划分开两个类别,这也是我思考的问题。一开始的时候,我也不太理解,就想着利用聚类的方法。那么首先想到的就是kmeans这种方式咯。原创 2022-09-24 11:07:33 · 2940 阅读 · 0 评论 -
joblib嵌套式并行运行方式
20220811 -原创 2022-08-11 21:17:48 · 830 阅读 · 0 评论 -
KDE相关记录
20220809 -在使用KDE的过程中,涉及到一些参数选择,或者运行速度的问题。目前经过调试之后,对各个部分的内容都进行了涉及,这里记录一下。首先,KDE(kernel density estimate),是一种无参数的概率密度估计方法?(这里没说错吧,感觉好久没看,都忘了)那么对于这个方法来说,比较重要的参数就是bandwidth,选择这个参数,有很多方法,如果从机器学习的角度来说,那么直接使用交叉验证的方法即可,他验证的方式是比较最大似然估计的数值,具体代码如下。...原创 2022-08-11 20:07:01 · 486 阅读 · 0 评论 -
Sklearn通过precision_recall_curve获取F1最大值
之前的时候,由于并不是每次都出现这样的结果,所以并没有在意这个事情。现在大规模做实验的时候,发现经常报错,所以就谷歌查了查,本质上看这个报错大致也清楚,就是有些数值不满足除法条件,不过我尝试加了一个非常小的数,也并没有起到效果。来获取精确率和召回率,并且计算F1的最大值,通过阈值的问题,查看分类器的最高性能,代码如下,然后计算。,这个警告,然后输出最高的F1时,结果为nan。然后搜索了之后查到了对应的解决策略。平时为了查看分类器的性能,会利用。本质上,让除法能够避免这些数值。但是在这个过程中,会遇到。...原创 2022-07-18 09:30:22 · 1828 阅读 · 1 评论 -
嵌套交叉验证
202109110. 引言平时进行机器学习实验,大多数情况下都是使用train-test直接划分的方法,这种方法一般来说,对于数据量比较的数据集,影响不是很大,但是对于数据集比较小的数据集来说,就有所偏颇。(我记得这是某个书上说的,深度学习的课程上也有所提及)。而对于数据量比较少的数据集,更多的是用K折交叉验证。当然,这种方法,本质上也是一样的。对于编码实现来说,基本上就是几行代码的事情。而且,平时一般来说,还会在训练集中划分一个验证集,通过验证集的效果来进行具体的参数选择。但是如果这些代码都自.原创 2021-09-11 21:35:43 · 1747 阅读 · 3 评论 -
当神经网络的模型还不如决策树的效果好
20210524 -0. 引言有时候做实验,一般采用比较简单的分类算法来测试一下这个数据怎么样,比如决策树,随机森林,因为代表编码比较简单,直接sklearn几行代码就完事了。但是最终在测试神经网络的时候,经常性的发现,神经网络的效果还不如决策树好。其实这个结论,我也不是非常惊讶,我就是有点好奇是为什么。现在各种论文里大肆鼓吹神经网络,深度学习,当然对于图像,语音等领域,神经网络提升的效果必然是非常好的。但是,有时候在有些领域,也有人为了发论文来使用神经网络,实际上他的效果用普通的机器学习算法也能达到原创 2021-05-24 21:21:51 · 3080 阅读 · 9 评论 -
机器学习可解释性
20210508 -(随笔,后续有时间在对概念有了深入理解之后再进行整理)0. 引言今天不想写论文,就想起了之前关注的一个内容,机器学习的可解释性。在之前的时候,或多或少了解这个东西,发现他更多的是从特征的角度来解释,这个特征怎么影响了模型。但是我一直理解不了的就是,这个概念跟以往机器学习中的特征选择又有什么区别。今天看了一些文章之后,感觉似懂非懂;但是本质上还是没有解决这个关键疑惑。但是他们两者肯定是有不同的,不然也不可能看了这么多文章之后都没有提到。可能是我理解的角度不太准确。1. 参考的文章原创 2021-05-08 22:18:54 · 499 阅读 · 0 评论 -
plt散点图多颜色图例
20210320 -在使用plt.scatter进行散点图绘制的时候,通过直接指定颜色,可以直接获得结果,大致代码如下:plt.scatter(X[:,0], X[:,1], c = y)但是如果这样的话,在标注图例的时候,就无法标注了,直接使用plt.legend()的话,会提示没有标签信息;而即使将标签数据在plt.scatter的函数中传入,也并不能显示。对于这个问题,在百度上进行了搜索,发现好多人有这种需求,而如果要解决这种问题,那么只能是采用循环的方式,通过循环的方式在每次绘图的时候传递原创 2021-03-20 22:03:00 · 4315 阅读 · 1 评论 -
Matplotlib 3D绘图
20210318 -利用matplotlib进行3D画图可以实现对三维数据的可视化,而使用3D绘图稍有不同,下面进行具体的描述,本篇文章主要参考《Python三维绘图–Matplotlib》,3D绘图是需要指定相应的选项,代码如下:fig = plt.figure(figsize = (12, 12))ax1 = plt.axes(projection='3d')ax1.scatter3D(test_features[:,0],features[:,1],features[:,2],c=train_原创 2021-03-18 14:48:05 · 724 阅读 · 0 评论 -
tSNE的思考
20210312 -()0. 引言虽然一直在使用TSNE进行数据的可视化,但是都没有具体探究过这个算法的具体原理;同时呢,有时候也会遇到一些很奇葩的数据。在网上看别人进行TSNE的实际操作,每次画出来数据都特别好看,但是为什么到了我这里的数据,就看起来非常难看?!本篇文章记录一些这方面的内容来进行思考。1. 具体原理关于他的具体原理,这里不再过多的去看大量的文章,这里找到一个文章,虽然在数学的部分不怎么理解,但是从他的描述上,我感受到这样一种思想,本质上可视化的过程,是要找到一种映射,这种映射实原创 2021-03-12 17:01:36 · 2861 阅读 · 0 评论 -
Mahalanobis距离的计算
20210306 -0.引言通过scipy的距离库[1],可以方便的计算向量空间中两个点的距离,例如欧式距离,cos距离等,使用方法可以见[2]。而这个函数cdist在计算该距离的时候,通过集中方法,结果上却稍有不同,在这里记录一下,主要研究在数据量比较大的时候如何计算,如果仅仅是两个点的距离,直接使用from scipy.spatial.distance import mahalanobis即可,这要是为什么要引入cdist的原因。1. cdist如果是使用cdist的话,使用方法跟欧式距离没有什原创 2021-03-06 21:44:10 · 770 阅读 · 0 评论 -
是使用自己的方差,还是Numpy的?!
2017/04/20http://www.cnblogs.com/plwang1990/p/3774744.html这里是用数据做的实验,的却是numpy的比较快。(数据集大的时候,他们肯定是做了相应的优化)2018/10/01哪天无意中,想去看他的随机函数的源码,但是进去看了之后发现那个是一个.so文件。就跟我原来的时候,想去看aes加密的源码时候一样。这个不知道这个.so是不是进...原创 2017-04-20 11:59:00 · 267 阅读 · 0 评论 -
numpy的相关使用方法
20210211 -引言之前的时候,一些关于numpy的内容都记录在另一篇文章中《pandas及numpy - 常用操作》,里面大部分都是pandas的操作,但是最近使用numpy比较多了之后,也积累了一些内容,所以这里专门记录一下。内容列表拼接空数组距离的计算向量的重复生成数组逆序1. 拼接空数组最近的实验中,需要按照列来拼接相应的结果,但是一开始需要一个空数组来指定,代码逻辑就是创建一个空数组,然后在训练中,按照列来拼接,使用的函数就是np.hstack。但是一开始的时候需要创建原创 2021-02-11 21:36:40 · 399 阅读 · 0 评论 -
半监督学习简单综述(标签化过程)
20210117 -0. 引言(本篇文章算是自己阅读《An overview of proxy-label approaches for semi-supervised learning》过程中的记录,将其中的观点记录下来;其中的内容,可能并非原文中的内容,而是自己的思考;读者如果有兴趣,最好是阅读原文,更好体会作者的意思)无监督的相对于有监督的方法来说,准确率不尽人意,甚至于在某些场景下,可能会非常低。所以,标签的存在,导致这两种方法可能差别特别大。而实际上,很多问题的却都是无监督的,因为数据采集起原创 2021-01-19 10:19:29 · 2362 阅读 · 0 评论 -
思考:机器学习方法性能不好怎么办?!
20210110 - 起笔于10点29分0. 引言我觉得这个问题很值得思考,你跑了一个算法,然后发现算法性能不好,这个时候该怎么办?在以前的时候,阅读某些材料时,看到过这样的说法:如果算法结果不好,可以尝试换一个算法,因为不同的算法他们可能迎合的数据假设或者说数据特点不一样。换言之,就是换一种不同类型的算法。当然,还有就是对算法的参数进行调优。但是,如果你尝试了好多算法,而且你得到了你调优后的最优算法,那么这个时候,你该怎么办?!这个时候的性能还是不能符合你的要求,不能满足实际场景的需求,应该怎么办。原创 2021-01-10 10:49:43 · 406 阅读 · 0 评论 -
模糊聚类
(起笔于20200109 16点15分)0. 引言聚类方法在无监督学习中具有非常重要的意义,由于没有标签的存在,而我们又有将数据分成不同组的需要,所以就引出了聚类算法,例如KMeans,DBSCAN等。其中KMeans作为一种非常有效的方法,被广泛使用,该种方法通过在样本空间中,以缩小各个样本与类别(类别数目需要事先指定)中心的距离作为优化目标,最后实现聚类的效果。平时的使用过程中,我们也会将聚类算法作为一种数据前期探究过程的一种方法,通过这种方法查看数据的大致分布等等内容。但前文提到的KMeans算原创 2021-01-09 16:35:46 · 1329 阅读 · 0 评论 -
sklearn的决策树能够处理字符串数据吗吗?
20201229 -引言我记得很久之前我曾经遇到过这种问题,一开始我还很纳闷,一般情况下,输入到分类器的数据应该都是数值型的,对于字符串型的他应该处理不了,但是当时我却得出了结论,sklearn中的决策树,能够帮助我讲这些数据处理。但是,我感觉,可能是有一些记忆的偏差。那么这里就来具体描述一下。问题问题来源于,最近处理一部分数据的时候,因为数据中含有标签类型的数据,但是直接输入到决策树模型中,sklearn中居然报错了,很费解,因为基于我之前的认知,决策树应该帮我把这部分编码好了,而且从决策树的原创 2020-12-29 11:20:55 · 5293 阅读 · 1 评论 -
《Hands-On Machine Learning with Scikit-Learn and TensorFlow》 第三章阅读笔记 - 机器学习分类过程
20201107 -0. 引言前端时间重新阅读了《Hands-On Machine Learning with Scikit-Learn and TensorFlow》的第三章分类过程,这里将重点内容记录一下。与回归过程相比,分类过程重点将某条记录处理后输出一个类别,而常用的一些算法,例如SVM,逻辑回归等,都是为二分类而生,那么就需要通过一定的手段转化来实现多类别分类;同时,相对于回归过程,分类过程所使用的性能指标也有所不同,本篇文章将以此展开。1. 性能评估性能评估是机器学习过程中的重点过程,原创 2020-11-08 08:46:03 · 936 阅读 · 5 评论 -
机器学习代码的书写
2019/04/17最近在进行实验的过程中,一直都真是实验型的代码,走一步看一下输出的结果。特别是多个分类器的时候,更是每个分类器单独写这个东西。很早就已经接触到了pipline的概念,只不过我一直没用过,也没有具体的实践过。(还是没有彻底理解,为什么要用这个东西,有的说这样可以避免数据泄露,并且就是整个流程都是自动化的,不过这个说法并没有说服我,可能后续这方面的好处还是得自己慢慢来发现。)...原创 2019-04-17 22:34:50 · 783 阅读 · 0 评论 -
一类学习(OCSVM)
20201102 -0. 引言我记得我第一次接触一类学习的时候,是在一本讲解异常流量的书上。大概18年的时候,当时有一个需求,就是所处的场景下,只能拥有一类数据,而其他类的数据,要不获取不到,要不获取了也不具备什么代表性,总体上就是这么一个场景。由此接触到了一类学习,而一类学习中,比较著名的就是基于SVM的解决方法,关于SVM的讲解,可以看博客中另外一篇文章《支持向量机SVM的学习》,那么本篇文章就来具体讲讲一类SVM是一个什么套路。本篇文章主要参考了两篇国外的博客来进行学习,分别是数学原理角度和代码原创 2020-11-02 21:55:06 · 10415 阅读 · 5 评论 -
支持向量机SVM的学习
20201102 -0. 引言支持向量机作为一种常用的机器学习算法,应用非常广泛,原始的SVM只能支持线性数据,而通过核函数的方式,可以使其应用于非线性数据。之前学习过SVM的具体过程,也在sklearn中进行过调优,但是都没有记录。而且上次学习已经是很久之前了,这次重新翻出来,了解了解具体原理,但是不对其中深层次的数学过程进行推导,能够明白各个公式是什么作用即可。本篇文章先从《Hands-On Machine Learning with Scikit-Learn and TensorFlow》这本书原创 2020-11-02 12:17:46 · 1536 阅读 · 0 评论 -
核方法学习
20201101 -0. 引言核方法(kernel methods,核函数、核技巧)是一种能够将在原始数据空间中的非线性数据转化到高维线性可分的方法。而最开始学习机器学习的时候,也是在SVM中接触到的。不过在那个时候之后,就很少从理论层面来理解这个部分的内容,毕竟平时就是调参的过程。这次趁着看论文的机会,把这部分内容重新记录一下,网上文章很多,直接上去就是一顿公式,一顿理论上来,东西没学会,分分钟劝退。本次在谷歌搜索了一些文章,由浅入深,最后如果有时间再通过理论学习来巩固,以下内容都记为核方法。1.原创 2020-11-01 16:53:11 · 3691 阅读 · 1 评论 -
HMM的学习
20201012 -0. 引言在学习《异常点检测》这本书的时候,在第十章的内容“离散数据的异常检测”记录中,涉及到隐马尔可夫模型(HMM)的学习,本篇文章具体记录HMM的学习过程。因为《异常点检测》书中关于这部分内容过于简短,本文主要学习文章[1]作为参考。1. HMM概述马尔可夫过程是一个随机过程,其未来状态和过去的状态有关,其中一阶的马尔可夫过程仅仅和上一时间的状态有关,如果状态空间是离散空间,该过程可以被称为马尔可夫链。P(Xn+1=x∣X1=x1,X2,=x2,...,Xn=xn)=P(X原创 2020-10-14 12:03:51 · 715 阅读 · 0 评论 -
思考:HMM模型怎么应用到安全领域中?
20201011 -本篇文章是给出一个引子,之前的时候在一些文章中看到过他们采用HMM的方式来进行安全数据中的异常检测,如果是那种类似用户行为的方式,我还能理解,但是我记得我看到过一篇文章说的是利用HMM进行web请求的建模,然后识别恶意的请求。但是这种形式应该如何建模呢?或者说,怎么将这些内容利用HMM的形式给表达出来呢?虽然我知道可能隐藏的内部变量是通过异常和正常来区分,但是具体来实现还是不是非常明确。这个是挺值得思考的过程,在以往机器学习的经验中,都是利用那种关系型数据,或者是直接利用深度学习就原创 2020-10-11 21:17:49 · 516 阅读 · 0 评论 -
最大期望值(EM算法)学习
20201008 -0. 引言在学习HMM的训练算法中,其使用了EM算法,而不理解EM算法的话,实际上连很多参数都不明白,就更不用提理解了,因此必须首先学习一下EM算法。我最初学习机器学习的时候,当时很多算法都是理解了,然后能够用python的库使用了,没有具体深入,能明白大概是什么意思,这也是大多数实战书上的流程。这次就趁这个这个机会,把这部分内容来学习一下。在学习EM算法的过程中,实际上我参考了非常多的资料,因为书上的讲解例子都是从数学的角度出发,都太过抽象,所以本次学习过程中,都是参考了一些国外原创 2020-10-08 16:54:26 · 2673 阅读 · 2 评论 -
异常检测 - OCSVM与混合高斯分布
20200924 -0. 引言前面的文章《孤立森林的简要记录》中描述了孤立森林的简单原理,而且之前也简单测试过这种方法的性能,只不过最终没有得到非常好的效果。本篇文章中记录一下另外两种方法。一般来说,异常检测是一种无监督的学习方法,当然也可以转化为监督学习,但是我个人感觉转化的方式不好,原因主要是你需要将异常进行标记,但是异常应该很难标记,特别是数量比较少的情况下。所以本文记录两种无监督的方法:一类SVM和混合高斯分布。1. OCSVM(一类SVM)1.1 基本原理关于具体原理部分可以参考文章[原创 2020-09-24 09:32:47 · 2036 阅读 · 0 评论 -
孤立森林的简要记录
20200920 -0. 引言在之前的时候,进行一些任务分类的时候,使用过孤立森林来实现一些代码,但是也没有具体来深究原理,只知道这个跟随机森林有些像,都是决策树的一种集成方式,最近正好看到了这部分内容,就正好记录一下,本部分内容主要是有文章[1]中阅读后记录。1. 孤立森林的理论背景1.1 孤立森林是什么孤立森林可以用于异常点检测孤立森林是一种无监督学习方法孤立森林是一种集成学习方法1.2 孤立森林所使用的假设异常点在整个实例中的数量上占比比较小他们的某些属性与正常点有差别以原创 2020-09-20 20:34:26 · 635 阅读 · 0 评论 -
大规模数据的PCA降维
20200810 -0. 引言最近在做的文本可视化的内容,文本处理的方法是利用sklearn的CountVer+Tf-idf,这样处理数据之后,一方面数据的维度比较高,另一方面呢,本身这部分数据量也比较大。如果直接使用sklearn的pca进行降维,会很慢,而且pca也没有n_jobs来支持多线程工作。不过,我看到spark中已经支持的pca了,所以希望通过spark来实现这部分内容。1. spark的PCA算法1.1 官方使用示例>>> from pyspark.ml.lina原创 2020-08-10 16:41:52 · 2094 阅读 · 0 评论 -
ROC曲线与混淆矩阵的绘制
20200813 -引言ROC曲线的绘制过程混淆矩阵的绘制问题1. ROC曲线的绘制ROC曲线的绘制绘制需要分类器能够返回相应的分类概率值。from sklearn.metrics import roc_curvens_fpr, ns_tpr, _ = roc_curve(testy, ns_probs)完整代码来自[1]。[4]中说明了如何修改风格来使ROC曲线更好看。对于多分类情况下的roc曲线,有两种方法可以处理,分别对应函数的两种参数,具体实现可以看看[2]。2. 混淆矩原创 2020-08-13 22:29:36 · 3781 阅读 · 0 评论 -
sklearn库使用问题汇总
20200813 -引言打印分类报告问题1. 打印分类报告在分类过程结束之后,需要反馈分类效果,使用的函数是classification_report[1]。函数的全部分信息如下sklearn.metrics.classification_report(y_true, y_pred, *, labels=None, target_names=None, sample_weight=None, digits=2, output_dict=False, zero_division='warn')原创 2020-08-13 22:15:54 · 862 阅读 · 0 评论 -
matplotlib绘图问题
20200813 -引言这里记录以下关于绘图过程中,使用matplotlib时遇到的一些问题。风格控制问题1. 风格控制文章[1]中列举了一些风格控制的方式,不过这部分我一直没关注过,一直都是使用的默认风格。一次使用过程中,在修改风格之后,希望还原最开始的风格,可以使用下面的命令。matplotlib.rcdefaults()参考文章[1]matplotlib–修改样式...原创 2020-08-13 22:09:32 · 1732 阅读 · 0 评论 -
seaborn - 画图的一些问题
20200808 -原创 2020-08-08 19:59:56 · 843 阅读 · 0 评论 -
pandas及numpy - 常用操作
20200808 -这里主要记录一些关于pandas的基础操作,一些容易忘记,但偶尔会使用的操作。操作列表数据的读取数据切片数据的画图操作字符串操作修改数据删除列(行)数据显示不全(行)根据规则修改列数据将某列转换为时间索引1. 数据的读取如果有文件是已经按照分隔符分割好的,直接使用read_csv即可;几种特殊情况:默认使用,作为分隔符,想修改的话在sep参数中指定;默认第一行是列名,但如果没有的话,要指定(header = None,names = [‘a’,‘b’]原创 2020-08-08 19:47:22 · 1314 阅读 · 0 评论 -
特征选择
2019/03/06问:如果我用某种算法得到的特征特征选择结果,可以用给别的分类器吗?问:特征选择一定能现在说一下我目前对特征选择的理解。特征选择:区别于特征抽取,通过选择原始特征数据的子集,以提高后面分类器的性能,或者加深整体上对问题的理解(某特征或者某属性对输出变量的影响)在我看来,选择特征的过程,就是评估特征的过程,哪一个特征对输出变量的影响大,就选择哪一个;这个时候就涉及到...原创 2019-03-06 17:03:08 · 596 阅读 · 0 评论 -
kaggle资源
2019/03/07这里记录几个认为比较好的kaggle kernel,有些是数据分析,有些是针对算法。1.COMPREHENSIVE DATA EXPLORATION WITH PYTHON这个kernel通过对变量分析(他的数据集都是数值型的),利用图显示了一些相关的关系;比较有意义的事他中间画的那个正太分布的曲线,不过我没看懂;另外就是x轴是类似类别式的变量,画的箱线图;还有就是他...原创 2019-03-07 23:09:03 · 544 阅读 · 0 评论 -
matplotlib和seaborn
2019/04/05文章[1]中对这两个库进行简单的介绍,主要是matplotlib,以前也接触过这个东西的教程,但没有和seaborn一起看过。从两种不同的API开始说起,然后利用一些简单的例子介绍了各个部分的接口;非常简单的入门教程。他最后的那个例子挺不错,但是我没看懂他是怎么画出来右边那个图的。另外,他的另一篇文章介绍了绘制边界。https://towardsdatascience....原创 2019-04-05 10:43:24 · 640 阅读 · 0 评论 -
PCA的理解
2019/04/10(可能有些解释或者内容是不对的,一定要判断下2019/04/10)引言就目前来看,我大致理解了PCA的工作原理,但仍然有很多疑惑,先抛开这些不说,来整理一下我的认知。要完全理解这个东西,需要的理论知识主要是统计学中的方差概念和线性代数中的特征向量和特征值。认知PCA作为一种降维的方式,通过找到数据方差最大的方向,作为新的特征,他本身并不代表着降维,需要你来指定需要多...原创 2019-04-10 17:27:27 · 743 阅读 · 0 评论 -
集成学习
2019/04/17这两天把集成学习的内容看了一下,而且通过实验的形式进行了实际代码的操作,这部分的调优,做的工作还可以。下面来总结下最近看到的一些文章。随机森林参数调优[1]采用了两种方式,随机搜索和网格搜索,代码可以直接使用。随机森林的参数对性能的影响[2]这篇应该是我最开始看的那篇,一开始看过他的那篇类似调整决策树的内容。集成学习的分类,附简单代码[3][4][5][6]按...原创 2019-04-17 23:18:24 · 546 阅读 · 0 评论