leaf

机器学习之集成学习和随机森林

一世执手 提交于 2021-02-18 19:21:15
一、集成学习 集成学习就是合并多个分类器的预测。一般会在一个项目快结束的时候使用集成算法,一旦建立了一些好的分类器,就可以使用集成把它们合并成一个更好的分类器。 著名的集成方法:投票分类、bogging、pasting、boosting、stacking、和一些其它算法。 1.1 投票分类(少数服从多数) 令人惊奇的是这种投票分类器得出的结果经常会比集成中最好的一个分类器结果更好。 事实上,即使每一个分类器都是一个弱学习器(意味着它们也就比瞎猜好点),集成后仍然是一个强学习器(高准确率),只要有足够数量的弱学习者,他们就足够多样化。 如果每一个分类器都在同一个数据集上训练,会导致犯同一种类型的错误。相比较而言,每个分类器在不同的数据集上训练,集成后的结果会更好。 下面使用moons数据集,训练三个分类器,使用集成算法。 from sklearn.datasets import make_moons from sklearn.model_selection import train_test_split moons = make_moons(noise=0.3, random_state= 0) X, y = moons X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=.4, random

机器学习之决策树三-CART原理与代码实现

可紊 提交于 2021-02-18 17:53:04
决策树系列三—CART原理与代码实现 本文系作者原创,转载请注明出处: https://www.cnblogs.com/further-further-further/p/9482885.html ID3,C4.5算法缺点 ID3决策树可以有多个分支,但是不能处理特征值为连续的情况。 在ID3中,每次根据“最大信息熵增益”选取当前最佳的特征来分割数据,并按照该特征的所有取值来切分, 也就是说如果一个特征有4种取值,数据将被切分4份,一旦按某特征切分后,该特征在之后的算法执行中, 将不再起作用,所以有观点认为这种切分方式过于迅速。 C4.5中是用信息增益比率(gain ratio)来作为选择分支的准则。和ID3一样,C4.5算法分类结果存在过拟合。 为了解决过拟合问题,这里介绍一种新的算法CART。 CART(classification and regression tree) CART由特征选择、树的生成及剪枝组成,既可以用于分类也可以用于回归。 分类:如晴天/阴天/雨天、用户性别、邮件是否是垃圾邮件; 回归:预测实数值,如明天的温度、用户的年龄等; CART决策树的生成就是递归地构建二叉决策树的过程,对分类、以及剪枝采用信息增益最大化准则,这里信息增益采用的基尼指数公式, 当然也可以使用ID3的信息熵公式算法。 基尼指数 分类问题中,假设有K个类别,样本点属于第 类的概率为

关于XFS文件系统概述

亡梦爱人 提交于 2021-02-16 10:51:38
前言: 目前XFS已成为Linux主流的文件系统,所以有必要了解下其数据结构和原理。 XFS文件系统 XFS是一个日志型的文件系统,能在断电以及操作系统崩溃的情况下保证数据的一致性。XFS最早是针对IRIX操作系统开发的,后来移植到linux上,目前CentOS 7已将XFS作为默认的文件系统。使用XFS已成为了潮流,所以很有必要了解下其数据结构和原理。 XFS官方说明文档参考: https://xfs.org/docs/xfsdocs-xml-dev/XFS_Filesystem_Structure//tmp/en-US/html/index.html 接下来将介绍XFS的一些概念,包括分配组、超级块、inode等等,过程中会结合xfs_db(xfs提供的输出文件系统信息的工具)打印一些信息,了解当前XFS的实时数据。 分配组(Allocation Group) XFS将空间分为若干个分配组,每个分配组大小相等(最后一个可能不等)。分配组包含有超级块、inode管理和剩余空间管理等,所以分配组可以认为是一个单独的文件系统。正是分配组这样的设计,使得XFS拥有了并行IO的能力。在单个分区上使用XFS体现不了这种并行IO能力,但是如果文件系统跨越多个物理硬件比如ceph,并行IO将大大提高吞吐量利用率。 上图为分配组的结构图,重点关注前面4个扇区,从上到下分别为超级块、空闲块信息

还在为生成分布式ID发愁?UUID、数据库、算法、Redis、Leaf 来帮忙

随声附和 提交于 2021-02-10 16:35:25
前言 一般单机或者单数据库的项目可能规模比较小,适应的场景也比较有限,平台的访问量和业务量都较小,业务ID的生成方式比较原始但是够用,它并没有给这样的系统带来问题和瓶颈,所以这种情况下我们并没有对此给予太多的关注。但是对于大厂的那种大规模复杂业务、分布式高并发的应用场景,显然这种ID的生成方式不会像小项目一样仅仅依靠简单的数据自增序列来完成,而且在分布式环境下这种方式已经无法满足业务的需求,不仅无法完成业务能力,业务ID生成的速度或者重复问题可能给系统带来严重的故障。所以这一次,我们看看大厂都是怎么分析和解决这种ID生成问题的,同时,我也将我之前使用过的方式拿出来对比,看看有什么问题,从中能够得到什么启发。 分布式ID的生成特性 在分析之前,我们先明确一下业务ID的生成特性,在此特性的基础上,我们能够对下面的这几种生成方式有更加深刻的认识和感悟。 全局唯一 ,这是基本要求,不能出现重复。 数字类型,趋势递增 ,后面的ID必须比前面的大,这是从MySQL存储引擎来考虑的,需要保证写入数据的性能。 长度短 ,能够提高查询效率,这也是从MySQL数据库规范出发的,尤其是ID作为主键时。 信息安全 ,如果ID连续生成,势必会泄露业务信息,甚至可能被猜出,所以需要无规则不规则。 高可用低延时 ,ID生成快,能够扛住高并发,延时足够低不至于成为业务瓶颈。 分布式ID的几种生成办法

Dropping Balls UVA

喜夏-厌秋 提交于 2021-02-07 00:03:13
  A number of K balls are dropped one by one from the root of a fully binary tree structure FBT. Each time the ball being dropped first visits a non-terminal node. It then keeps moving down, either follows the path of the left subtree, or follows the path of the right subtree, until it stops at one of the leaf nodes of FBT. To determine a ball’s moving direction a flag is set up in every non-terminal node with two values, either false or true . Initially, all of the flags are false . When visiting a non-terminal node if the flag’s current value at this node is false , then the ball will first

给女朋友买了只口红,结果她跟我说分手?掌握了机器学习再买买买吧!

↘锁芯ラ 提交于 2021-02-04 02:39:40
过完年,压岁钱到位,迟来的年终奖到账,钱包鼓起来但新的节日也不断跟上,情人节、元宵节、妇女节…… 说到底,还不是要买买买? 淘宝上的店铺又多又杂乱,一旦买错了, 面临的就是“女 ” 朋友的“果真直男审美 ” 的diss,或者人财两空的局面 接下去,来看看用机器学习技术如何甄别优质店铺,让你买到就是赚到! 分三步走: 第一步:找到阿里给出的店铺评价历史信息,分为训练集数据和测试集数据; 第二步:利用训练集数据构建机器学习模型; 第三步:使用测试集数据进行准确率判断并优化。 如此便可以建立一个相对科学的靠谱店铺预测模型。 首先,从阿里云天池开一份包含2000家店铺的评分,等级,评论等信息和数年交易记录的数据: 通过这份数据, 我们可以构建一套模型,根据店铺的访问、购买信息等数据,来评测该店铺是否为优质店铺。 一部分数据将用来作为训练集,另一部分数据会用来测试已经训练好模型的精确度。但训练的时候并不是精确度越高越好,过拟合和欠拟合都不是好事情。 欠拟合指模型没有很好地捕捉到数据特征,不能够很好地拟合数据: 过拟合通俗一点地说就是模型把数据学习的太彻底,以至于把噪声数据的特征也学习到了,这样就会导致在后期测试的时候不能够很好地识别数据,即不能正确的分类,模型泛化能力太差: 随后,完成了清理整合等预处理工作,得到了一份适合建模使用的样本数据: *完整代码可以在文末获取。考虑这份数据比较粗糙

从B+树到LSM树,及LSM树在HBase中的应用

最后都变了- 提交于 2021-01-29 07:34:24
前言 在有代表性的关系型数据库如MySQL、SQL Server、Oracle中,数据存储与索引的基本结构就是我们耳熟能详的B树和B+树。而在一些主流的NoSQL数据库如HBase、Cassandra、LevelDB、RocksDB中,则是使用日志结构合并树(Log-structured Merge Tree,LSM Tree)来组织数据。本文先由B+树来引出对LSM树的介绍,然后说明HBase中是如何运用LSM树的。 回顾B+树 为什么在RDBMS中我们需要B+树(或者广义地说,索引)?一句话:减少寻道时间。在存储系统中广泛使用的HDD是磁性介质+机械旋转的,这就使得其顺序访问较快而随机访问较慢。使用B+树组织数据可以较好地利用HDD的这种特点,其本质是多路平衡查找树。下图是一棵高度为3的4路B+树示例。 与普通B树相比,B+树的非叶子节点只有索引,所有数据都位于叶子节点,并且叶子节点上的数据会形成有序链表。B+树的主要优点如下: 结构比较扁平,高度低(一般不超过4层),随机寻道次数少; 数据存储密度大,且都位于叶子节点,查询稳定,遍历方便; 叶子节点形成有序链表,范围查询转化为顺序读,效率高。相对而言B树必须通过中序遍历才能支持范围查询。 当然,B+树也不是十全十美的,它的主要缺点有两个: 如果写入的数据比较离散,那么寻找写入位置时,子节点有很大可能性不会在内存中

堆和堆排序

空扰寡人 提交于 2021-01-22 00:41:48
堆和优先队列 普通队列:FIFO,LILO 优先队列:出队顺序和入队顺序无关,和优先级相关。一个典型应用就是操作系统中。动态选择优先级高的任务执行 堆的实现 最典型的堆就是二叉堆,就像是一颗二叉树。这个堆的特点,下图可以看出: 这里以最大堆为例, ,每一个节点都不大于其父亲节点。另外,堆必须是一颗完全二叉树,正因为此,我们可以使用数组来存储二叉堆如下图所示,给二叉堆自上而下,自左到右表上序号, 由图中节点序号,可以看出,如果某个节点的序号为k,则其左子节点的序号是2*k,右子节点的序号是2*k+1,这里,与通常我们数组的规定不同,根节点是从1开始的,不是0,这也是堆的经典实现方式。不过从0开始标定,也会有类似性质,只是常数的变化。 下面就要实现最大堆,做成一个MaxHeap 类,最大堆中要存储数据,为了通用性,将这个类做成一个模板类。这个最大堆首先得有一个存储数据的数组,在用户定义之前,我们不知道数组的大小,所以该数组是一个指针类型,相应的会在构造函数中初始化该数组。还需要一个int型的size来表示堆中元素数量。所以堆的基本框架如下: 1 template<typename Item> 2 class MaxHeap{ 3 private : 4 Item* data; 5 int count; 6 private : 7 int shiftDown( int k){ 8 9 }

CodeForces 1110F Nearest Leaf | 线段树/换根

老子叫甜甜 提交于 2021-01-07 07:00:27
我……又诈尸了…… 代码几乎都不会写了,打场CF居然上分啦,开心!(虽然还是比不过列表里的各路神仙) 题目链接 题目描述 一棵$n$个点的有根树,规定一种dfs序(规则:编号小的点优先dfs),$m$次询问一个点$u$和一个区间$[l, r]$,求dfs序在这个区间内的叶子中,到$u$最小的距离。 $n, m \le 500000$ 题解 这题……很简单…… 题面一上来给个什么欧拉遍历定义……我吓得比赛中没看这题……(实际上码量对于代码几乎都不会敲的退役选手来说,不是非常友好 = = 当时做了可能也会写跪) 用线段树维护所有叶子到“当前点”(一开始是$1$号节点)的距离$dis$。 一开始以$1$号节点为“当前点”,dfs求距离,建树。这样$u = 1$的询问就可以解决了。 怎么解决其他$u$的询问呢?考虑移动“当前点”时,线段树会如何变化。 因为是DFS序,所以每棵子树在dfs序上都挨在一起。当“当前点”从父亲$u$移到儿子$v$$w(u, v)$时,子树$v$内所有点的$dis$都减去了$w(u, v)$(<u, v>这条边的长度),而子树$v$外的所有点$dis$都加上了$w(u, v)$。只需在线段树上区间修改即可。 显然,先把询问都读进来,离线处理非常优秀。空间允许的话似乎也可以主席树?(没试过 = =) 代码 #include <cstdio> #include

Vxlan

≡放荡痞女 提交于 2020-12-29 22:23:24
来自: http://www.h3c.com/cn/d_201811/1131076_30005_0.htm 解读VXLAN 1 起源-Origin 传统的交换网络解决了二层的互通及隔离问题,这个架构发展了几十年已经相当成熟。而随着云时代的到来,却渐渐暴露出了一些主要的缺点。 Ÿ 多租户环境和虚拟机迁移 为了满足在云网络中海量虚拟机迁移前后业务不中断的需要,要求虚拟机迁移前后的IP不能变化,继而要求网络必须是大二层结构。传统的二层网络技术,在链路使用率、收敛时间等方面都不能满足需要。 Ÿ VLAN的局限 随着云业务的运营,租户数量剧增。传统交换网络用VLAN来隔离用户和虚拟机,但理论上只支持最多4K个标签的VLAN,已无法满足需求。 2 竞争-Competition 为了解决上述局限性,不论是网络设备厂商,还是虚拟化软件厂商,都提出了一些新的Overlay解决方案。 网络设备厂商,基于硬件设备开发出了EVI(Ethernet Virtualization Interconnect)、TRILL(Transparent Interconnection of Lots of Links)、SPB(Shortest Path Bridging)等大二层技术。这些技术通过网络边缘设备对流量进行封装/解封装,构造一个逻辑的二层拓扑,同时对链路充分利用、表项资源分担