算法
看穿数据之美
机器学习/深度学习/数据挖掘/推荐算法,微信为oppo62258801(同13011197941),邮箱为lcqbit11@163.com,欢迎学习交流!
展开
-
一键安装tensorflow-史上最快安装tensorflow的方式
安装tensorflow我是在anaconda3#python3.7的环境下安装tensorflow,因此使用的是pip3命令进行安装的pip3 install tensorflow在网上搜索答案,发现可以按照下面这样设置pip3 --default-timeout=100 install gevent然后再重新运行 pip3 install tensorflow 安装tenso...原创 2019-09-06 22:29:14 · 2420 阅读 · 0 评论 -
一键安装xgboost-史上最简单安装xgboost的方式
很多同学在学习机器学习过程中,可能会使用到xgboost训练框架,在安装xgboost过程中可能会碰到这样那样的问题,在这里提供一键安装xgboost的方法前置条件:先保证本地已经安装成功了anaconda1首先查看以你要安装的xgboost类型anaconda search -t conda xgboost2由于我的笔记本是mac os系统,因此按照下面的命令一键安装xgb...原创 2020-05-07 17:30:01 · 2462 阅读 · 0 评论 -
L2和L1正则化防止过拟合-贝叶斯角度和约束优化角度的解释
文章目录L2正则化约束优化角度贝叶斯角度L1正则化约束优化角度贝叶斯角度L1和L2正则化方法对于机器学习模型来说都具有防止模型过拟合的作用,通常我们需要理解他们是如何发挥作用的。L1、L2原理的解释可以从两个角度:带约束条件的优化求解(拉格朗日乘子法)贝叶斯学派:最大后验概率L1正则化相当于为参数w加入了拉普拉斯分布的先验。L2正则化相当于为参数w加入了高斯分布的先验。L2正...原创 2020-02-11 22:32:55 · 1427 阅读 · 0 评论 -
leetcode-根据中序遍历和后序遍历重构二叉树 思路与代码
问题描述问题链接:https://leetcode.com/problems/construct-binary-tree-from-inorder-and-postorder-traversal/给定树的中序遍历和后序遍历,请构建原来的二叉树。假设不存在重复的元素。Given inorder and postorder traversal of a tree, construct the ...原创 2019-12-04 23:46:08 · 465 阅读 · 0 评论 -
leetcode-根据前序遍历和中序遍历重构二叉树 思路与代码
问题描述问题链接:https://leetcode.com/problems/construct-binary-tree-from-preorder-and-inorder-traversal/给定树的前序遍历和中序遍历,请构建原来的二叉树。假设不存在重复的元素。Given preorder and inorder traversal of a tree, construct the bi...原创 2019-12-04 23:45:53 · 335 阅读 · 0 评论 -
leetcode-二叉树的前序、中序、后序、层序的递归和非递归实现
文章目录1. 二叉树的遍历2. 前序遍历2.1. 递归实现2.2. 非递归实现3. 中序遍历3.1. 递归实现3.2. 非递归实现4. 后序遍历4.1. 递归实现4.2. 非递归实现5. 层序遍历1. 二叉树的遍历面试中,尤其是校招面试中(哈哈,社招面试估计是嫌这种题目太简答,不屑于考察),经常被问到的一个题目就是二叉树的各种遍历算法,而我们常见的二叉树的遍历方式有前序遍历、中序遍历、后序遍历...原创 2019-12-02 23:52:13 · 300 阅读 · 0 评论 -
leetcode-数组的全排列的所有结果 思路与代码
文章目录问题描述问题分析问题解法问题描述问题链接:https://leetcode.com/problems/permutations/给定一个不包含重复元素的整数集合,返回全排列的所有结果Given a collection of distinct integers, return all possible permutations.问题分析既然是全排列,首先想到暴力求解法,但是...原创 2019-12-01 20:15:08 · 982 阅读 · 0 评论 -
leetcode-连续子数组和为目标数值的整数倍 思路与代码
文章目录问题描述问题分析问题解法问题描述问题链接:https://leetcode.com/problems/continuous-subarray-sum/给定一个非负数组和一个正数目标值k,请判断数组中是否存在一个连续的子数组,其加和为k的整数倍,即其加和等于n*k,其中n也为一个整数。问题分析拿到这道题目,首先想到的是暴力查找,即列举所有可能的子数组的加和,判断其加和是否为目标值k...原创 2019-12-01 10:21:04 · 1290 阅读 · 0 评论 -
leetcode-给定二叉搜索树和一个目标值,判断树中是否有两元素加和等于目标值 思路与代码
问题描述问题链接:https://leetcode.com/problems/two-sum-iv-input-is-a-bst/给定一个二叉搜索树和一个目标值,如果在树中存在两个元素加和等于目标值则返回true,否则放那会false。Given a Binary Search Tree and a target number, return true if there exist two...原创 2019-11-30 22:22:34 · 976 阅读 · 0 评论 -
leetcode-满足连续子数组加和等于目标值的子数组个数 思路与代码
文章目录问题描述问题分析问题解法问题描述问题链接:https://leetcode.com/problems/subarray-sum-equals-k/给定一个数组,请找到有多少个连续子数组加和等于给定目标数值?问题分析首先想到的是两件事情:两层for循环遍历的解法;两层for循环遍历大概率会出现TLE的错误,哈哈,不是废话嘛因此,我们需要将O(n^2)的解法从时间上优化...原创 2019-11-30 21:37:34 · 4228 阅读 · 0 评论 -
判断二叉树是否是二叉排序树 思路与代码
问题:给定一棵二叉树的根节点 root,请判断其是否是二叉树排序树?二叉排序树的基本概念:如果二叉树根节点的左子树不为空 ,那么左子树的所有节点数值均不大于根节点数值;如果二叉树根节点的右子树不为空 ,那么右子树的所有节点数值均不小于根节点数值;根节点的左子树、右子树也均为二叉排序树。此处需要用到树的遍历,二叉树常用的遍历操作为前序遍历、中序遍历、后续遍历、层序遍历等遍历方式,...原创 2019-11-16 17:12:03 · 2865 阅读 · 0 评论 -
史上最详细的梯度下降优化算法介绍(从SGD到Adam至Lookahead)
文章目录1.介绍2.常见优化算法2.1 梯度下降法及其变种2.1.1 批梯度下降法2.1.2 随机梯度下降法2.1.3 小批量梯度下降法2.1.4 梯度下降法的缺点2.2 梯度下降法的优化算法2.2.1 Momentum-动量法2.2.2 Nesterov-加速梯度下降法2.2.3 Adagrad-自适应梯度2.2.4 Adadelta2.2.5 RMSprop2.2.6 Adam-自适应矩估计2...原创 2019-11-21 01:22:04 · 18546 阅读 · 1 评论 -
如何理解K-L散度(相对熵)
转自于:https://www.jianshu.com/p/43318a3dc715?from=timeline&isappinstalled=0,如有侵权,请联系我删除。Kullback-Leibler Divergence,即K-L散度,是一种量化两种概率分布P和Q之间差异的方式,又叫相对熵。在概率学和统计学上,我们经常会使用一种更简单的、近似的分布来替代观察数据或太复杂的分布。K...转载 2019-03-14 13:50:05 · 2330 阅读 · 0 评论 -
Generative Adversarial Nets(译)
转自 https://blog.csdn.net/wspba/article/details/54577236仅供参考,如有翻译不到位的地方敬请指出。论文地址:Generative Adversarial Nets 论文翻译:XlyPb(http://blog.csdn.net/wspba/article/details/54577236)摘要我们提出了一个通过对抗过程估计生成模型...转载 2019-02-16 17:13:36 · 5962 阅读 · 2 评论 -
理解极大似然估计思想(未完待续)
核心思想论述:极大似然估计就是在只有概率(一定的可能性)的情况下,直接忽略低概率事件,而认为高概率事件就是真实事件的思想。举例:一位妈妈领着一个自己的孩子和一个同事的孩子一块走过来,其中一个孩子A长的特别像妈妈,而另一个孩子B长得不是很像妈妈,那么我猜测孩子A大概率是妈妈的孩子,而由于只有两个孩子,所以忽略掉小概率事件(孩子B相对于孩子A是妈妈的孩子的概率更小),我认为孩子A就是妈妈的...原创 2019-02-16 17:02:50 · 1005 阅读 · 0 评论 -
xgboost模型特征重要性的不同计算方式
我们都知道在常见的逻辑回归模型中,每个特征对应一个模型参数wiw_{i}wi,该参数约大,那么该特征对模型预测结果的影响就会越大,我们就说该特征就越重要,因此LR模型的特征重要性评估方式就是wiw_{i}wi的大小,具体特征重要性计算方式见我另一篇博客。而在陈天奇大神的神作-Xgboost训练框架中,其本质是GBDT模型的一个优化版的实现框架,作为一个Boosting模型,Xgboost模型...原创 2019-09-17 22:24:27 · 10212 阅读 · 2 评论 -
快速排序法为什么一定要从右边开始
while(arr[j]>=temp&&i<j){ j--; } while(arr[i]<=temp&&i<j){ i++; }这里两个while的顺序是不能改变的,想一想:假设对如下进行排序:如上图,6在左,9在右 我们将6作为基数。假设从左边开始(与正确程序正好相反)于是i 就会移动到现在的 数字 7 ...转载 2018-10-20 13:02:20 · 3670 阅读 · 3 评论 -
LeetCode--279. Perfect Squares(完美平方)Python
题目:给定一个正整数n,一定存在若干整数平方和为该正整数,求满足该条件的最小整数个数。平方数为(1,4,9,16......),使其和为n。例如给定n=12,则返回3,因为12=4+4+4;给定n=13,则返回2,因为13=4+9.解题思路:1、使用动态规划,维护一个长度为n+1的数组,第i位存储和为i的最少整数个数。则f(i)只与i之前的数组有关。2、变态解法(四平方和定理),任...转载 2019-06-17 22:45:47 · 520 阅读 · 0 评论 -
理解插入排序-直接插入排序、折半插入排序、希尔排序的排序过程
1,有关插入排序(1)插入排序的基本方法是:每步将一个待排序的元素,按其排序码大小插入到前面已经排好序的一组元素的适当位置上去,直到元素全部插入为止。(2)可以选择不同的方法在已经排好序的有序数据表中寻找插入位置,依据查找方法的不同,有多种插入排序方法。下面是常用的三种。1>直接插入排序2>折半插入排序3>希尔排序(3)直接插入排序基本思想:当插入第i(i...转载 2019-06-29 00:20:23 · 1233 阅读 · 1 评论 -
交换两个数的值的四种方法
交换两个数的值时,大致分为两种思路,建立临时变量和不建立临时变量,这里我们按照是否建立临时变量来写。一、建立临时变量<1>、一般方法思路:建立临时变量 tmp ,通过 tmp = a; a = b; b = tmp; 来实现。图解:(以 a = 1; b = 2 为例) ...转载 2019-06-29 12:55:30 · 16574 阅读 · 3 评论 -
LR模型特征重要性排序
1.特征重要性的意义LR模型也就是逻辑回归模型,作为一个简单的常用的模型,其有非常多的有点,除了模型简单,容易实现分布式,还有一个重要的优点就是模型的可解释性非常好。因为每个特征都对应一个模型参数wiw_{i}wi,该参数越大,那么该特征对模型预测结果的影响就会越大,我们就说该特征就越重要,因此LR模型的特征重要性评估方式就是wiw_{i}wi的大小。2.逻辑回归模型特征重要性及排序Ta...原创 2019-09-17 23:22:36 · 13603 阅读 · 4 评论 -
算法面试题:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?
问题描述:给40亿个不重复的unsigned int的整数,没排过序的,然后再给一个数,如何快速判断这个数是否在那40亿个数当中?问题分析:40亿 不重复 ,没有排序。40亿个unsigned int的整数,放到内存中的话,大约是16G,(1)最直观的的解决办法,把所有的数据遍历一遍,找出那个数.注意:这个方法是不可取的,因为把所有数据遍历一遍,要把所有的数据加载到内存中,16G的数据可...转载 2019-09-25 09:44:45 · 6530 阅读 · 2 评论 -
机器学习 --- FTRL一路走来,从LR -> SGD -> TG -> FOBOS -> RDA -> FTRL
本文会尝试总结FTRL的发展由来,总结从LR -> SGD -> TG -> FOBOS -> RDA -> FTRL 的发展历程。本文的主要目录如下: 一、 反思魏则西事件。 二、 LR模型 三、 SGD算法 四、 TG算法 五、 FOBOS算法 六、 RDA算法 ...转载 2018-02-12 15:20:26 · 693 阅读 · 0 评论 -
常用的特征工程
像一个优秀的工程师一样使用机器学习,而不要像一个机器学习专家一样使用机器学习方法。 ---google 当在做数据挖掘和数据分析时,数据是所有问题的基础,并且会影响整个工程的流程。相比一些复杂的算法,如何灵活的处理好数据经常会取到意想不到的效益。而处理数据不可或缺的需要使用到特征工程。一、什么是特征工程 简单的说,特征工程是能够将数据像艺术一样展现的技术。为什么这么说呢?因为好的特征工...转载 2018-02-12 11:39:47 · 308 阅读 · 0 评论 -
判断树是否为平衡二叉树
bool IsBalanced(BinaryTreeNode* pRoot, int* depth) { if(pRoot== NULL) { *depth = 0; return true; } int nLeftDepth,nRightDepth; bool bLef转载 2017-11-14 11:09:39 · 425 阅读 · 0 评论 -
Trie树详解及其应用
一、知识简介 最近在看字符串算法了,其中字典树、AC自动机和后缀树的应用是最广泛的了,下面将会重点介绍下这几个算法的应用。 字典树(Trie)可以保存一些字符串->值的对应关系。基本上,它跟 Java 的 HashMap 功能相同,都是 key-value 映射,只不过 Trie 的 key 只能是字符串。 Trie 的强大之处就在于它的时间复杂度。它的插入和转载 2017-09-22 17:52:35 · 261 阅读 · 0 评论 -
在一个重男轻女的国家里,每个家庭都想生男孩,如果他们生的孩子是女孩,就再生一个,直到生下的是男孩为止。这样的国家,男女比例会是多少?
原文地址:http://www.java2000.net/p11054在一个重男轻女的国家里,每个家庭都想生男孩,如果他们生的孩子是女孩,就再生一个,直到生下的是男孩为止。这样的国家,男女比例会是多少? 答案: 1:1 分析: 每个孩子出生男女概率是50%,所以每次出生的男女比例是相同的。假设这个国家有n对夫妇,那么n对夫妇将生下n个男孩,这n个男孩是这转载 2017-09-06 23:50:57 · 5756 阅读 · 0 评论 -
全排列 递归方法与非递归方法实现
版权声明:本文为博主原创文章,未经博主允许不得转载。目录(?)[-]一全排列的递归实现二去掉重复的全排列的递归实现三全排列的非递归实现全排列在笔试面试中很热门,因为它难度适中,既可以考察递归实现,又能进一步考察非递归的实现,便于区分出考生的水平。所以在百度和迅雷的校园招聘以及程序员和软件设计师的考试中都考到了,因此本文对全排列作下总结帮助大家更好的学转载 2017-09-06 20:56:55 · 436 阅读 · 0 评论 -
使用VC库函数中的快速排序函数
上一篇讲了快速排序的实现。但在很多场合,直接使用快速排序的库函数是很方便的。下面讲下VC中库函数qsort()的用法: 函数原型:void qsort(void *base,size_t num,size_t width, int (__cdecl *compare )(const void *, const void *) );第一个是数组地址,第二是数组大小,第三个是数组中每个转载 2017-09-06 20:22:18 · 434 阅读 · 0 评论 -
C++实现二分查找算法
想必二分查找很多人都不陌生,或许说很熟悉,但是在实际生活中又有很多人不能正确的写出它的相应代码,因为二分查找的边界条件等很难控制,下面我们来仔细的分析一下二分查找,这只是个人看法,如有异议,欢迎提出。 1、二分查找可以解决的问题:二分查找可以解决预排序数组的查找问题。只要数组中包含T(即要查找的值),那么通过不断的缩小包含T的范围,最终就可以找到它。一开始,范围覆盖整个数组,将数组的中间项与T转载 2017-09-06 14:15:55 · 356 阅读 · 0 评论 -
Maximum Product Subarray -- LeetCode
版权声明:本文为博主原创文章,未经博主允许不得转载。原题链接: https://oj.leetcode.com/problems/maximum-product-subarray/ 这道题跟Maximum Subarray模型上和思路上都比较类似,还是用一维动态规划中的“局部最优和全局最优法”。这里的区别是维护一个局部最优不足以求得后面的全局最优,这是由于乘法的性质不像加法那样转载 2017-08-23 22:15:45 · 232 阅读 · 0 评论 -
【C++】fill函数,fill与memset函数的区别
【C++】fill函数,fill与memset函数的区别memset函数按照字节填充某字符在头文件里面fill函数按照单元赋值,将一个区间的元素都赋同一个值在头文件里面因为memset函数按照字节填充,所以一般memset只能用来填充char型数组,(因为只有char型占一个字节)如果填充int型数组,除了0和-1,其他的不能。因为只有000转载 2017-08-27 14:23:37 · 426 阅读 · 0 评论 -
C++学习:list容器详解
list容器详解 首先说说STL STL就是Standard Template Library,标准模板库。这可能是一个历史上最令人兴奋的工具的最无聊的术语。从根本上说,STL是一些“容器”的集合,这些“容器”有list,vector,set,map等,STL也是算法和其他一些组件的集合。这里的“容器”和算法的集合指的是世界上很多聪明人很多年的杰作。转载 2017-08-22 13:42:16 · 337 阅读 · 0 评论 -
教你彻底学会动态规划——入门篇
动态规划相信大家都知道,动态规划算法也是新手在刚接触算法设计时很苦恼的问题,有时候觉得难以理解,但是真正理解之后,就会觉得动态规划其实并没有想象中那么难。网上也有很多关于讲解动态规划的文章,大多都是叙述概念,讲解原理,让人觉得晦涩难懂,即使一时间看懂了,发现当自己做题的时候又会觉得无所适从。我觉得,理解算法最重要的还是在于练习,只有通过自己练习,才可以更快地提升。话不多说,接下来,下面我就通过一个转载 2017-07-24 21:08:57 · 366 阅读 · 0 评论 -
typedef struct与struct的区别
1. 基本解释 typedef为C语言的关键字,作用是为一种数据类型定义一个新名字。这里的数据类型包括内部数据类型(int,char等)和自定义的数据类型(struct等)。 在编程中使用typedef目的一般有两个,一个是给变量一个易记且意义明确的新名字,另一个是简化一些比较复杂的类型声明。 至于typedef有什么微妙之处,请你接着看下面对几个问题的具体阐述。转载 2017-07-22 13:01:55 · 336 阅读 · 0 评论 -
数据结构与算法目录
前言:数据结构与算法系列先看这里,有助于你更好地获取内容。首先明白一个问题:为什么要研究数据结构? 这是因为所有的程序本质上是对数据进行处理,如何高效的处理数据,这依赖于数据本身的结构(如类型(整型、浮点型等)、维数、是否为复杂类型(结构体类型、类类型)等)以及数据之间的逻辑关系(线性、非线性等)。我们所学的数据结构这门课程就是研究这些内容的,只有弄清楚了这些,我们才可以用高效的转载 2016-12-01 17:45:41 · 666 阅读 · 0 评论 -
c++stl中reverse
目录(?)[-]看到有人将int型指针传入reverse函数中长知识了reverse参考看到有人将int型指针传入reverse函数中,长知识了。reverseVisual Studio 2013其他版本此主题尚未评级 - 评价此主题反转元素的顺序在范围内。转载 2017-09-23 15:03:20 · 1138 阅读 · 0 评论 -
Trie树(Prefix Tree)介绍
目录(?)[-]一什么是Trie树二Trie树的优缺点优点缺点三Trie树的应用字符串检索词频统计字符串排序前缀匹配作为其他数据结构和算法的辅助结构四Trie树的实现本文用尽量简洁的语言介绍一种树形数据结构 —— Trie树。一、什么是Trie树Trie树,又叫字典树、前缀树(Prefix Tree)、单词查找树 或 键树,是转载 2017-09-23 20:13:59 · 580 阅读 · 0 评论 -
C++STL中全排列函数next_permutation的使用
next_permutation函数 组合数学中经常用到排列,这里介绍一个计算序列全排列的函数:next_permutation(start,end),和prev_permutation(start,end)。这两个函数作用是一样的,区别就在于前者求的是当前排列的下一个排列,后一个求的是当前排列的上一个排列。至于这里的“前一个”和“后一个”,我们可以把它理解为序列的字典序的前后,转载 2017-08-30 18:47:41 · 506 阅读 · 0 评论 -
动态规划 最长公共子序列
1.基本概念 首先需要科普一下,最长公共子序列(longest common sequence)和最长公共子串(longest common substring)不是一回事儿。什么是子序列呢?即一个给定的序列的子序列,就是将给定序列中零个或多个元素去掉之后得到的结果。什么是子串呢?给定串中任意个连续的字符组成的子序列称为该串的子串。给一个图再解释一下:转载 2017-10-21 20:39:54 · 382 阅读 · 0 评论