自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 收藏
  • 关注

原创 我的一个Tensorflow模板

前段时间就开始学习Tensorflow了。虽然大致看了两本书,也没怎么上手实践过,但是学习期间就觉得Tensorflow有点乱,这两天试着写了个网络,主要目的就是给自己弄个初级的模板出来,以后有什么新的想法或者任务,就在这个模板的基础上添添改改就行,不必要每次都重新写很多东西。为了以后的方便我目前主要想实现以下三个功能: 1. 使用tf.slim来构建网络的结构,因为看书上还有很多老一点的代...

2018-03-23 21:07:43 1222

原创 特征工程之特征选择

在前一篇文章中我介绍了一些数据预处理的方法,原始数据在经过预处理之后可以被算法处理了,但是实际中可能有一些特征是没有必要的,比如在中国采集的一些数据,那么国籍就都是中国,其实也就没有意义了,反映在统计量上就是方差过小,也就是样本在这个特征上变化很小。还有一种情况是特征和最后的结果相关性很小,也就是这个特征不起作用,衡量这种相关性我们可以用卡方检验,F-检验以及互信息等。其实很多sklearn的算法

2018-01-27 22:00:43 3350

原创 特征工程探索之数据预处理

我在前面的几篇文章里面介绍了一些机器学习的算法,当然不是非常全面,只是大致介绍,但我觉得对我来说已经对算法有了一定的理解。但是当我想完成一个真正的数据处理任务的时候,发现还是不够,从原始数据到开始用算法训练之间还有一部分空白,这个空白就是——特征工程。我在一些文章里面都看到这种说法数据和特征决定了最后结果的上限,而算法只是用来逼近这个上限的工具。对此我深以为然,数据和选择的特征如果不好,算法再

2018-01-24 20:56:46 1282

原创 机器学习中的线性模型

线性模型是比较基础也比较简单的一类模型,我在前面没有提及,在这篇文章里面介绍一下一些线形的模型。基本形式所谓线性模型就是用于预测的模型是线性的,可以写成以下的形式 y^(w,x)=w1x1+⋯+wdxd+b\hat y(w,x) = w_1x_1+\cdots+w_dx_d+b 其中w=(w1;w2;⋯;wd)w = (w_1;w_2;\cdots;w_d) 在有的地方也有另一

2018-01-10 21:05:41 1380

原创 高斯混合模型(GMM)和EM算法

EM算法EM算法是一种迭代算法,用于含有隐变量的概率模型参数的极大似然估计。每一次迭代由两步组成:E步,求期望(expectation);M步,求极大(maximazation)。不断循环直到算法收敛,最后得出参数的估计。之所以要搞得这么麻烦,就是因为有隐变量(latent variable)这个东西的存在,隐变量是无法观测的,这就造成了我们的观测值和想要预测的参数值之间的差距。如果所有的变量都是可

2018-01-03 22:18:10 6451 1

原创 聚类分析常用算法原理:KMeans,DBSCAN, 层次聚类

聚类分析是非监督学习的很重要的领域。所谓非监督学习,就是数据是没有类别标记的,算法要从对原始数据的探索中提取出一定的规律。而聚类分析就是试图将数据集中的样本划分为若干个不相交的子集,每个子集称为一个“簇”。下面是sklearn中对各种聚类算法的比较。 KMeansKMeans算法在给定一个数k之后,能够将数据集分成k个“簇”C={C1,C2,⋯,Ck}\mathcal C = \{C_1, C_2

2018-01-01 10:52:32 61581

原创 scikit-learn中集成学习(ensemble learn)的例子与实践

在我的上一篇博客中集成学习基本原理:Adaboost,Bagging和Stacking介绍了一些集成学习的基本原理,所以在这一篇我准备介绍一下scikit-learn中的一些例子,在官方文档中集成学习的例子很多,我当然不可能全部写在博客里面,在这里我只挑一些典型的大致讲一下。AdaBoostimport numpy as npimport matplotlib.pyplot as pltfrom

2017-12-30 23:27:56 3084

原创 集成学习基本原理:Adaboost,Bagging和Stacking

集成学习的基本原理是,训练多个“个体学习器”或者叫基分类器,基学习器。然后用某种策略将它们结合起来,最后可以产生比单一学习器优越得多的性能。 集成学习的基本原理是什么呢?

2017-12-20 21:58:47 8665

原创 决策树的原理与实践

决策树是一种比较特殊的机器学习方法,它可以看作是一堆if-then规则的集合,某种程度上是更接近人类的思考方式的,具有一定的可读性,而其它机器学习方法更近似于一个个黑箱。 上图是一个是否打球的决策树,可以看到从上到下,不断考虑天气,湿度以及是否有风等情况来决定最后是否去打球,这个决策树建立起来之后,以后就可以根据这些特征来判断是否会去打球。 值得注意的一点就是上图中决策树的叶节点,玩或者不玩

2017-12-18 21:01:51 1906

原创 贝叶斯分类器原理与应用

贝叶斯决策对于机器学习还有一种将概率应用于其中的一类算法,我们这里先介绍贝叶斯决策论,也算是从另一个角度来思考机器学习的算法。假设对于数据集,对应的数据类别有N种,分别为: Y={c1,c2,⋯,cN}Y = \{ c_1, c_2, \cdots, c_N\} L(Y,f(X))L(Y, f(X))为损失函数,那么我们可以得出将一个样本点xx分类为cic_i所产生的期望损失为 Rexp(f)

2017-12-16 20:45:15 4132

原创 K近邻(KNN)算法原理与实践

这次我来介绍一下k近邻法(k-nearest neighbor, KNN)的基本原理以及在scikit-learn中的应用。这是一种看起来结构和原理都挺简单的机器学习算法,主要的数据结构就是kd树的构造和搜索,在scikit-learn中的例子也比较少。K近邻算法的原理k近邻的原理很简单,给定一个数据集,对于新来的数据,我们首先定义一个数k,然后找到离这个新加入的数据点最近的k个点,然后找出这k个点

2017-12-14 19:57:12 1983

原创 支持向量机原理与实践(二):scikit-learn中SVM的使用

我在上一篇博客支持向量机(SVM)原理与实践(一)中介绍了支持向量机的主要原理,在这一篇文章中我介绍一下scikit-learn中SVM的使用,scikit-learn是使用非常广泛的Pythond的机器学习的库,我按照它的官方文档中的例子基本走了一遍,,例子中涉及的主要还有numpy和matplotlib这两个库,对于这两个库我也是接触得不深,所以借着这个机会也研究了一番。但是最终也有些地方搞的不

2017-12-10 19:10:47 5877

原创 支持向量机(SVM)原理与实践(一)

最近学习了一些机器学习方面的知识,想写一些相关的东西,首先想到的就是先把支持向量机(Support Vector Machine)写下来,倒不是它有多重要,当然确实也挺重要,最重要的原因是我认为它所代表的思想以及一些处理技巧非常的巧妙。所以第一篇相关的文章我想来尽量的写下来它的原理,另外再花一篇文章的篇幅来记录一下在scikit-learn这个机器学习的常用Python库中,SVM的主要使用方法。对

2017-12-09 14:20:43 1337

原创 《算法4》最短路径之Dijkstra与Bellman-Ford算法

基本数据结构在本篇文章中将要记录,在加权有向图中的单源最短路径的两个主要算法,所以首先介绍有向边以及加权有向图这两种关键的数据结构,这里的两种数据结构和《算法4》最小生成树之Prim与Kruskal算法中的边以及加权无向图的数据结构很类似,大致看一下就行。 下面是有向边的数据结构:public class DirectedEdge { private final int v; pr

2017-12-03 17:51:20 1535 2

原创 算法题:直方图和0-1矩阵中最大矩形

前几天看到一道算法题目,看起来挺简单,就是有一个由0和1构成的矩形,然后找到这个矩形中全部元素都是1的最大子矩形,初看起来好像挺简单,但是我想半天没有想出来。上网搜了下才发现,这道题目还挺有名的,很多人都写文章探讨过,一个非常好的解法是借用一个找直方图中最大面积矩形的算法,可以用很短的代码来实现。所以我准备记述一下关于这两道题目的解法,当然具体的解法只是拾人牙慧而已。寻找直方图中的最大矩形这道题的题

2017-11-27 20:23:26 4812 2

原创 《算法4》最小生成树之Prim与Kruskal算法

最小生成树贪心算法基本数据结构Prim 算法Kruskal算法总结最小生成树在前面我们了解到了无向图和加权有向图,类似的我们给无向图的每一条边加上权重,就得到了加权无向图,加权无向图在现实中也有许多应用,在这一篇,我们讨论对它的一个重要的处理,就是找出图中(本篇中默认为加权无向图)的最小生成树。最小生成树:图的生成树是它的一棵含有所有顶点的无环连通子图。加权图的最小生成树(MST)是它的

2017-11-26 10:52:37 873 1

原创 《算法4》有向图与DAG与Kosaraju算法

有向图在我的上一篇博客《算法4》图&深度优先与广度优先算法中,我介绍了简单的无向图,以及相关的两大搜索方法:深度优先和广度优先搜索,这里我要介绍新的数据结构:有向图。简单的来说有向图就是连接带方向的图。有向图的例子在现实生活中也很多,比如在一段时间内银行间的现金流动,或者在某些地方的一些道路是单向的啊,那么这些现金流以及单向的道路就要用带方向的边来描述,这时有向图就有了用武之地。一个有向图的例子如下

2017-11-17 22:41:00 1118

原创 《算法4》图&深度优先与广度优先算法

图一系列点以及把它们连起来的边就构成了一幅图,图是现实生活中许多东西的抽象比如地图或者电路图,在数学中也有图论这一分支专门研究图的性质,这一篇以及接下来的几篇都是和图相关的。 上图是一幅图的示例。 这里我们先研究无向图,就是图中的边是没有方向的。还要介绍几个定义: 度数:某一个顶点的度数即为依附于它的边的总数。 路径:由边顺序连接起来的一系列顶点。 环:该路径上的任意一个顶点都可以沿着

2017-11-11 23:50:48 8477

原创 《算法4》散列表

散列表也是一种符号表,主要特征是可以将键通过散列函数映射为一个数组索引,然后利用这个数组索引就可以做很多东西。散列函数当我们输入一个对象,不论这是个什么东西,经过散列函数处理之后输出一个0到M-1的范围之内的整数。 对于散列函数有一些要求: 1. 相等的对象(使用equals()函数)的散列值是相同的 2.同样的散列值不同的两个对象不相等 3.在输出范围之内尽量均匀分布但是哈希函数是和

2017-10-30 22:53:18 822

原创 《算法4》深入理解红黑树

红黑树是一种性能非常优秀的数据结构,关键在于它能保证最坏的性能也是对数的,主要是因为它是一种平衡的树,所以也叫平衡查找树。要理解红黑树,最好先看看我的上一篇博客《算法4》符号表以及二叉查找树,了解二叉查找树以及我们为什么需要平衡查找树。2-3查找树二叉查找树中树高会受到输入数据的影响,极端情况下一棵树和一个链表没什么区别,所以我们需要一种树,它的所有叶节点到根节点的距离都是相等的,这种树为平衡树,并

2017-10-28 11:52:39 7825 13

原创 《算法4》符号表以及二叉查找树

符号表符号表就是键值对的集合,并且支持put和get操作。现实中符号表的应用非常广泛,所以这里介绍几种键值对的实现,主要是二叉查找树以及之后将要介绍的红黑树。一个值得注意的点就是,符号表里面不允许重复的key,也就是put一个键值对时,会先查找符号表里面是否含有这个key,有的话就更改这个key对应的值,没有的话就新加一个键值对两种简单实现:(1)使用无序链表的顺序查找我们维护一个无序链表,当我们查

2017-10-21 21:44:06 1469

原创 《算法4》优先队列和堆排序

优先队列和堆优先队列支持两种操作:删除最大元素和插入元素。可以用有序或者无序数组完成这个数据结构,但是用二叉堆(以下简称堆)可以更加快速地完成元素的删除和插入。堆的插入和删除元素的最大数量级都是logNlogN堆的定义:堆就是一个每个节点都大于它的子节点的二叉树,也叫最大优先队列。堆的第一个元素可以是最大的或者是最小的,前者称为最大优先队列,后者是最小优先队列,这里我们讨论最大优先队列,对于最小优先

2017-10-12 22:14:33 530

原创 《算法4》排序算法总结

最近在学算法,就以排序算法的总结作为第一篇博客选择排序插入排序希尔排序归并排序快速排序三向切分快速排序总结选择排序选择排序的思路很简单 ,不断遍历整个数组,将未排序数组中最小的数放到左边,直到整个数组排序完成。选择排序速度较慢,每次都必须遍历整个数组未排序的部分,所以总的比较次数为 C(N)=N+(N−1)+⋯+1∼N22C(N)=N+(N-1)+\cdots+1 \sim \frac

2017-10-04 13:43:25 431 1

空空如也

空空如也

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

TA关注的人

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