
python机器学习手写算法系列
文章平均质量分 89
python机器学习手写算法系列,逻辑回归,线性回归,决策树,GBDT,kmeans,page rank等
织网者Eric
数据挖掘与分析,英语教育
展开
-
python机器学习手写算法系列——RANSAC(随机抽样一致)回归
本文旨在通过在最简单的一元一次方程中运用RANSAC,编写代码,来学习RANSAC算法。RANSAC算法RANSAC[1]算法,全程是Random Sample Consensus(随机抽样一致)。它采用迭代的方式从一组包含outliers的数据中估算出回归模型。RANSAC是一个非确定性算法,因为它是“随机抽样”的。它原来是计算机视觉的算法,后来被用来做线性回归。RANSAC回归用最少的数据点训练模型,基本算法总结如下:选取的最少的数据点,作为样本。用样本和基础回归器训练模型。根据ϵ\ep原创 2021-06-27 15:23:34 · 11349 阅读 · 2 评论 -
扩展Scikit-Learn -- EuroPython 2014 笔记
本文是EuroPython 2014 嘉宾 Florian Wilhelm 的讲座 《Extending Scikit-Learn with your own Regressor》的笔记。我写笔记是因为全部翻译比较费时间,而且很多英文句子翻译过来就很怪了。Theil Sen 回归嘉宾首先介绍了Scikit-learn和最小二乘法线性回归。这里,最小二乘法有个问题,它对异常值(Outliers)比较敏感。解决的方法是使用Theil Sen算法。Theil Sen算法的思想是。用斜率的中位数替换斜率的原创 2021-06-19 23:07:13 · 678 阅读 · 2 评论 -
python机器学习手写算法系列——Gaussian Mixture Model (1d)
本文,就像本系列的其他文章一样。旨在通过阅读原论文+手写代码的方式,自己先把算法搞明白,然后再教其他人。手写代码除了可以验证自己是否搞明白以外,我会对中间过程做图。这样,我可以通过图直观的验证算法是否正确。而这些图,又成为写文章时候的很好的素材。什么是 Gaussian Mixture ModelGMM,简单的说,真的就是几个Gaussian分布混合在一起。把这些Gaussian分布找出来的过程,就是GMM。一般来说,可以认为GMM是聚类算法,但是scikit-learn把GMM把他放在了mixture原创 2021-01-09 12:51:33 · 2988 阅读 · 0 评论 -
python机器学习手写算法系列——DBSCAN聚类
本文,就像本系列的其他文章一样。旨在通过阅读原论文+手写代码的方式,自己先把算法搞明白,然后再教其他人。手写代码除了可以验证自己是否搞明白以外,我会对中间过程做图。这样,我可以通过图直观的验证算法是否正确。而这些图,又成为写文章时候的很好的素材。什么是 DBSCANDBSCAN,全称是 Density-Based Scan。 故名思意,就是通过密度扫描。DBSCAN是一种聚类算法,和KMeans相比,他不需要指定cluster的数量。他的主要参数有两个,半径和邻居的数量。Scikit-Learn中,半径原创 2021-01-02 15:41:05 · 8878 阅读 · 1 评论 -
python机器学习手写算法系列——CBLOF异常检测
我目前在做一些和异常检测相关的工作,并参加到了pyod里面的CBLOF算法的开发。所以,我对于CBLOF的论文以及pyod里面的实现都非常熟悉。对于手写算法系列的文章。有兴趣的可以研究一下代码。时间紧的也可以跳过代码不看。但是,即使你并不想看代码,也建议你来看我的文章。毕竟,我是实现了这些代码的,说明我自己首先理解了这些算法,我才好意思写文章。而且在实现的过程中,就像本文一样,可以把一些中间步骤都作图打印出来。异常检测异常检测一般来说是一种无监督学习的方法。他在没有标签的情况下,利用各种算法来区分正常原创 2020-09-20 23:05:40 · 3926 阅读 · 4 评论 -
python机器学习手写算法系列——KNN分类
现实当中,富人的邻居可能也是富人,穷人的邻居可能也是穷人。如果你的邻居都是富人,那么,你很可能也是富人。基于此,我们有了KNN算法。KNN的全名是K-Nearest Neighbors,即K个最近的邻居。他通过距离被预测点最近的K个邻居来预测被预测点。如下图所示,绿色的圆形是被预测点。它周围有红色三角和蓝色正方形。如果我们取K为3,那么,它的三个邻居是两个红色三角和一个蓝色正方形。因为它的邻居里面,最多的就是红色三角,所以我们预测它也是红色三角。(图一)首先,我们载入数据。这里我们以iris数据集为原创 2020-09-13 18:33:41 · 1115 阅读 · 1 评论 -
python机器学习手写算法系列——优化器 Optimizers
本文用一个很简单的一元线性回归问题为例,实现了梯度下降(SGD), Momentum, Nesterov Accelerated Gradient, AdaGrad, RMSProp and Adam.梯度下降我们首先回顾一下梯度下降,以本系列第一篇文章《python机器学习手写算法系列——线性回归》为例。目标函数:y=f(θ,x)y=f(\theta,x)y=f(θ,x)线性回归目标函数为:y=ax+b+εy=ax+b+εy=ax+b+εy^=ax+b\hat{y}=ax+by^=ax+原创 2020-08-16 20:38:39 · 3013 阅读 · 4 评论 -
python机器学习手写算法系列——GBDT梯度提升分类
梯度提升(Gradient Boosting)训练一系列的弱学习器(learners),每个学习器都针对前面的学习器的伪残差(而不是y),以此提升算法的表现(performance)。维基百科是这样描述梯度提升的梯度提升(梯度增强)是一种用于回归和分类问题的机器学习技术,其产生的预测模型是弱预测模型的集成,如采用典型的决策树 作为弱预测模型,这时则为梯度提升树(GBT或GBDT)。像其他提升......翻译 2020-04-19 21:18:45 · 4140 阅读 · 0 评论 -
python机器学习手写算法系列——贝叶斯优化 Bayesian Optimization
Bayesian Optimization 贝叶斯优化在无需求导的情况下,求一个黑盒函数的全局最优解的一系列设计策略。(Wikipedia)最优解问题最简单的,获得最优解的方法,就是网格搜索Grid Search了。如果网格搜索开销稍微有点大,可以尝试随机搜索Random Search。如果是凸函数Convex Function,我们可以用Gradient Descent。大量的机器学习算...原创 2020-03-29 18:10:33 · 8114 阅读 · 4 评论 -
python机器学习手写算法系列——PageRank算法
Page RankPage Rank 是谷歌搜索的网页排名算法。PageRank是以谷歌创始人Larry Page命名的。(只能说是个巧合,敢不敢叫Larry Rank)算法PageRank算法假设,一个用户在互联网上随机跳转到别的page。他要求用户最终到达某个page的概率。例子我找到的最好的例子就是下面这个:PageRank Algorithm - Example(YouTube...原创 2019-12-14 10:26:36 · 4893 阅读 · 0 评论 -
python机器学习手写算法系列——梯度提升回归
Prerequisite 必备的知识要理解GBDT,首先要理解DT和线性回归。可以参考一下文章:《python机器学习手写算法系列——线性回归》《python机器学习手写算法系列——决策树》概述GBDT全称Gradent Boosting Decision Tree, 也叫Gradient Boosting Tree。GBDT是一种ensemble方法。所以如果你使用sklearn,可...翻译 2019-09-08 11:44:16 · 6472 阅读 · 2 评论 -
python机器学习手写算法系列——线性回归
本文致力于手把手教你实现一个最简单的机器学习模型--一元线性回归模型。短短的14行代码,就实现了。希望读完以后,你也能自己实现它。并对线性回归有更好的了解,或者从不了解到了解。原创 2019-05-06 19:51:29 · 84407 阅读 · 36 评论 -
python机器学习手写算法系列——决策树
本系列另一篇文章《线性回归》https://blog.youkuaiyun.com/juwikuang/article/details/78420337本文源代码地址:https://github.com/juwikuang/machine_learning_step_by_step你也可以直接看源代码,我用了jupyter notebook,源代码中有详细的说明。数据集数据来源于我的Github...原创 2019-04-16 15:39:51 · 12074 阅读 · 0 评论 -
python机器学习手写算法系列——逻辑回归
从机器学习到逻辑回归今天,我们只关注机器学习到线性回归这条线上的概念。别的以后再说。为了让大家听懂,我这次也不查维基百科了,直接按照自己的理解用大白话说,可能不是很严谨。机器学习就是机器可以自己学习,而机器学习的方法就是利用现有的数据和算法,解出算法的参数。从而得到可以用的模型。监督学习就是利用已有的数据(我们叫X,或者特征),和数据的标注(我们叫Y),找到x和y之间的对应关系,或者说是函...原创 2019-05-18 21:19:06 · 11543 阅读 · 4 评论 -
python机器学习手写算法系列——kmeans聚类
从机器学习到kmeans聚类是一种非监督学习,他和监督学习里的分类有相似之处,两者都是把样本分布到不同的组里去。区别在于,分类分析是有标签的,聚类是没有标签的。或者说,分类是有y的,聚类是没有y的,只有X。所以,聚类只能根据X的特征本身,把样本分布到不同的组。比如,我们有个成语,叫物以类聚,人以群分。我们可以把人分成男人和女人,这里分组的根据是人本身的属性-性别。而性别是知道的,而不需要用一...原创 2019-05-24 14:01:22 · 9489 阅读 · 5 评论