自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 xgboost 训练大数据,内存不够 out of memory

       如果要训练(测试)的样本很多,达到上百上千万,单机载入不了内存时,可以采用如下方法:1、生成libsvm文件       将要处理的数据分批(比如一次读10000行/个样本)读入内存,缺失值填充、特征过程等处理完毕之后,使用sklearn.datasets.dump_svmlight_file()将其转为libsvm数据格式保存到磁盘;libsvm格式也是每行一个样本,所以多...

2019-02-03 16:55:41 9696 12

原创 异常检测(三)——Local Outlier Factor(LOF)

在中等高维数据集上执行异常值检测的另一种有效方法是使用局部异常因子(Local Outlier Factor ,LOF)算法。1、算法思想LOF通过计算一个数值score来反映一个样本的异常程度。这个数值的大致意思是:一个样本点周围的样本点所处位置的平均密度比上该样本点所在位置的密度。比值越大于1,则该点所在位置的密度越小于其周围样本所在位置的密度,这个点就越有可能是异常点。关于密度等理论概念,详...

2018-03-31 15:05:14 23821 6

原创 异常检测(二)——IsolationForest

1、简介孤立森林(Isolation Forest)是另外一种高效的异常检测算法,它和随机森林类似,但每次选择划分属性和划分点(值)时都是随机的,而不是根据信息增益或者基尼指数来选择。在建树过程中,如果一些样本很快就到达了叶子节点(即叶子到根的距离d很短),那么就被认为很有可能是异常点。因为那些路径d比较短的样本,都是因为距离主要的样本点分布中心比较远的。也就是说,可以通过计算样本在所有树中的平均...

2018-03-30 23:20:50 23944 2

原创 异常检测(一)——OneClassSVM

1、sklearn中关于异常检测的说法Novelty and Outlier Detection:         Many applications require being able to decide whether a new observation belongs to the same distribution as existing observations (it is an i...

2018-03-30 00:21:28 42377 11

原创 梯度提升(Gradient boosting)和GBDT

一、梯度提升(Gradient boosting)提升既可以用于分类,也可以用于回归。提升背后的思想是:每一步产生一个弱学习器,通过不断地把若学习器加权累加到总模型当中,来最终得到一个强预测模型。其基本公式如下:                                                                                              ...

2018-03-16 11:07:44 4729

原创 信息熵与基尼指数的关系(一阶泰勒展开)

1、信息熵: 信息熵可以度量信息量,也可以表达不确定程度,混乱程度。在机器学习中,还可以度量样本集合的纯度(熵越小集合纯度越高)。信息熵的定义为: (1) 其中,D表示集合,K表示类别数,Pk表示第k类别样本的比例。集合中每一类样本的比例越接近,表示集合纯度越低,越混乱,即熵的值越...

2018-03-07 16:03:40 8850 2

原创 多分类下的ROC曲线和AUC

本文主要介绍一下多分类下的ROC曲线绘制和AUC计算,并以鸢尾花数据为例,简单用python进行一下说明。如果对ROC和AUC二分类下的概念不是很了解,可以先参考下这篇文章:http://blog.csdn.net/ye1215172385/article/details/79448575 由于ROC曲线是针对二分类的情况,对于多分类问题,ROC曲线的获取主要有两...

2018-03-05 17:37:20 67160 46

原创 决策树中的基尼系数、 熵之半和分类误差率

1、分类误差率在二分类中,对于任意一个叶子节点,假设其中一个类别A占比(概率)为p,则另外一个类别B的占比(概率)就是1-p。那么,我们可以直观地将分类误差作为损失,即:上式表示:当一个叶子类目中的类别A占比较多时(p>0.5),进入该叶子结点的样本就会被判别为类别A,那么剩下的占比为1-p的(类别B)样本则会被分类错误,随之产生的分类误差率就是1-p;反之,当叶子结点中类别A样本较少(p<=0.5)时,该叶子结点就表示类别B,所有进入该节点的类别A样本将会被分类错误,随之产生的..

2021-05-10 16:29:06 4998 1

原创 spark之QuantileDiscretizer源码解析

1、前言:这里重点讲一下transform函数。2、正文直接上源码:/** * Binary searching in several buckets to place each data point. * @param splits array of split points * @param feature data point * @param keepInvalid NaN flag. * Set "true" t

2020-07-06 22:10:43 1166

原创 python 装饰器

一、含义首先,装饰器是用来给目标函数“装饰”用的;其次,装饰器是一个函数,它返回的是一个装饰好的目标函数。二、举例step1:比如,我们写了一个求平方的目标函数:def my_pow(x): # 求平方 print(x ** 2)为了提示函数确实执行了,改为:def my_pow(x): # 求平方 print('starting m...

2019-03-09 17:56:56 276

原创 yield

return 的作用在一个 generator function 中,如果没有 return,则默认执行至函数完毕,如果在执行过程中 return,则直接抛出 StopIteration 终止迭代。def func(): a = 0 b = 1 while True: if b &gt;= 5: return ...

2019-02-03 14:10:27 185

原创 python exception

有一类错误是完全无法在程序运行过程中预测的,比如从网络抓取数据,网络突然断掉了。这类错误也称为异常,在程序中通常是必须处理的,否则,程序会因为各种问题终止并退出。1、常见格式# a = '0'# a = '*'a = '1'try: r = 10 / int(a) print('result:', r)except ValueError as e:...

2019-02-03 11:49:42 986

转载 文本文件和二进制文件的差异和区别

广义上的二进制文件包括文本文件,这里讨论的是狭义上的二进制文件与文本文件的比较:能存储的数据类型不同 文本文件只能存储char型字符变量。二进制文件可以存储char/int/short/long/float/……各种变量值。每条数据的长度 文本文件每条数据通常是固定长度的。以ASCII为例,每条数据...

2018-11-14 23:20:15 1393

原创 无向图拷贝(clone-graph)

思路:用深度优先(DFS)进行遍历 用map保存新旧值的映射关系代码:struct UndirectedGraphNode { int label; vector&lt;UndirectedGraphNode *&gt; neighbors; UndirectedGraphNode(int x) : label(x) {};};class Solution {...

2018-08-06 14:16:49 689

原创 回文最小分割数(palindrome-partitioning-ii)

class Solution {public: int minCut(string s) { //先求解小段的子序列 vector&lt;vector&lt;int&gt;&gt; dp(s.length(), vector&lt;int&gt;(s.length())); //存放最小切割数 vector&lt;vector&lt;bool&gt;&gt; p(s.lengt...

2018-08-06 11:46:53 386

原创 约瑟夫环

1、题目        n个数字(0,1,…,n-1)形成一个圆圈,从数字0开始, 每次从这个圆圈中删除第m个数字(第一个为当前数字本身,第二个为当前数字的下一个数字)。 当一个数字删除后,从被删除数字的下一个继续删除第m个数字。 求出在这个圆圈中剩下的最后一个数字。1、代码void Solution(int *arr, int length, int m){ if (lengt...

2018-07-21 14:02:28 228

原创 Number of Islands

1、题目Given a 2d grid map of '1's (land) and '0's (water), count the number of islands. An island is surrounded by water and is formed by connecting adjacent lands horizontally or vertically. You may ...

2018-07-21 13:03:55 316

原创 max-points-on-a-line

       在一个二维平面上,求最大的点个数,要求这些点在一条直线上。1、题目描述Given n points on a 2D plane, find the maximum number of points that lie on the same straight line.2、思路       首先,两点确定一条直线;       假设某点A在最终的解中,那么只要分别计...

2018-07-19 13:58:56 354

原创 populating-next-right-pointers-in-each-node-ii

1、题目描述Follow up for problem "Populating Next Right Pointers in Each Node".What if the given tree could be any binary tree? Would your previous solution still work?Note:You may only use constan...

2018-07-19 10:38:02 226

原创 binary-tree-maximum-path-sum

1、题目描述Given a binary tree, find the maximum path sum.The path may start and end at any node in the tree.For example:Given the below binary tree, 1 / \ 2 3Return6.2、思路...

2018-07-19 10:18:14 234

原创 二叉树非递归后序(后根)遍历

使用非递归方式对二叉树进行(后序)后根遍历

2018-07-15 20:17:49 1809

原创 sorted函数

1、函数介绍sorted(iterable, cmp=None, key=None, reverse=False)参数说明:    (1)iterable:            是可迭代类型;    (2)cmp             接受一个自定义的比较函数,例如:             def f(s1, s2):   # 比如s1,s2是dict类型,将每个人的年龄作为比较元素    ...

2018-05-27 14:42:08 2980

原创 KD-Tree算法

kd树(k-dimensional树的简称),是一种分割k维数据空间的数据结构,主要应用于多维空间关键数据的近邻查找(Nearest Neighbor)和近似最近邻查找(Approximate Nearest Neighbor)。 一、Kd-tree其实KDTree就是二叉查找树(Binary Search Tree,BST)的变种。二叉查找树的性质如下:1)若它的左子树不为空,则左子树上所...

2018-05-06 21:49:08 19268 3

原创 sum-root-to-leaf-numbers

1、题目描述:Given a binary tree containing digits from0-9only, each root-to-leaf path could represent a number.An example is the root-to-leaf path1->2->3which represents the number123.Find the total

2018-05-01 20:59:30 187

原创 链表插入排序(insertion-sort-list)

对链表进行插入排序代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */class Solution {public:

2018-04-28 22:11:02 427

原创 链表排序(sort-list)

链表排序1、要求:        Sort a linked list in O(n log n) time using constant space complexity.2、代码:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *ne

2018-04-28 19:20:58 2224

原创 求最大子段和——分治法

1、分治策略(1)划分:按照平衡子问题的原则,将序列(a1, a2, …, an)划分成长度相同的两个子序列,则会出现以下三种情况:(2)求解子问题:对于划分阶段的情况①和②可递归求解,情况③需要计算s1+s2:  (3)合并:比较在划分阶段的三种情况下的最大子段和,取三者之中的较大者为原问题的解。2、示意图3、代码实现i

2018-04-09 11:11:29 6668 1

转载 并查集详解(转)

转自 :https://blog.csdn.net/dellaserss/article/details/7724401原文地址:http://blog.csdn.net/niushuai666/article/details/6662911作者:飘过的小牛并查集是我暑假从高手那里学到的一招,觉得真是太精妙的设计了。以前我无法解决的一类问题竟然可以用如此简单高效的方法搞定。不分享出来真是对不起p

2018-04-01 21:24:27 167

原创 归并排序

1、算法思路(分治策略)(1)划分:将待排序序列r1, r2, …, rn划分为两个长度相等的子序列r1, …, rn/2和rn/2+1, …, rn;(2)求解子问题:分别对这两个子序列进行排序,得到两个有序子序列;(3)合并:将这两个有序子序列合并成一个有序序列。2、代码实现void mergeArray(int data[], int first, int mid, int last, in...

2018-03-29 16:24:42 210 1

原创 堆排序

1、主要步骤:1)建堆2)筛选:自堆顶至叶子调整2、代码void heapAdjust(int data[], int s, int m) //默认是按照大顶堆调整{ int temp = data[s]; for (int j = 2 * s; j &lt;= m; j *= 2) { if (j &lt; m &amp;&amp; data[j] &lt; data[j + 1...

2018-03-29 15:14:09 196

原创 快速排序

1、算法思想选定一个记录作为支点(pivot),以支点为基准将整个序列划分为两个子序列r1 … ri-1和ri+1 … rn,前一个子序列中记录的值均小于或等于支点,后一个子序列中记录的值均大于或等于支点。这个过程chen

2018-03-28 17:54:08 280

原创 冒泡排序

1、原理冒泡排序在扫描过程中两两比较相邻记录,如果反序则交换,最终,最大记录就被“沉到”了序列的最后一个位置,第二遍扫描将第二大记录“沉到”了倒数第二个位置,重复上述操作,直到n-1 遍扫描后,整个序列就排好序了。2、算法实现2.1、基础版本void bubble_sort(int data[], int n) //从小到大排序{ for (int i = 0; i &lt;= n - 2;...

2018-03-27 16:19:34 2924

原创 选择排序

1、原理选择排序的第i趟排序,从第i个记录开始扫描序列,在n-i+1(1≤i≤n-1)个记录中找到最小的记录,并和第i个记录交换作为有序序列的第i个记录。2、代码实现#includeusing namespace std;void select_sort(int data[], int n){ for (int i = 0; i <= n - 2; i++) //对

2018-03-27 15:31:09 276

原创 字符串匹配问题——KMP算法

KMP算法用于解决字符串匹配问题。给定两个字符串S和T(假设strlen(S) > strlen(T)),判断S中是否包含T,且返回T在S中所在的起始位置。这里为简单起见,若S包含T,则只返回第一个T所在的位置。1、理论

2018-03-23 12:00:37 835

转载 xgboost原理

本文主要结合了两篇文章,并做了稍微的修改,原文出处: 1、http://blog.csdn.net/a819825294/article/details/51206410 2、https://zhuanlan.zhihu.com/p/28672955 1.xgboost vs gbdt  说到xgboost,不得不说gbdt,两者都是boosting方法(如图1所示),关于gbdt可以看我这篇

2018-03-17 12:00:19 562

原创 pandas中的索引:loc、iloc、ix的区别

1、loc:        1)、只能通过标签名来取数据import pandas as pdlst = [[11,12,13],[14,15,16]]index = ['row_0','row_1']columns=['col_0','col_1','col_2']df = pd.DataFrame(data=lst, index=index, columns=columns)prin...

2018-03-14 20:02:35 3656

原创 windows和python2.7下xgboost的快速安装方法

        任何软件、资源的安装下载首选肯定是官网(xgboost官方安装教程:http://xgboost.readthedocs.io/en/latest/build.html),但安装xgboost需要下载各种工具,然后自己来编译源码,最后然后生成xgboost.dll动态链接库文件,所以可能会出现各种编译上的问题,相对而言比较麻烦。对于python3的用户则比较幸运,可以直接去:htt...

2018-03-12 12:18:18 575

转载 机器学习之分类器性能指标之ROC曲线、AUC值

原文出处:http://www.cnblogs.com/dlml/p/4403482.html一&nbsp;roc曲线1、roc曲线:接收者操作特征(receiveroperating characteristic),roc曲线上每个点反映着对同一信号刺激的感受性。横轴:负正类率(false postive rate FPR)特异度,划分实例中所有负例占所有负例的比例;(1-...

2018-03-05 17:32:43 9002

原创 奇异值分解(SVD)理论与python实现

奇异值分解(Singular Value Decomposition,SVD)是一种重要的矩阵分解(Matrix Decomposition)方法,可以看做对称方正在任意矩阵上的一种推广,该方法在机器学习的中占有重要地位。        首先讲解一下SVD的理论,然后用python实现SVD,并应用于图像压缩。1、奇异值分解(SVD):        设有 A是一个m×n 的实矩阵,则

2018-03-01 20:52:17 20837 14

原创 机器学习之优化算法

        在机器学习中,由于问题解的计算量通常很大,一般会采用迭代的方式来进行优化求解。最常用的优化算法包括:梯度下降法(BGD、SGD、MBGD)、坐标上升法(Coordinate Ascent)、牛顿法和拟牛顿法等。1、梯度下降法(Gradient Descent)        梯度下降法是最简单常用的最优化方法之一。梯度下降法的优化思想是用当前位置负梯度方向作为搜索方向,因为该方向为...

2018-02-27 19:30:17 677

空空如也

空空如也

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

TA关注的人

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