scikit-learn系列八:PCA
项目地址传送门,欢迎 star 和 fork !1. PCA概述PCA算法全称是 Principal Component Analysis,即主成分分析算法。它是一种维数约减(Dimensionality Reduction)算法,即把高维度数据在损失最小的情况下转换为低维度数据的算法。显然,PCA可以用来对数据进行压缩,可以在可控的失真范围内提高运算速度。。
2. PCA算法原理我们先从最简单的情况谈起,假设需要把一个二维数据降维成一维数据,要怎么做呢?如下图所示。
我们可以想办法找出一个向量 $u^{(1)}$ ,以便让二维数据的点(方形点)到这个向量所在的直线上的平均距离最短,即投射误差最小。
这样就可以在失真最小的情况下,把二维数据转换为向量 $u^{(1)}$ ,所在直线上的一维数据。再进一步,假设需要把三维数据降为二维数据时,我们需要找出两个向量 $u^{(1)}$ 和 $u^{(2)}$ ,以便让三维数据的点在这两个向量决定的平面上的投射误差最小。
如果从数学角度来一般地描述PCA算法就是:当需要从n维数据降为k维数据时,需要找出k个向量
$u^{(1)}$ ...
scikit-learn系列七:朴素贝叶斯
项目地址传送门,欢迎 star 和 fork !1. 朴素贝叶斯概述贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。朴素贝叶斯(Naive Bayers)算法是一种基于概率统计的分类方法。它在条件独立假设的基础上,使用贝叶斯定理构建算法,在文本处理领域有广泛的应用。
2. 贝叶斯理论 & 条件概率2.1 贝叶斯理论我们现在有一个数据集,它由两类数据组成,数据分布如下图所示:
我们现在用 p1(x,y) 表示数据点 (x,y) 属于类别 1(图中用圆点表示的类别)的概率,用 p2(x,y) 表示数据点 (x,y) 属于类别 2(图中三角形表示的类别)的概率,那么对于一个新数据点 (x,y),可以用下面的规则来判断它的类别:
如果 p1(x,y) > p2(x,y) ,那么类别为1
如果 p2(x,y) > p1(x,y) ,那么类别为2
也就是说,我们会选择高概率对应的类别。这就是贝叶斯决策理论的核心思想,即选择具有最高概率的决策。
2.2 条件概率如果你对 p(x,y|c1) 符号很熟悉,那么可以跳过本小节。
有一个装了 ...
scikit-learn系列六:SVM
项目地址传送门,欢迎 star 和 fork !1. SVM概述支持向量机(Support Vector Machines, SVM): 是一种监督学习算法。在工业界和学术界都有广泛的应用。特别是针对数据集较小的情况下,往往其分类效果比神经网络好。
支持向量(Support Vector) 就是离分隔超平面最近的那些点。
机(Machine) 就是表示一种算法,而不是表示机器。
2. SVM原理SVM的原理就是使用分隔超平面来划分数据集,并使得支持向量(数据集中离分隔超平面最近的点)到该分隔超平面的距离最大。其最大特点是能构造出最大间距的决策边界,从而提高分类算法的鲁棒性。
要给左右两边的点进行分类,明显发现: 选择D会比B、C分隔的效果要好很多。
2.1 寻找最大间隔点到超平面的距离
分隔超平面函数间距: $y(x)=w^Tx+b$
分类的结果: $f(x)=sign(w^Tx+b)$ (sign表示>0为1,<0为-1,=0为0)
点到超平面的几何间距: $d(x)=(w^Tx+b)/||w||$ ($||w||$表示w矩阵的二范数=> $\ ...
scikit-learn系列五:决策树
项目地址传送门,欢迎 star 和 fork !1. 决策树概述决策树(Decision Tree)算法是一种基本的分类与回归方法,是最经常使用的数据挖掘算法之一,它的预测结果容易理解,易于向业务部门解释,预测速度快,可以处理离散型数据和连续型数据。
决策树模型呈树形结构,在分类问题中,表示基于特征对实例进行分类的过程。它可以认为是 if-then 规则的集合,也可以认为是定义在特征空间与类空间上的条件概率分布。
决策树学习通常包括 3 个步骤: 特征选择、决策树的生成和决策树的修剪。
2. 决策树原理一个叫做 “二十个问题” 的游戏,游戏的规则很简单: 参与游戏的一方在脑海中想某个事物,其他参与者向他提问,只允许提 20 个问题,问题的答案也只能用对或错回答。问问题的人通过推断分解,逐步缩小待猜测事物的范围,最后得到游戏的答案。
一个邮件分类系统,大致工作流程如下:
123首先检测发送邮件域名地址。如果地址为 myEmployer.com, 则将其放在分类 "无聊时需要阅读的邮件"中。如果邮件不是来自这个域名,则检测邮件内容里是否包含单词 "曲棍球" , 如果包含则将邮件归类到 ...
scikit-learn系列四:逻辑回归
项目地址传送门,欢迎 star 和 fork !1. Logistic 回归概述Logistic 回归 或者叫逻辑回归,虽然名字有回归,但是它是用来做分类的。其主要思想是: 根据现有数据对分类边界线 (Decision Boundary) 建立回归公式,以此进行分类。
2. 算法原理假设有一场足球赛,我们有两支球队的所有出场球员信息、历史交锋成绩、比赛时间、主客场、裁判和天气等信息,根据这些信息预测球队的输赢。假设比赛结果记为y,赢球标记为1,输球标记为0,这就是典型的二元分类问题,可以用逻辑回归算法来解决。
与线性回归算法的最大区别是,逻辑回归算法的输出是个离散值。
2.1 预测函数需要找出一个预测函数模型,使其值输出在[0,1]之间。然后选择一个基准值,如0.5,如果算出来的预测值大于0.5,就认为其预测值为1,反之,则其预测值为0。
选择Sigmoid函数(也称为Logistic函数,逻辑回归的名字由此而来)$$g(z)=\frac{1}{1+e^{-z}}$$来作为预测函数,其中e是自然对数的底数。以z为横坐标,以g(z)为纵坐标,画出的图形如下所示:
从图中可以看出,当z= ...
scikit-learn系列三:线性回归
项目地址传送门,欢迎 star 和 fork !线性回归算法线性回归算法是使用线性方程对数据集拟合的算法,本文从单变量线性回归算法、多变量线性回归算法,其中损失函数以及梯度下降算法的推导过程会用到部分线性代数和偏导数;接着重点介绍了梯度下降算法的求解步骤以及性能优化方面的内容;最后通过一个房价预测模型,介绍了线性回归算法性能优化的一些常用步骤和方法。
线性回归概述说到回归,一般都是指 线性回归(linear regression)。线性回归意味着可以将输入项分别乘以一些常量,再将结果加起来得到输出。回归的目的是预测数值型的目标值,最直接的办法是依据输入写出一个目标值的计算公式。
假如你想要预测兰博基尼跑车的功率大小,可能会这样计算:
HorsePower = 0.0015 * annualSalary - 0.99 * hoursListeningToPublicRadio
这就是所谓的 回归方程(regression equation),其中的 0.0015 和 -0.99 称作 回归系数(regression weights),求这些回归系数的过程就是回归。一旦有了这些回归系数 ...
scikit-learn系列二:K-近邻
项目地址传送门,欢迎 star 和 fork !KNN 概述KNN(K-Nearest Neighbor,K-近邻算法)算法是一种有监督的机器学习算法,可以解决分类问题,也可以解决回归问题。
一句话总结: 近朱者赤近墨者黑!
k -近邻算法的输入为实例的特征向量,对应于特征空间的点;输出为实例的类别,可以取多类。k 近邻算法假设给定一个训练数据集,其中的实例类别已定。分类时,对新的实例,根据其 k 个最近邻的训练实例的类别,通过多数表决等方式进行预测。因此,k近邻算法不具有显式的学习过程。
KNN算法原理K-近邻算法的核心思想是未标记样本的类别,由距离其最近的 K 个邻居投票来决定。
假设,我们有一个已经标记的数据集,即已经知道了数据集中每个样本所属的类别。此时,有一个未标记的数据样本,我们的任务是预测出这个数据样本所属的类别。K-近邻算法的原理是,计算待标记的数据样本和数据集中每个样本的距离,取距离最近的K个样本。待标记的数据样本所属的类别,就由这K个距离最近的样本投票产生。
KNN工作原理
假设X_test为待标记的数据样本,X_train为已标记的数据集,算法原理的伪代 ...
scikit-learn系列一:机器学习基础
转载自作者: 片刻1998GitHub地址: https://github.com/apachecn/AiLearning
机器学习 概述机器学习(Machine Learning,ML) 是使用计算机来彰显数据背后的真实含义,它为了把无序的数据转换成有用的信息。是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。它是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域,它主要使用归纳、综合而不是演绎。
海量的数据
获取有用的信息
机器学习 研究意义机器学习是一门人工智能的科学,该领域的主要研究对象是人工智能,特别是如何在经验学习中改善具体算法的性能”。 “机器学习是对能通过经验自动改进的计算机算法的研究”。 “机器学习是用数据或以往的经验,以此优化计算机程序的性能标准。” 一种经常引用的英文定义是: A computer program is said to learn from experience E wi ...
Hexo博客备份
上一篇文章已经具体讲述了博客的搭建与基本使用,接下来记录博客的备份工作。
初始备份
创建一个仓库用来存放备份文件,我的名字选择 Blog-backup,勾选README。
复制仓库地址,运行Git将仓库clone到本地。
1git clone git@github.com:DongZhouGu/Blog-backup.git
将要备份的文件放到我们刚才clone的文件夹里面。
在 clone 的文件夹下运行 Git,依次输入以下命令:
123git add .git commit -m "博客备份" (注:“backup”里面换成你需要,如“first commit”)git push -u origin master (注:此操作目的是把本地仓库push到github上面,如果没有使用密钥此步骤需要你输入帐号和密码)
更新备份123git add .git commit -m "博客备份"git push origin master
document.querySelectorAll('.github-emoji')
...
Hexo博客优化加速
上一篇文章已经具体讲述了博客的搭建与基本使用,接下来记录一下对博客的优化的工作,从图片加载优化和 PicGo 图床来介绍。
图片加载优化概念介绍
预加载就是进入项目前提前加载资源,避免在项目中加载缓慢,影响用户体验
懒加载一般是当图片滚动进可视窗口内才加载图片,可视窗口之外的图片则不加载
matery主题 整体采用预加载模式,这样可以在我们访问其他页面的时候会稍微快点。我们可以在这个基础上对图片进行懒加载,这样做效果就是 html、css、js 加载之后,图片再加载。既保证了网页的打开速度,也不会因图片的庞大体积而拖累了整个页面的加载。
安装插件
在 Blog 根目录执行
1npm install hexo-lazyload-image --save
在根目录下的 _config.yml 中添加对应配置
1234lazyload: enable: true onlypost: false # 是否只对文章的图片做懒加载 loadingImg: # eg ./images/loading.gif
设置插件
修改 /themes/matery/source/js 中 ...
使用Hexo搭建Github博客
以下为搭建本博客的教程(针对windows),记录一下自己的过程,也方便想要建站的小伙伴快速上手。
Github Pages: 可以被认为是用户编写的、托管在 Github 上的静态网页。使用 Github Pages 可以为你提供一个免费的服务器,免去了自己搭建服务器和写数据库的麻烦。此外还可以绑定自己的域名。
Hexo: 一个快速、简洁且高效的博客框架。Hexo 使用 Markdown(或其他渲染引擎)解析文章,在几秒内,即可利用靓丽的主题生成静态网页。
下面从搭建前的准备工作,Github 部署,优化设置博客(使用 matery 主题)三方面详细介绍。
1. 搭建前的准备工作1.1 环境安装
安装 Node.js(点击前往官网),请确保勾选 Add to PATH 选项(默认已勾选),这里可以参考 Hexo 的官方参考文档。
安装Git(点击前往官网),一路默认安装即可。
鼠标右键点击 Git Bash Here ,分别使用 node -v 和 npm -v 来验证安装,显示版本号则安装成功。
1.2 Hexo安装
新建一个存放博客的文件夹,比如 ...