- meira
-
1、假如params.subsample不是无穷大且y中元素的个数大于params.subsample;
2、IX含义:假设y=[1
5
2
3
4];,则numel(y)为5,IX即为从1到5的一个打乱顺序的排列;
3、x被赋为IX中从1至5循环的行,比如A(2,:)代表A矩阵的第2行,y同理。
希望评价为满意!
下采样和池化的区别是什么?
有部分同学,在学习初期,会认为下采样和池化是指同样的事情,只是叫法不同而已,其实这是一种错误的认知。下采样(subsampled),或称为降采样(downsampled),指缩小图像。其主要目是使得图像符合显示区域的大小,生成对应图像的缩略图。而池化(Pooling)则是卷积神经网络中一个重要的概念,它是降采样的一种形式。它会压缩输入的特征图,一方面减少了特征,导致了参数减少,进而简化了卷积网络计算时的复杂度;另一方面保持了特征的某种不变性(旋转、平移、伸缩等)。池化的方法:max-pooling:对邻域内特征点取最大值;mean-pooling:对邻域内特征点求平均。池化的作用:降维,减少网络要学习的参数数量;防止过拟合;扩大感受野;实现不变性(平移、旋转、尺度不变性)关于池化的解释:池化 = 涨水池化的过程 = 升高水位(扩大矩阵网格)池化的目的是为了得到物体的边缘形状。下采样和池化应该是包含关系,池化属于下采样,而下采样不局限于池化,如果卷积 stride=2,此时也可以把这种卷积叫做下采样。2023-07-18 09:24:421
池化层的作用不包括
池化层的作用不包括实现特征分类。池化层是当前卷积神经网络中常用组件之一,它最早见于LeNet一文,称之为Subsample。自AlexNet之后采用Pooling命名。池化层是模仿人的视觉系统对数据进行降维,用更高层次的特征表示图像。实施池化的目的:(1) 降低信息冗余;(2) 提升模型的尺度不变性、旋转不变性;(3) 防止过拟合。池化层的常见操作包含以下几种:最大值池化,均值池化,随机池化,中值池化,组合池化等。最大值池化:最大值池化是最常见、也是用的最多的池化操作。最大值池化的核心代码可以描述为:在前向过程,选择图像区域中的最大值作为该区域池化后的值;在后向过程中,梯度通过前向过程时的最大值反向传播,其他位置的梯度为0。在实际应用时,最大值池化又分为:重叠池化与非重叠池化。如AlexNet/GoogLeNet系列中采用的重叠池化,VGG中采用的非重叠池化。但是,自ResNet之后,池化层在分类网络中应用逐渐变少,往往采用stride=2的卷积替代最大值池化层。最大值池化的优点在于它能学习到图像的边缘和纹理结构。2023-07-18 09:24:501
为什么iphone屏幕出现了一个框框放大镜
是因为你的手机开启了缩放功能。1、首先我们选择手机中的【设置】进入,在【设置】中,我们在下方可以找到【通用】。2、在【通用】中有个【辅助功能】,我们进入它。3、然后我们选择【缩放】打开。4、在缩放中需要把上面的绿色按钮点掉。按照以上方法,就可以关闭放大镜了。拓展资料1、缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个,然而,确实有一些缩放方法能够增加图像的信息,从而使得缩放后的图像质量超过原图质量的。2、放大图像(或称为上采样(upsampling)或图像插值(interpolating))的主要目的是放大原图像,从而可以显示在更高分辨率的显示设备上。对图像的缩放操作并不能带来更多关于该图像的信息, 因此图像的质量将不可避免地受到影响。2023-07-18 09:25:101
stata怎么生成subsample
keep or drop后,保存即可2023-07-18 09:25:451
3dsmax cloth命令,有的物体直接穿透过去怎么回事?各面数很多了,8000--17000。
增加细分试试2023-07-18 09:26:152
生活中图形放大或缩小的知识或现象
鱼缸里的鱼。倒车镜。2023-07-18 09:26:243
外贸中的手版样和对照样是什么 ,用英文怎么翻译
Hand sample绝对准2023-07-18 09:26:552
【XGBOOST】原生参数解释
u2003u2003xgboost作为横扫kaggle的王牌算法,其学习应用速度及运行速度都极其快速。在这篇分享中,我将不在赘述xgboost的算法原理,而是整合xgboost原生函数的参数解释以作知识归档。( sklearn也封装了xgboost,所以调用xgboost可以通过xgboost包和sklearn两种方式 ) u2003u2003xgboost的算法思想简单来说是通过不断地添加树,不断地进行特征分裂来生长一棵树,即学习一个新函数去拟合上次预测的残差。( 注意:新生成的树要拟合上次预测的残差。 ) u2003u2003这是一个字典,里面包含着训练中的参数关键字和对应的值,形式如下: u2003u2003(1)确定学习速率和提升参数调优的初始值 u2003u2003(2)max_depth 和 min_child_weight 参数调优 u2003u2003(3) gamma参数调优 u2003u2003(4)subsample 和 colsample_bytree 参数优 u2003u2003(5)正则化参数alpha调优 u2003u2003(6)降低学习速率和使用更多的决策树2023-07-18 09:27:081
图形学笔记五 视口变换 光栅化 抗锯齿
参考课程: https://www.bilibili.com/video/BV1X7411F744?p=5 https://www.bilibili.com/video/BV1X7411F744?p=6 在上一节说到,所有的物体都会变为-1到1的立方体内,下一步就是光栅化了。 只需要定义上面这两个,其它的都可以算出来: 这个可以理解为数组,比如蓝色方块那个像素,就是(2,1),然后它的中心是(2.5,1.5),即(x+0.5,y+0.5) 缩放系数很简单,就是把宽高为2,拉伸到width,heigh。那么矩阵的缩放参数就是width/2,height/2 现在缩放完之后,还需要平移。因为之前是在0,0的位置,现在需要移动到屏幕的中央。屏幕的左下角是0,0,所以平移向量就是width/2,height/2。 上面这个变换,就称为视口变换。 经过了MVP和视口变换之后,三维空间的几何形体就被映射到了屏幕空间里,想要得到图像,需要用这些信息进行光栅化,将其变成像素。 三角形是最基础的多边形,用于算法建模及扫描模型。四边形建模方便对齐uv线,人工调整方便。 对屏幕中的像素中心进行采样,判断是否在三角形内部: 这里自然是之前讲过的叉乘,考虑三角形的顺序,都在左边或都在右边,都是在三角形的内部。 特殊情况:如果正好在三角形边上,不处理或者特殊处理,暂不讨论。 实际上只需要计算那个蓝色盒子内的像素是否在三角形内部。还有更快的优化方式,每一行都只找最左和最右: 观察行驶中的车轮,有时会发现车轮像是在倒转,这是因为眼睛采样不足,跟不上车轮的转动速度。 接下来的视频,建议先阅读一下这两个链接再继续看: H264系列五 图像与滤波 H264系列六 傅里叶变换 这个概念有点复杂了,参考 可以简单地理解,是平均,做了一个平滑处理。比如,任何一个像素,都是它周围3乘3像素的平均,这样就模糊处理了。 时域的卷积等于频域的乘积???这句话没有去深入理解,从这句话开始,后边进度条一直到59分左右听的是一脸懵逼了……感谢弹幕提醒,需要补以下知识: 不过可以直接听进度59分以后的结论: 在进度1小时05分那里,继续往下看视频,建议先看一下MSAA的基本概念。下面这个文章让我完全看懂了: MSAA,全名Multi-Sample Anti-Aliasing,是抗锯齿的一种方法。一般而言,一个像素只有一个采样点,这个点一般在像素的正中心。如果打开了MSAA,那么每个像素内的采样点将不止一个,例如2x,4x,8x,16x等每个像素的采样点分别为2个,4个,8个,16个。这些样本点在像素内的分布位置,是有一定讲究的(为了降低锯齿感),各家GPU所支持的pattern可能不太一样。例如下面的两种4x的pattern,读者可以自己想象一下右边的pattern的优点哦(一个实线矩形代表一个像素,一个黑色的点代表一个采样点)。 在了解MSAA之前,首先我们需要知道什么是锯齿?锯齿是怎么产生的?为什么要抗锯齿? 第一个问题,什么是锯齿?锯子相信绝大部分人都见过,图形学上的锯齿表现也是这种类似阶梯的形状,对于锯子而言锯齿是有利的,但是在图形学上,我们总希望尽量去降低这种锯齿感,如下图所示,你想在一块16x16的分辨率下画一个填充有红色的三角形,但最后的显示却如下图所示,填充红色的区域为最终显示的三角形。有的人可能会问,为啥我在显示器上没见过锯齿,那是因为现在的显示屏的分辨率一般都比较高,而在dpi较低的显示屏上会比较容易能看到锯齿。现在一般6英寸的移动手机的分辨率就能达到1080p,而很多27英寸的显示器的分辨率也才1080p,所以相比较之下,在桌面级显示器更容易能看到锯齿。 第二个问题,图形学上的锯齿是怎么产生的?锯齿是由于采样不足所造成的,我们知道线段是由无数个点组成的,所以如果你想准确的显示一条线段,你应该要采样无数个点,但是对于显示器而言,这不现实。首先显示器上的像素点是有大小的,然后像素的个数也是有限的,而且每个像素在物理上只能显示出一种颜色。这里顺便解释一下MSAA中的多个采样点是怎么回事,物理上决定每个像素只能显示一种颜色,这是肯定的,即使每个像素内有多个采样点最终也只能显示为一种颜色,那么增加采样点有什么意义呢?哈哈,又留下一个问题,别着急,请接着往下看。 第三个问题,为什么要抗锯齿?从上面的图我们可以看到,显示屏上显示的图形的边缘带有锯齿,这显然不是我们想要的,所以要想办法来降低边缘的锯齿感,给我们一个更好的视觉效果,这就是抗锯齿。 现在我们知道为什么要抗锯齿以及什么是抗锯齿了。那么接下来的问题就是怎么做抗锯齿了? 刚才我们有提到,正常情况下(no MSAA),每个像素只有一个采样点,一般在中间,如下图所示,右图是左图区域放大后的结果。 上图标出了两个像素的采样点,我们可以看到,只要采样点在三角形外,那么这个像素将不会被着色。判断采样点是否在三角形内是在光栅化的时候确定的。可想而知,这是不合理的,对于上面的像素,大概有1/4的面积其实是被三角形覆盖的,但是由于采样点在中心,中心没被覆盖的缘故导致这个像素被判断为不在三角形内而最终没被着色,所以该像素最后呈现的就是背景色(此处为白色);对于下面的像素,大概有3/4的面积在三角形内,由于中心的采样点在三角形内,所以最终呈现的就是红色。 那么MSAA是怎么做的呢?multi-sample顾名思义,就是增加采样点的个数,在一个像素内采样2个点,4个点,8个点,16个点等等。回到刚才留下的问题,增加采样点的意义在哪?对于no MSAA的情况,在光栅化的时候会输出一个mask来给出哪些像素被三角形覆盖了,这些被覆盖的像素再去做depth stencil test,幸存下来再去做fragment shading对像素着色;打开MSAA之后,这个mask会给出哪些采样点被三角形覆盖了,然后这些采样点会单独去做depth test 和stencil test,有幸存样本点的像素再去做fragment shading。 这里多说一句,默认情况fragment shading对于一个像素只做一次即使你打开了MSAA(为了性能),具体拿哪一个采样点去做,各家可能不太一样,一般可能是像素的中心。也就是说,最终你的像素是什么颜色(每个物理像素只能显示一个颜色),是由每个采样点决定的,fragment shading决定了被覆盖的采样点都是这种颜色,最后每个采样点的颜色求和平均之后就是像素的颜色。当然你也可以打开sample shading这个extension让每个采样点都做fragment shading,不过这样带来的性能消耗会很大。 好吧,再多说一句,一个像素的几个采样点可以是不同的颜色,为什么呢?因为一个像素可能会被多个三角形覆盖到,如下图所示,该像素被两个三角形覆盖,那么最后它的颜色就是2/4红色+1/4蓝色+1/4背景色。Fragment shading之后,结合采样点覆盖的mask将每个样本的颜色存储在buffer里面,所以对于4xMSAA,buffer的大小需要分配4倍。当然对于TBR(Tile based rendering)架构的设备,framebuffer的大小不用改变,只需要在tile buffer分配的时候增大相应的倍数就行了,写出去到framebuffer的时候,硬件会有一个resolve的操作,只写出最终的颜色。 那么MSAA我们现在大致了解了。回到刚才的话题,如果是4x的MSAA,那么上面的锯齿三角形会是什么样的呢?先看结果,如下图所示。 上图可以看到,对于上面的一个像素,4个采样点中有一个在三角形内,所以这个像素的颜色就是1/4的红色加上3/4的背景色(白色),最后呈现的是浅红色;对于下面的一个像素,有3个采样点位于三角形内,所以这个像素的颜色就是3/4的红色加上1/4的背景色(白色),最后呈现的是深红色,这看起来合理多了。 没有MSAA以及打开4xMSAA的对比图如下图所示,可以看到打开了MSAA之后,三角形的边缘呈现的是过渡色,这样的视觉效果更好,这就是抗锯齿的结果,当然如果继续增加采样点的个数,效果将会更好,但是天下没有免费的午餐,增加subsample的个数对应的性能消耗也会增加。 如果你看上面的图,觉得效果不明显,那是因为16x16的被我放大了很多倍,可以看下面的,是不是边缘稍微平滑了点呢。所以我们可以看粗来,MSAA其实就是增加像素内采样点的个数来平滑/模糊边缘,从而在视觉上欺骗我们的观众达到抗锯齿的效果。 此图是4MSAA,即一个像素点对应4个采样点,对于边界,我们根据其像素点包围的点数来计算其颜色值,比如边界像素点包含2个采样点,那么它最终的颜色就应该是本来的颜色2/4,同理,如果包含一个,就是颜色*1/4,最终 的效果如下: 这样看起来“圆滑”很多。其优点比较突出,效果也不错,但是注意,它不适合延迟渲染,这里说的不适合并不是不支持,延迟渲染也能支持MSAA,但是支持他就会大量浪费空间。 延迟渲染是什么,在这里不做过多介绍,总之他为了优化光照着色,需要一个GBuffer,这个就是临时渲染出的结果的缓存因为需要GBuffer,所以MSAA也需要进行临时保存,那么保存临时数据的后果则是浪费大量显存。 前面可知4x MSAA的显存消耗是4x的关系,假设我们按照2k的原生分辨率来做,一个RT就是64 MB,用来做MSAA的那个RT就会是不低于256MB。又因为GBuffer至少存depth,normal,basecolor3张RT,那三个MSAA RT就是768MB,这种消耗非常巨大,因此可以理解为“不支持”。 首先所有MSAA, SSAA, FXAA, TXAA等都是抗锯齿(Anti-Aliasing)技术。 锯齿的来源是因为场景的定义在三维空间中是连续的,而最终显示的像素则是一个离散的二维数组。所以判断一个点到底没有被某个像素覆盖的时候单纯是一个“有”或者“没有"问题,丢失了连续性的信息,导致锯齿。 最直接的抗锯齿方法就是SSAA(Super Sampling AA)。拿4xSSAA举例子,假设最终屏幕输出的分辨率是800x600, 4xSSAA就会先渲染到一个分辨率1600x1200的buffer上,然后再直接把这个放大4倍的buffer下采样致800x600。这种做法在数学上是最完美的抗锯齿。但是劣势也很明显,光栅化和着色的计算负荷都比原来多了4倍,render target的大小也涨了4倍。 MSAA(Multi-Sampling AA)则很聪明的 只是在光栅化阶段,判断一个三角形是否被像素覆盖的时候会计算多个覆盖样本(Coverage sample),但是在pixel shader着色阶段计算像素颜色的时候每个像素还是只计算一次。 例如下图是4xMSAA,三角形只覆盖了4个coverage sample中的2个。所以这个三角形需要生成一个fragment在pixel shader里着色,只不过生成的fragment还是在像素中央(位置,法线等信息插值到像素中央)然后只运行一次pixel shader,最后得到的结果在resolve阶段会乘以0.5,因为这个三角形只cover了一半的sample。现代所有GPU都在硬件上实现了这个算法,而且在shading的运算量远大于光栅化的今天,这个方法远比SSAA快很多。顺便提一下之前NV的CSAA,它就是更进一步的把coverage sample和depth,stencil test分开了。 需要继续扩展阅读下面三篇文章,我这里只做一些摘选 第一种思路自然就是在每个像素中进行多次采样,然后根据多次采样的结果综合来计算像素的颜色值。使用这种方式来实现的抗锯齿技术有MSAA,TAA。 第二种思路是通过后处理的方式,寻找屏幕中的像素块边界,然后根据边界的信息,将两侧的像素点颜色进行插值,这样就会得到平滑过渡的边缘,实现抗锯齿的效果。使用这种方式来实现的抗锯齿技术有FXAA,SMAA。 这四种抗锯齿技术是目前最主流、最常见的抗锯齿技术方案。本系列文章也将将逐一讲解这些抗锯齿技术。 MSAA是最早出现的抗锯齿技术,主要通过硬件实现的,是以前非常流行的抗锯齿方式。在以前游戏画面质量很低的时候,额外性能消耗不大。但是随着游戏画面的升级,游戏中每帧需要绘制的物体也越来越多,MSAA的额外消耗也越来越大。 FXAA、SMAA是通过后处理实现抗锯齿的方式,这类抗锯齿方式的开销固定,不会因为绘制物体的多少而影响开销。 TAA最早是用于实现一些如SSR、Volume Cloud中的降噪中。近些年来延迟渲染管线逐渐流行,而由于带宽限制,延迟渲染无法使用 MSAA,而后处理的抗锯齿又没有次像素的功能,因此TAA逐渐作为抗锯齿方式,跟随延迟管线流行起来,并被UE4发扬光大。 以Unity为例,URP支持MSAA、FXAA、SMAA三种抗锯齿方式,HDRP支持FXAA、SMAA、TAA三种抗锯齿方式。 优点:使用起来简单方便,抗锯齿效果非常好。 缺点:会额外消耗大量内存和带宽,特别是对于延迟渲染来说,GBuffer 本身就已经很大了,如果再使用 MSAA,额外的带宽消耗极大。因此延迟渲染一般不会使用 MSAA来作为实现抗锯齿手段。而目前大部分 PC 端游戏都是基于延迟渲染管线的,包括Unity 的 HDRP ,所以 PC 游戏一般不会使用 MSAA。 从对硬件的利用率上来说,MSAA 对硬件的利用率其实很低,因为很多时候我们想要抗锯齿的部分,都只是在物体边缘或者高光变化的高频部分。其他颜色不怎么变化,比较低频的地方,其实是不需要抗锯齿效果的。使用 MSAA 进行大量物体的渲染时,很多带宽是被浪费的。因此即使在手机上,目前使用 MSAA 的情况也比较少。可以说,MSAA 是一种比较经典,但是目前显得略有些过时的抗锯齿方式。 不过有一种情况,是后面我们将要讲的基于后处理的方式无法处理的,那就是渲染比较细小的物体时。比如渲染头发,细绳子等物体时,因为物体太细,常常得到的图像宽度甚至不足一个像素,这时就只能使用 MSAA 或者 TAA 进行处理了。 为了搞懂TAA,我又参考了别的文章,比如: 图形学基础 - 着色 - TAA抗锯齿 TAA 是一种抗空域走样的技术,也有人译为帧间抗锯齿。我在前文 《采样理论》 中把走样分为了时域走样(如旋转车轮)和空域走样(锯齿),但在此处 TAA 技术是为了解决空域走样的问题,注意不要混淆。 简单回顾一些空域抗锯齿 (Spatial Anti-Aliasing, SAA) 技术,最普及的莫过于 MSAA,被各大渲染引擎采用,但是 MSAA 并不适用于延迟渲染 (Deferred Rendering),随之出现了很多基于形态学的后处理抗锯齿技术,如 MLAA,FXAA,SMAA 等,虽然他们表现良好且支持延迟渲染,但是都会面临时间稳定性不强的问题,TAA 刚好解决了这一点。 如下图所示,SSAA在每帧都需要执行多个子像素采样,而TAA则是把这些采样点均摊到多帧,减轻了每帧的负担: 后面的内容我就不复制了,看到这张图应该大致明白TAA是怎么做的了。 --------------------------分隔线--------------------- TAA的原理和 SSAA 大致相同,都是每个像素点有多个采样点。但是不同与 SSAA 的方式, TAA (Temporal Anti-Aliasing) 综合历史帧的数据来实现抗锯齿,这样会将每个像素点的多次采样均摊到多个帧中,相对的开销要小得多。 TAA 本质上是和 SSAA 类似的原理,所以完全不会有后处理抗锯齿的次像素问题,AA效果可以和 MSAA 相当。由于 MSAA 在延迟渲染管线中无法使用,且使用 Motion Vector 也和延迟渲染比较契合,因此在 Unreal 引擎的带领下,TAA 目前也逐渐成为现代 3A游戏的标配。 当然其缺点也比较明显,虽然 TAA 实现的原理并不复杂,但是和渲染管线关系密切,需要改动的地方较多。可以说是牵一发而动全身,对于其他的每一项渲染功能,都需要考虑 TAA 的影响。 除此之外 TAA 中很容易出现一些闪烁,鬼影等问题,需要不同的应用场景进行处理。因为 TAA 和渲染管线是紧密相关的,在不同游戏引擎中,TAA的很多细节处理方式都不太一样。 除了增加每个像素点的采样数,我们实现抗锯齿的另一种方式就是后处理。考虑到大部分情况下,我们想要抗锯齿的部分,其实都只是在物体边缘或者高光变化的部分,我们通过后处理的方式,检测出图像块之间的边缘(通过卷积么???),然后根据边缘信息对边缘两侧的图像进行混合处理,达到抗锯齿的效果。这类基于后处理的抗锯齿方式也叫做形变抗锯齿/Morphological antialiasing。 比如下图中的图像,左边是待处理的图像,中间是找到的边界,右侧是将边界两侧像素混合后得到的抗锯齿效果。 形变抗锯齿的实现方式有非常多种,原理大致都是基于上面提到的过程。有两种形变抗锯齿经历了时间的考验,成为了目前最流行的抗锯齿方式,就是 FXAA 和 SMAA,我们这里就先来分析下 FXAA 实现的原理。 FXAA(fast approximate antialiasing) 是一种比较注重性能的形变抗锯齿方式,只需要一次 Pass 就能得到结果,FXAA 注重快速的视觉抗锯齿效果,而非追求完美的真实抗锯齿效果。 FXAA 的优点就是集成比较方便,只需要一个 Pass 来实现抗锯齿,同时提供了两个版本,可根据情况灵活选用,是目前手机上的最常用的抗锯齿方式。 FXAA的缺点是画面会略微有些模糊。而且由于FXAA是基于后处理判断边界来实现的,因此没有次像素特性,在光照高频(颜色变化很快)的地方会不稳定。单独看静态的场景没有问题,但是移动摄影机时,就会导致一些闪烁。 现在终于可以回到视频的1小时15分左右了,有了上面的知识点了解,再来听FXAA和TAA就很简单了。 看到有弹幕说原神用了TAA,嗯?? 然后提到了DLSS,思路类似,不过是用深度学习,猜出来的2023-07-18 09:27:171
【求助】求matlab小波变换图像处理实现程序~
求正确答案2023-07-18 09:27:251
xgboost 多分类 标签怎么设置
网页链接2023-07-18 09:27:591
什么是 cluster sampling, 请加以解释.
Cluster sampling is a sampling technique used when "natural" groupings are evident in a statistical population. It is often used in marketing research. In this technique the total population is divided into these groups (or clusters) and a sample of the groups is selected. Then the required information is collected from the elements within each selected group. This may be done for every element in these groups or a subsample of elements may be selected within each of these groups. The technique works best when most of the variation in the population is within the groups not beeen them 整群抽样 (Cluster sampling) 目录 1 什么是整群抽样 2 整群抽样的优缺点 3 整群抽样的实施步骤 4 整群抽样与分层抽样的匹别 什么是整群抽样 整群抽样又称聚类抽样。是将总体中各单位归并成若干个互不交叉、互不重复的 *** ,称之为群;然后以群为抽样单位抽取样本的一种抽样方式。 整群抽样应用整群抽样时,要求各群有较好的代表性,即群内各单位的差异要大,群间差异要小。 整群抽样的优缺点 整群抽样的优点是实施方便、节省经费; 整群抽样的缺点是往往由于不同群之间的差异较大,由此而引起的抽样误差往往大于简单随机抽样。 整群抽样的实施步骤 先将总体分为i个群,然后从i个群钟随即抽取若干个群,对这些群内所有个体或单元均进行调查。抽样过程可分为以下几个步骤: 一、确定分群的标注 二、总体(N)分成若干个互不重叠的部分,每个部分为一群。 三、据各样本量,确定英国抽取的群数。 四、采用简单随机抽样或系统抽样方法,从i群中抽取确定的群数。 整群抽样与分层抽样的匹别 整群抽样与分层抽样在形式上有相似之处,但实际上差别很大。 分层抽样要求各层之间的差异很大,层内个体或单元差异小,而整群抽样要求群与群之间的差异比较小,群内个体或单元差异大; 分层抽样的样本时从每个层内抽取若干单元或个体构成,而整群抽样则是要么整群抽取,要么整群不被抽取。2023-07-18 09:28:261
LightGBM 如何确定最佳迭代次数?
LightGBM中实现了哪些梯度增强方法,它们有什么区别?一般来说,哪些参数是重要的?哪些正则化参数需要调整?如何调整lightGBM参数在python?梯度提升的方法使用LightGBM,你可以运行不同类型的渐变增强提升方法。你有:GBDT、DART和GOSS,这些可以通过“boosting”参数指定。在下一节中,我将对这些方法进行解释和比较。梯度提升决策树(GBDT)该方法是本文首先提出的传统梯度提升决策树,也是XGBoost和pGBRT等优秀库背后的算法。由于其精度高、效率高、稳定性好,目前已得到广泛的应用。你可能知道gbdt是一个决策树的集合模型但是它到底是什么意思呢?让我来告诉你要点。它基于三个重要原则:弱学习者(决策树)梯度优化提升技术所以在gbdt方法中,我们有很多决策树(弱学习者)。这些树是按顺序构建的:首先,树学习如何适应目标变量第二棵树学习如何适合残差(差异)之间的预测,第一棵树和地面真相第三棵树学习如何匹配第二棵树的残差,以此类推。所有这些树都是通过传播整个系统的误差梯度来训练的。gbdt的主要缺点是,在每个树节点中找到最佳分割点非常耗时,而且会消耗内存。其他的提升方法试图解决这个问题。DART梯度提升在这篇优秀的论文中(arxiv/1505.01866),你可以学习所有关于DART梯度提升的东西,这是一种使用dropout(神经网络中的标准)的方法,来改进模型正则化和处理一些其他不太明显的问题。也就是说,gbdt存在过度专门化(over-specialization)的问题,这意味着在以后的迭代中添加的树往往只会影响对少数实例的预测,而对其余实例的贡献则可以忽略不计。添加dropout会使树在以后的迭代中更加难以专门化那些少数的示例,从而提高性能。lgbm goss基于梯度的单边采样事实上,将该方法命名为lightgbm的最重要原因就是使用了基于本文的Goss方法。Goss是较新的、较轻的gbdt实现(因此是“light”gbm)。标准的gbdt是可靠的,但在大型数据集上速度不够快。因此goss提出了一种基于梯度的采样方法来避免搜索整个搜索空间。我们知道,对于每个数据实例,当梯度很小时,这意味着不用担心数据是经过良好训练的,而当梯度很大时,应该重新训练。这里我们有两个方面,数据实例有大的和小的渐变。因此,goss以一个大的梯度保存所有数据,并对一个小梯度的数据进行随机抽样(这就是为什么它被称为单边抽样)。这使得搜索空间更小,goss的收敛速度更快。让我们把这些差异放在一个表格中:注意:如果你将增强设置为RF,那么lightgbm算法表现为随机森林而不是增强树! 根据文档,要使用RF,必须使用baggingfraction和featurefraction小于1。正则化在这一节中,我将介绍lightgbm的一些重要的正则化参数。显然,这些是您需要调优以防止过拟合的参数。您应该知道,对于较小的数据集(<10000条记录),lightGBM可能不是最佳选择。在这里,调优lightgbm参数可能没有帮助。此外,lightgbm使用叶向树生长算法,而xgboost使用深度树生长算法。叶向方法使树的收敛速度更快,但过拟合的几率增加。注意:如果有人问您LightGBM和XGBoost之间的主要区别是什么?你可以很容易地说,它们的区别在于它们是如何实现的。根据lightGBM文档,当面临过拟合时,您可能需要做以下参数调优:使用更小的max_bin使用更小的num_leaves使用mindatainleaf和minsumhessianin_leaf通过设置baggingfraction和baggingfreq使用bagging_freq通过设置feature_fraction使用特征子采样使用更大的训练数据尝试lambdal1、lambdal2和mingainto_split进行正则化尝试max_depth以避免树的深度增长在下面的部分中,我将更详细地解释这些参数。lambda_l1Lambdal1(和lambdal2)控制l1/l2,以及mingainto_split用于防止过拟合。我强烈建议您使用参数调优(在后面的小节中讨论)来确定这些参数的最佳值。num_leavesnumleaves无疑是控制模型复杂性的最重要参数之一。通过它,您可以设置每个弱学习者拥有的叶子的最大数量。较大的numleaves增加了训练集的精确度,也增加了因过度拟合而受伤的几率。根据文档,一个简单的方法是numleaves = 2^(maxdepth)但是,考虑到在lightgbm中叶状树比层次树更深,你需要小心过度拟合!因此,必须同时使用maxdepth调优numleaves。子采样通过子样例(或bagging_fraction),您可以指定每个树构建迭代使用的行数百分比。这意味着将随机选择一些行来匹配每个学习者(树)。这不仅提高了泛化能力,也提高了训练速度。我建议对基线模型使用更小的子样本值,然后在完成其他实验(不同的特征选择,不同的树结构)时增加这个值。feature_fraction特征分数或子特征处理列采样,LightGBM将在每次迭代(树)上随机选择特征子集。例如,如果将其设置为0.6,LightGBM将在训练每棵树之前选择60%的特性。这个功能有两种用法:可以用来加速训练吗可以用来处理过拟合吗max_depth该参数控制每棵经过训练的树的最大深度,将对:num_leaves参数的最佳值模型的性能训练时间注意,如果您使用较大的max_depth值,那么您的模型可能会对于训练集过拟合。max_bin装箱是一种用离散视图(直方图)表示数据的技术。Lightgbm在创建弱学习者时,使用基于直方图的算法来寻找最优分割点。因此,每个连续的数字特性(例如视频的视图数)应该被分割成离散的容器。此外,在这个GitHub repo(huanzhang12/lightgbm-gpu)中,你可以找到一些全面的实验,完全解释了改变max_bin对CPU和GPU的影响。如果你定义maxbin 255,这意味着我们可以有255个唯一的值每个特性。那么,较小的maxbin会导致更快的速度,较大的值会提高准确性。训练参数当你想用lightgbm训练你的模型时,一些典型的问题可能会出现:训练是一个耗时的过程处理计算复杂度(CPU/GPU RAM约束)处理分类特征拥有不平衡的数据集定制度量的需要需要对分类或回归问题进行的调整在本节中,我们将尝试详细解释这些要点。num_iterationsNum_iterations指定增强迭代的次数(要构建的树)。你建立的树越多,你的模型就越精确,代价是:较长的训练时间过拟合的可能性更高从较少的树开始构建基线,然后当您想从模型中挤出最后的%时增加基线。建议使用更小的learningrate和更大的numiteration。此外,如果您想要更高的numiteration,那么您应该使用earlystopping_rounds,以便在无法学习任何有用的内容时停止训练。earlystoppingrounds如果验证度量在最后一轮停止后没有改进,此参数将停止训练。这应该与一些迭代成对地进行定义。如果你把它设置得太大,你就增加了过拟合的变化(但你的模型可以更好)。经验法则是让它占num_iterations的10%。lightgbm categorical_feature使用lightgbm的优势之一是它可以很好地处理分类特性。是的,这个算法非常强大,但是你必须小心如何使用它的参数。lightgbm使用一种特殊的整数编码方法(由Fisher提出)来处理分类特征实验表明,该方法比常用的单热编码方法具有更好的性能。它的默认值是“auto”,意思是:让lightgbm决定哪个表示lightgbm将推断哪些特性是绝对的。它并不总是工作得很好,我强烈建议您简单地用这段代码手动设置分类特性cat_col = dataset_name.select_dtypes(‘object").columns.tolist()但是在幕后发生了什么,lightgbm是如何处理分类特征的呢?根据lightgbm的文档,我们知道树学习器不能很好地使用一种热编码方法,因为它们在树中深度生长。在提出的替代方法中,树形学习器被最优构造。例如,一个特征有k个不同的类别,有2^(k-1) -1个可能的划分,通过fisher方法,可以改进到k * log(k),通过找到分类特征中值排序直方图的最佳分割方式。isunbalance vs scalepos_weight其中一个问题,你可能面临的二分类问题是如何处理不平衡的数据集。显然,您需要平衡正/负样本,但如何在lightgbm中做到这一点呢?lightgbm中有两个参数允许你处理这个问题,那就是isunbalance和scalepos_weight,但是它们之间有什么区别呢?当您设置Is_unbalace: True时,算法将尝试自动平衡占主导地位的标签的权重(使用列集中的pos/neg分数)如果您想改变scaleposweight(默认情况下是1,这意味着假设正负标签都是相等的),在不平衡数据集的情况下,您可以使用以下公式来正确地设置它sample_pos_weight = number of negative samples / number of positive sampleslgbm函数宏指令(feaval)有时你想定义一个自定义评估函数来测量你的模型的性能,你需要创建一个“feval”函数。Feval函数应该接受两个参数:preds 、train_data并返回evalname、evalresult、ishigherbetter让我们一步一步地创建一个自定义度量函数。定义一个单独的python函数def feval_func(preds, train_data): # Define a formula that evaluates the results return ("feval_func_name", eval_result, False)使用这个函数作为参数:print("Start training...") lgb_train = lgb.train(..., metric=None, feval=feval_func)注意:要使用feval函数代替度量,您应该设置度量参数 metric “None”。分类参数与回归参数我之前提到的大多数事情对于分类和回归都是正确的,但是有些事情需要调整。具体你应该:lightgbm最重要的参数我们已经在前面的部分中回顾并了解了有关lightgbm参数的知识,但是如果不提及Laurae令人难以置信的基准测试,那么关于增强树的文章将是不完整的。您可以了解用于lightGBM和XGBoost的许多问题的最佳默认参数。你可以查看这里,但一些最重要的结论是:注意:绝对不要理会任何参数值的默认值,并根据您的问题进行调整。 也就是说,这些参数是超参数调整算法的一个很好的起点。Python中的Lightgbm参数调整示例最后,在解释完所有重要参数之后,该进行一些实验了!我将使用最受欢迎的Kaggle竞赛之一:Santander Customer Transaction Prediction. 交易预测我将使用本文介绍如何在任何脚本中的Python中运行超参数调整。在开始之前,一个重要的问题! 我们应该调整哪些参数?请注意您要解决的问题,例如,Santander 数据集高度不平衡,在调整时应考虑到这一点!一些参数是相互依赖的,必须一起调整。 例如,mindatainleaf取决于训练样本和numleaves的数量。注意:为超参数创建两个字典是一个好主意,一个字典包含您不想调整的参数和值,另一个字典包含您想要调整的参数和值范围。SEARCH_PARAMS = {"learning_rate": 0.4, "max_depth": 15, "num_leaves": 20, "feature_fraction": 0.8, "subsample": 0.2} FIXED_PARAMS={"objective": "binary", "metric": "auc", "is_unbalance":True, "boosting":"gbdt", "num_boost_round":300, "early_stopping_rounds":30}2023-07-18 09:28:341
samtools常用命令详解
samtools是一个用于操作sam和bam文件的工具集合。 view命令的主要功能是: 将输入文件转换成输出文件,通常是将比对后的sam文件转换为bam文件 ,然后对bam文件进行各种操作,比如数据的排序(和提取(这些操作是对bam文件进行的,因而当输入为sam文件的时候,不能进行该操作)。 view命令中,对sam文件头部的输入( -t 或 -T )和输出( -h )是单独的一些参数来控制的。 默认情况下不加 region,则是输出所有的 region. Options: -b output BAM 默认下输出是 SAM 格式文件,该参数设置输出 BAM 格式 -h print header for the SAM output 默认下输出的 sam 格式文件不带 header,该参数设定输出sam文件时带 header 信息 -H print header only (no alignments) -S input is SAM 默认下输入是 BAM 文件,若是输入是 SAM 文件,则最好加该参数,否则有时候会报错。 -u uncompressed BAM output (force -b) 该参数的使用需要有-b参数,能节约时间,但是需要更多磁盘空间。 -c Instead of printing the alignments, only count them and print the total number. All filter options, such as ‘-f", ‘-F" and ‘-q" , are taken into account. -1 fast compression (force -b) -x output FLAG in HEX (samtools-C specific) -X output FLAG in string (samtools-C specific) -c print only the count of matching records -L FILE output alignments overlapping the input BED FILE [null] -t FILE list of reference names and lengths (force -S) [null] 使用一个list文件来作为header的输入 -T FILE reference sequence file (force -S) [null] 使用序列fasta文件作为header的输入 -o FILE output file name [stdout] -R FILE list of read groups to be outputted [null] -f INT required flag, 0 for unset [0] -F INT filtering flag, 0 for unset [0] Skip alignments with bits present in INT [0] 数字4代表该序列没有比对到参考序列上 数字8代表该序列的mate序列没有比对到参考序列上 -q INT minimum mapping quality [0] -l STR only output reads in library STR [null] -r STR only output reads in read group STR [null] -s FLOAT fraction of templates to subsample; integer part as seed [-1] -? longer help</pre> 如果没有指定option和region选项,则会在屏幕中显示sam格式的文件,如下所示。 例子: (1)将sam文件和bam文件相互转换。注意: 没有header的sam文件不能转换成bam文件。 (2) 提取比对到参考序列上的比对结果 F (3)提取paired reads中两条reads都比对到参考序列上的比对结果,只需要把两个4+8的值12作为过滤参数即可 (4) 提取没有比对到参考序列上的比对结果 f (5)提取paired reads中比对到参考基因组上的数据 (6)提取bam文件中比对到caffold1上的比对结果,并保存到sam文件格式 (7)提取scaffold1上能比对到30k到100k区域的比对结果 (8)根据fasta文件,将 header 加入到 sam 或 bam 文件中 (9)sam 和 bam 格式转换 对bam文件进行排序,不能对sam文件进行排序。以leftmost coordinates的方式对比对结果进行排序,或者使用-n参数以read名称进行排序。将会添加适当的@HD-SO排序顺序标头标签或者如果有必要的话,将会更新现存的一个排序顺序标头标签。sort命令的输出默认是标准输出写入,或者使用-o参数时,指定bam文件输出名。sort命令还会在内存不足时创建临时文件tmpprefix.%d.bam Options: -m 设置每个线程运行时的内存大小,可以使用K,M和G表示内存大小。默认下是 500,000,000 即500M。对于处理大数据时,如果内存够用,则设置大点的值,以节约时间。 -n 设置按照read名称进行排序。默认下是按序列在fasta文件中的顺序(即header)和序列从左往右的位点排序。 -l INT 设置输出文件压缩等级。0-9,0是不压缩,9是压缩等级最高。不设置此参数时,使用默认压缩等级; -o FILE 设置最终排序后的输出文件名; -O FORMAT 设置最终输出的文件格式,可以是bam,sam或者cram,默认为bam; -T PREFIX 设置临时文件的前缀; -@ INT 设置排序和压缩是的线程数量,默认是单线程。 例子: 当有多个样本的bam文件时,可以使用samtools的merge命令将这些bam文件进行合并为一个bam文件。。Merge命令将多个已经排序后的bam文件合并成为一个排序的且保持所有输入记录并保持现有排序顺序的bam文件。 Options: -1 指定压缩等级; -b FILE 输入文件列表,一个文件一行; -f overwrite the output BAM if exist 强制覆盖同名输出文件; -h FILE copy the header in FILE to <out.bam> [in1.bam]。 指定FILE内的"@"头复制到输出bam文件中并替换输出文件的文件头。否则,输出文件的文件头将从第一个输入文件复制过来; -n sort by read names。设定输入比对文件是以read名进行排序的而不是以染色体坐标排序的; -R STR merge file in the specified region STR [all]。合并输入文件的指定区域; -r attach RG tag (inferred from file names)。使RG标签添加到每一个比对文件上,标签值来自文件名; -u uncompressed BAM output。输出的bam文件不压缩; -c 当多个输入文件包含相同的@RG头ID时,只保留第一个到合并后输出的文件。当合并多个相同样本的不同文件时,非常有用。 -p 与-c参数类似,对于要合并的每一个文件中的@PG ID只保留第一个文件中的@PG。 例子 Note: Samtools" merge does not reconstruct the @RG dictionary in the header. Users must provide the correct header with -h, or uses Picard which properly maintains the header dictionary in merging. 为了能够快速访问bam文件,可以为已经基于坐标排序后bam或者cram的文件创建索引,生成以.bai或者.crai为后缀的索引文件。必须使用排序后的文件,否则可能会报错。另外,不能对sam文件使用此命令。如果想对sam文件建立索引,那么可以使用tabix命令创建。 Options: -b 创建bai索引文件,未指定输出格式时,此参数为默认参数; -c 创建csi索引文件,默认情况下,索引的最小间隔值为2^14,与bai格式一致; -m INT 创建csi索引文件,最小间隔值2^INT; 例子: 以下两种命令结果一样 对fasta文件建立索引,生成的索引文件以.fai后缀结尾。该命令也能依据索引文件快速提取fasta文件中的某一条(子)序列.如果没有指定区域,faidx命令就创建文件索引并生成后缀为.fai的索引文件。如果指定区域,那么就是生产并显示fasta格式的子序列。输入文件可以使BGZF压缩格式的文件。 输入文件中的序列要有不同的名称。如果不是这样,即存在相同名称的序列,在建立索引的过程中将发出有关重复序列的警告而且生产的同名子序列的信息都要被第一个同名子序列的信息覆盖。 例:对基因组文件建立索引 上图中先显示了待处理的test.fasta文件的内容,由4个长度不一的序列组成,其中前两个重名。然后使用faidx命令进行处理。最后在显示生产索引文件test.fasta.fai的内容。 生成了索引文件fasta.fai,是一个文本文件,分成了5列。 于是通过此文件,可以定位子序列在fasta文件在磁盘上的存放位置,直接快速调出子序列。 由于有索引文件,可以使用以下命令很快从基因组中提取到fasta格式的子序列 提取序列如下图: tview能直观的显示出reads比对基因组的情况,和基因组浏览器有点类似。 当给出参考基因组的时候,会在第一排显示参考基因组的序列,否则,第一排全用N表示。 按下 g ,则提示输入要到达基因组的某一个位点。例子“scaffold_10:1000"表示到达第10号scaffold的第1000个碱基位点处。 使用H(左)J(上)K(下)L(右)移动显示界面。大写字母移动快,小写字母移动慢。 使用空格建向左快速移动(和 L 类似),使用Backspace键向左快速移动(和 H 类似)。 Ctrl+H 向左移动1kb碱基距离; Ctrl+L 向右移动1kb碱基距离 可以用颜色标注比对质量,碱基质量,核苷酸等。30~40的碱基质量或比对质量使用白色表示;20~30黄色;10~20绿色;0~10蓝色。 使用点号"."切换显示碱基和点号;使用r切换显示read name等 还有很多其它的使用说明,具体按 ? 键来查看。 统计输入文件的相关数据并将这些数据输出至屏幕显示。每一项统计数据都由两部分组成,分别是QC pass和QC failed,表示通过QC的reads数据量和未通过QC的reads数量。以“PASS + FAILED”格式显示。 例如 得到每个碱基位点或者区域的测序深度,并输出到标准输出。depth命令计算每一个位点的测序深度并在标准显示设备中显示。 注意 :使用此命令之前必须先samtools index。 Options: -a 输出所有位点,包括零深度的位点;-a –a,--aa 完全输出所有位点,包括未使用到的参考序列; -b FILE 计算BED文件中指定位置或区域的深度; -f FiLE 使用在FILE中的指定bam文件; -I INT 忽略掉小于此INT值的reads; -q INT 只计算碱基质量值大于此值的reads; -Q INT 只计算比对质量值大于此值的reads; -r CHR:FROM –TO 只计算指定区域的reads,后面跟染色体号(region) 示例: 注意: in.bam 必须经过了排序。 depth命令运行如下图所示: 一共得到3列以指标分隔符分隔的数据,第一列为染色体名称,第二列为位点,第三列为覆盖深度。 该命令用于生成bcf文件,再使用bcftools进行SNP和Indel的分析。bcftools是samtool中附带的软件,在samtools的安装文件夹中可以找到。 Options: -f –来输入有索引文件的fasta参考序列; -F –gap-frac FLOAT 含有间隔reads的最小片段。 -l –positions FILE BED文件或者包含区域位点的位置列表文件。位置文件包含两列,染色体和位置,从1开始计数。BED文件至少包含3列,染色体、开始位置和结束位置,开始端从0开始计数。 -r –region STR 只在指定区域产生pileup,需要已建立索引的bam文件。通常和-l参数一起使用。 -o –output FILE 生成pileup格式文件或者VCF、BCF文件而不是默认的标准输出。 -g –BCF 计算基因型的似然值和输出文件格式为BCF。 -v –VCF 计算基因型的似然值和输出文件格式为VCF。 -C --adjust-MQ INT 用于降低比对质量的系数,如果reads中含有过多的错配。不能设置为零。BWA推荐值为50。 -A --count-orphans 在检测变异中,不忽略异常的reads对。 -D –输出每个样本的reads深度。 -V –输出每个样本未比对到参考基因组的reads数量。 -t –output-tags LIST设置FORMAT和INFO的列表内容,以逗号分割。 -u –uncompressed 生成未压缩的VCF和BCF文件。 -I –skip-indel 不检测INDEL。 -m –min-ireads INT 候选INDEL的最小间隔的reads。 下面是一个使用-r参数和-l参数生成vcf文件的实例: mpileup不使用-u或-g参数时,则不生成二进制的bcf文件,而生成一个文本文件(输出到标准输出)。该文本文件统计了参考序列中每个碱基位点的比对情况;该文件每一行代表了参考序列中某一个碱基位点的比对结果。比如: mpileup生成的结果包含6行:参考序列名;位置;参考碱基;比对上的reads数;比对情况;比对上的碱基的质量。 其中第5列比较复杂,解释如下: NGS上机测序前需要进行PCR一步,使一个模板扩增出一簇,从而在上机测序的时候表现出为1个点,即一个reads。若一个模板扩增出了多簇,结果得到了多个reads,这些reads的坐标(coordinates)是相近的。在进行了reads比对后需要将这些由PCR duplicates获得的reads去掉,并只保留最高比对质量的read。使用rmdup命令即可完成. Options: -s 对single-end reads。默认情况下,只对paired-end reads -S 将Paired-end reads作为single-end reads处理。 检索和打印已建立索引的bam文件的统计数据,包括参考序列名称、序列长度、比对上的read数量和未比对上的read数量。输出结果显示在屏幕上,以制表符分割。 如下图所示: idxstats 统计一个表格,4列,分别为”序列名,序列长度,比对上的reads数,unmapped reads number”。第4列应该是paired reads中有一端能匹配到该scaffold上,而另外一端不匹配到任何scaffolds上的reads数。 计算由BED文件指定的基因组区域内的总碱基数量。 如下图所示: reheader 替换bam文件的头 cat 连接多个bam文件,适用于非sorted的bam文件 有时候,我们需要提取出比对到一段参考序列的reads,进行小范围的分析,以利于debug等。这时需要将bam或sam文件转换为fastq格式。 该网站提供了一个bam转换为fastq的程序: http://www.hudsonalpha.org/gsl/information/software/bam2fastq 1:从bam中过滤掉没有比对上的信息,并将比对上的部分保存到sam中 2:从bam中过滤没有比对上的信息,并保存到bam中:(要加-h,表示输出header) 注意:虽然有些没有比对上的结果 的flag值是141,77等,但是都可以用4过滤掉。 3:提取为fastq:主要参数为-f,-F,-G三个。 提取没有比对上的信息到fastq用: 提取比对上的reads到fastq用 REF: https://www.plob.org/article/7112.html http://www.chenlianfu.com/?p=1399 http://en.wikipedia.org/wiki/SAMtools http://www.htslib.org/doc/samtools-1.1.html http://sourceforge.net/projects/samtools/files/ http://samtools.sourceforge.net/samtools.shtml https://www.cnblogs.com/emanlee/p/4316581.html2023-07-18 09:28:411
池化层的作用不包括
A.解决卷积计算量过大的问题B.降低特征图的分辨率C.实现不同尺度特征的提取D.实现特征分类答案:D池化层是当前卷积神经网络中常用组件之一,它最早见于LeNet一文,称之为Subsample。自AlexNet之后采用Pooling命名。池化层是模仿人的视觉系统对数据进行降维,用更高层次的特征表示图像。实施池化的目的:(1) 降低信息冗余;(2) 提升模型的尺度不变性、旋转不变性;(3) 防止过拟合。池化层的常见操作包含以下几种:最大值池化,均值池化,随机池化,中值池化,组合池化等。2023-07-18 09:29:011
为什么iphone屏幕出现了一个框框放大镜
是因为你的手机开启了缩放功能。1、首先我们选择手机中的【设置】进入,在【设置】中,我们在下方可以找到【通用】。2、在【通用】中有个【辅助功能】,我们进入它。3、然后我们选择【缩放】打开。4、在缩放中需要把上面的绿色按钮点掉。按照以上方法,就可以关闭放大镜了。拓展资料1、缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个,然而,确实有一些缩放方法能够增加图像的信息,从而使得缩放后的图像质量超过原图质量的。2、放大图像(或称为上采样(upsampling)或图像插值(interpolating))的主要目的是放大原图像,从而可以显示在更高分辨率的显示设备上。对图像的缩放操作并不能带来更多关于该图像的信息, 因此图像的质量将不可避免地受到影响。2023-07-18 09:29:241
图像缩放的用途
缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个:1、使得图像符合显示区域的大小;2、生成对应图像的缩略图。放大图像(或称为上采样(upsampling)或图像插值(interpolating))的主要目的是放大原图像,从而可以显示在更高分辨率的显示设备上。对图像的缩放操作并不能带来更多关于该图像的信息, 因此图像的质量将不可避免地受到影响。然而,确实有一些缩放方法能够增加图像的信息,从而使得缩放后的图像质量超过原图质量的。2023-07-18 09:29:571
xgboost怎么实现模型融合
XGBoost参数调优完全指南(附Python代码) 译注:文内提供的代码和运行结果有一定差异,可以从这里下载完整代码对照参考。另外,我自己跟着教程做的时候,发现我的库无法解析字符串类型的特征,所以只用其中一部分特征做的,具体数值跟文章中不一样,反而可以帮助理解文章。所以大家其实也可以小小修改一下代码,不一定要完全跟着教程做~ ^0^ 需要提前安装好的库: 简介 如果你的预测模型表现得有些不尽如人意,那就用XGBoost吧。XGBoost算法现在已经成为很多数据工程师的重要武器。它是一种十分精致的算法,可以处理各种不规则的数据。 构造一个使用XGBoost的模型十分简单。但是,提高这个模型的表现就有些困难(至少我觉得十分纠结)。这个算法使用了好几个参数。所以为了提高模型的表现,参数的调整十分必要。在解决实际问题的时候,有些问题是很难回答的——你需要调整哪些参数?这些参数要调到什么值,才能达到理想的输出? 这篇文章最适合刚刚接触XGBoost的人阅读。在这篇文章中,我们会学到参数调优的技巧,以及XGboost相关的一些有用的知识。以及,我们会用Python在一个数据集上实践一下这个算法。 你需要知道的 XGBoost(eXtreme Gradient Boosting)是Gradient Boosting算法的一个优化的版本。 特别鸣谢:我个人十分感谢Mr Sudalai Rajkumar (aka SRK)大神的支持,目前他在AV Rank中位列第二。如果没有他的帮助,就没有这篇文章。在他的帮助下,我们才能给无数的数据科学家指点迷津。给他一个大大的赞! 内容列表 1、XGBoost的优势 2、理解XGBoost的参数 3、调整参数(含示例) 1、XGBoost的优势 XGBoost算法可以给预测模型带来能力的提升。当我对它的表现有更多了解的时候,当我对它的高准确率背后的原理有更多了解的时候,我发现它具有很多优势: 1、正则化 标准GBM的实现没有像XGBoost这样的正则化步骤。正则化对减少过拟合也是有帮助的。 实际上,XGBoost以“正则化提升(regularized boosting)”技术而闻名。 2、并行处理 XGBoost可以实现并行处理,相比GBM有了速度的飞跃。 不过,众所周知,Boosting算法是顺序处理的,它怎么可能并行呢?每一课树的构造都依赖于前一棵树,那具体是什么让我们能用多核处理器去构造一个树呢?我希望你理解了这句话的意思。 XGBoost 也支持Hadoop实现。 3、高度的灵活性 XGBoost 允许用户定义自定义优化目标和评价标准 它对模型增加了一个全新的维度,所以我们的处理不会受到任何限制。 4、缺失值处理 XGBoost内置处理缺失值的规则。 用户需要提供一个和其它样本不同的值,然后把它作为一个参数传进去,以此来作为缺失值的取值。XGBoost在不同节点遇到缺失值时采用不同的处理方法,并且会学习未来遇到缺失值时的处理方法。 5、剪枝 当分裂时遇到一个负损失时,GBM会停止分裂。因此GBM实际上是一个贪心算法。 XGBoost会一直分裂到指定的最大深度(max_depth),然后回过头来剪枝。如果某个节点之后不再有正值,它会去除这个分裂。 这种做法的优点,当一个负损失(如-2)后面有个正损失(如+10)的时候,就显现出来了。GBM会在-2处停下来,因为它遇到了一个负值。但是XGBoost会继续分裂,然后发现这两个分裂综合起来会得到+8,因此会保留这两个分裂。 6、内置交叉验证 XGBoost允许在每一轮boosting迭代中使用交叉验证。因此,可以方便地获得最优boosting迭代次数。 而GBM使用网格搜索,只能检测有限个值。 7、在已有的模型基础上继续 XGBoost可以在上一轮的结果上继续训练。这个特性在某些特定的应用上是一个巨大的优势。 sklearn中的GBM的实现也有这个功能,两种算法在这一点上是一致的。 相信你已经对XGBoost强大的功能有了点概念。注意这是我自己总结出来的几点,你如果有更多的想法,尽管在下面评论指出,我会更新这个列表的! 2、XGBoost的参数 XGBoost的作者把所有的参数分成了三类: 1、通用参数:宏观函数控制。 2、Booster参数:控制每一步的booster(tree/regression)。 3、学习目标参数:控制训练目标的表现。 在这里我会类比GBM来讲解,所以作为一种基础知识。 通用参数 这些参数用来控制XGBoost的宏观功能。 1、booster[默认gbtree] 选择每次迭代的模型,有两种选择: gbtree:基于树的模型 gbliner:线性模型 2、silent[默认0] 当这个参数值为1时,静默模式开启,不会输出任何信息。 一般这个参数就保持默认的0,因为这样能帮我们更好地理解模型。 3、nthread[默认值为最大可能的线程数] 这个参数用来进行多线程控制,应当输入系统的核数。 如果你希望使用CPU全部的核,那就不要输入这个参数,算法会自动检测它。 还有两个参数,XGBoost会自动设置,目前你不用管它。接下来咱们一起看booster参数。 booster参数 尽管有两种booster可供选择,我这里只介绍tree booster,因为它的表现远远胜过linear booster,所以linear booster很少用到。 1、eta[默认0.3] 和GBM中的 learning rate 参数类似。 通过减少每一步的权重,可以提高模型的鲁棒性。 典型值为0.01-0.2。 2、min_child_weight[默认1] 决定最小叶子节点样本权重和。 和GBM的 min_child_leaf 参数类似,但不完全一样。XGBoost的这个参数是最小样本权重的和,而GBM参数是最小样本总数。 这个参数用于避免过拟合。当它的值较大时,可以避免模型学习到局部的特殊样本。 但是如果这个值过高,会导致欠拟合。这个参数需要使用CV来调整。 3、max_depth[默认6] 和GBM中的参数相同,这个值为树的最大深度。 这个值也是用来避免过拟合的。max_depth越大,模型会学到更具体更局部的样本。 需要使用CV函数来进行调优。 典型值:3-10 4、max_leaf_nodes 树上最大的节点或叶子的数量。 可以替代max_depth的作用。因为如果生成的是二叉树,一个深度为n的树最多生成 n2 个叶子。 如果定义了这个参数,GBM会忽略max_depth参数。 5、gamma[默认0] 在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。Gamma指定了节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守。这个参数的值和损失函数息息相关,所以是需要调整的。 6、max_delta_step[默认0] 这参数限制每棵树权重改变的最大步长。如果这个参数的值为0,那就意味着没有约束。如果它被赋予了某个正值,那么它会让这个算法更加保守。 通常,这个参数不需要设置。但是当各类别的样本十分不平衡时,它对逻辑回归是很有帮助的。 这个参数一般用不到,但是你可以挖掘出来它更多的用处。 7、subsample[默认1] 和GBM中的subsample参数一模一样。这个参数控制对于每棵树,随机采样的比例。 减小这个参数的值,算法会更加保守,避免过拟合。但是,如果这个值设置得过小,它可能会导致欠拟合。 典型值:0.5-1 8、colsample_bytree[默认1] 和GBM里面的max_features参数类似。用来控制每棵随机采样的列数的占比(每一列是一个特征)。 典型值:0.5-1 9、colsample_bylevel[默认1] 用来控制树的每一级的每一次分裂,对列数的采样的占比。 我个人一般不太用这个参数,因为subsample参数和colsample_bytree参数可以起到相同的作用。但是如果感兴趣,可以挖掘这个参数更多的用处。 10、lambda[默认1] 权重的L2正则化项。(和Ridge regression类似)。 这个参数是用来控制XGBoost的正则化部分的。虽然大部分数据科学家很少用到这个参数,但是这个参数在减少过拟合上还是可以挖掘出更多用处的。 11、alpha[默认1] 权重的L1正则化项。(和Lasso regression类似)。 可以应用在很高维度的情况下,使得算法的速度更快。 12、scale_pos_weight[默认1] 在各类别样本十分不平衡时,把这个参数设定为一个正值,可以使算法更快收敛。 学习目标参数 这个参数用来控制理想的优化目标和每一步结果的度量方法。 1、objective[默认reg:linear] 这个参数定义需要被最小化的损失函数。最常用的值有: binary:logistic 二分类的逻辑回归,返回预测的概率(不是类别)。 multi:softmax 使用softmax的多分类器,返回预测的类别(不是概率)。 在这种情况下,你还需要多设一个参数:num_class(类别数目)。 multi:softprob 和multi:softmax参数一样,但是返回的是每个数据属于各个类别的概率。 2、eval_metric[默认值取决于objective参数的取值] 对于有效数据的度量方法。 对于回归问题,默认值是rmse,对于分类问题,默认值是error。 典型值有: rmse 均方根误差( ∑Ni=1?2N??????√ ) mae 平均绝对误差( ∑Ni=1|?|N ) logloss 负对数似然函数值 error 二分类错误率(阈值为0.5) merror 多分类错误率 mlogloss 多分类logloss损失函数 auc 曲线下面积 3、seed(默认0) 随机数的种子 设置它可以复现随机数据的结果,也可以用于调整参数 如果你之前用的是Scikit-learn,你可能不太熟悉这些参数。但是有个好消息,python的XGBoost模块有一个sklearn包,XGBClassifier。这个包中的参数是按sklearn风格命名的。会改变的函数名是: 1、eta ->learning_rate 2、lambda->reg_lambda 3、alpha->reg_alpha 你肯定在疑惑为啥咱们没有介绍和GBM中的"n_estimators"类似的参数。XGBClassifier中确实有一个类似的参数,但是,是在标准XGBoost实现中调用拟合函数时,把它作为"num_boosting_rounds"参数传入。 调整参数(含示例) 我已经对这些数据进行了一些处理: City变量,因为类别太多,所以删掉了一些类别。 DOB变量换算成年龄,并删除了一些数据。 增加了 EMI_Loan_Submitted_Missing 变量。如果EMI_Loan_Submitted变量的数据缺失,则这个参数的值为1。否则为0。删除了原先的EMI_Loan_Submitted变量。 EmployerName变量,因为类别太多,所以删掉了一些类别。 因为Existing_EMI变量只有111个值缺失,所以缺失值补充为中位数0。 增加了 Interest_Rate_Missing 变量。如果Interest_Rate变量的数据缺失,则这个参数的值为1。否则为0。删除了原先的Interest_Rate变量。 删除了Lead_Creation_Date,从直觉上这个特征就对最终结果没什么帮助。 Loan_Amount_Applied, Loan_Tenure_Applied 两个变量的缺项用中位数补足。 增加了 Loan_Amount_Submitted_Missing 变量。如果Loan_Amount_Submitted变量的数据缺失,则这个参数的值为1。否则为0。删除了原先的Loan_Amount_Submitted变量。 增加了 Loan_Tenure_Submitted_Missing 变量。如果 Loan_Tenure_Submitted 变量的数据缺失,则这个参数的值为1。否则为0。删除了原先的 Loan_Tenure_Submitted 变量。 删除了LoggedIn, Salary_Account 两个变量 增加了 Processing_Fee_Missing 变量。如果 Processing_Fee 变量的数据缺失,则这个参数的值为1。否则为0。删除了原先的 Processing_Fee 变量。 Source前两位不变,其它分成不同的类别。 进行了量化和独热编码(一位有效编码)。 如果你有原始数据,可以从资源库里面下载data_preparation的Ipython notebook 文件,然后自己过一遍这些步骤。 首先,import必要的库,然后加载数据。 #Import libraries: import pandas as pd import numpy as np import xgboost as xgb from xgboost.sklearn import XGBClassifier from sklearn import cross_validation, metrics #Additional scklearn functions from sklearn.grid_search import GridSearchCV #Perforing grid search import matplotlib.pylab as plt %matplotlib inline from matplotlib.pylab import rcParams rcParams["figure.figsize"] = 12, 4 train = pd.read_csv("train_modified.csv") target = "Disbursed" IDcol = "ID" 注意我import了两种XGBoost: xgb - 直接引用xgboost。接下来会用到其中的“cv”函数。 XGBClassifier - 是xgboost的sklearn包。这个包允许我们像GBM一样使用Grid Search 和并行处理。 在向下进行之前,我们先定义一个函数,它可以帮助我们建立XGBoost models 并进行交叉验证。好消息是你可以直接用下面的函数,以后再自己的models中也可以使用它。 def modelfit(alg, dtrain, predictors,useTrainCV=True, cv_folds=5, early_stopping_rounds=50): if useTrainCV: xgb_param = alg.get_xgb_params() xgtrain = xgb.DMatrix(dtrain[predictors].values, label=dtrain[target].values) cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()["n_estimators"], nfold=cv_folds, metrics="auc", early_stopping_rounds=early_stopping_rounds, show_progress=False) alg.set_params(n_estimators=cvresult.shape[0]) #Fit the algorithm on the data alg.fit(dtrain[predictors], dtrain["Disbursed"],eval_metric="auc") #Predict training set: dtrain_predictions = alg.predict(dtrain[predictors]) dtrain_predprob = alg.predict_proba(dtrain[predictors])[:,1] #Print model report: print " Model Report" print "Accuracy : %.4g" % metrics.accuracy_score(dtrain["Disbursed"].values, dtrain_predictions) print "AUC Score (Train): %f" % metrics.roc_auc_score(dtrain["Disbursed"], dtrain_predprob) feat_imp = pd.Series(alg.booster().get_fscore()).sort_values(ascending=False) feat_imp.plot(kind="bar", title="Feature Importances") plt.ylabel("Feature Importance Score") 这个函数和GBM中使用的有些许不同。不过本文章的重点是讲解重要的概念,而不是写代码。如果哪里有不理解的地方,请在下面评论,不要有压力。注意xgboost的sklearn包没有“feature_importance”这个量度,但是get_fscore()函数有相同的功能。 参数调优的一般方法。 我们会使用和GBM中相似的方法。需要进行如下步骤: 1. 选择较高的学习速率(learning rate)。一般情况下,学习速率的值为0.1。但是,对于不同的问题,理想的学习速率有时候会在0.05到0.3之间波动。选择对应于此学习速率的理想决策树数量。XGBoost有一个很有用的函数“cv”,这个函数可以在每一次迭代中使用交叉验证,并返回理想的决策树数量。 2. 对于给定的学习速率和决策树数量,进行决策树特定参数调优(max_depth, min_child_weight, gamma, subsample, colsample_bytree)。在确定一棵树的过程中,我们可以选择不同的参数,待会儿我会举例说明。 3. xgboost的正则化参数的调优。(lambda, alpha)。这些参数可以降低模型的复杂度,从而提高模型的表现。 4. 降低学习速率,确定理想参数。 咱们一起详细地一步步进行这些操作。 第一步:确定学习速率和tree_based 参数调优的估计器数目。 为了确定boosting 参数,我们要先给其它参数一个初始值。咱们先按如下方法取值: 1、max_depth = 5 :这个参数的取值最好在3-10之间。我选的起始值为5,但是你也可以选择其它的值。起始值在4-6之间都是不错的选择。 2、min_child_weight = 1:在这里选了一个比较小的值,因为这是一个极不平衡的分类问题。因此,某些叶子节点下的值会比较小。 3、gamma = 0: 起始值也可以选其它比较小的值,在0.1到0.2之间就可以。这个参数后继也是要调整的。 4、subsample,colsample_bytree = 0.8: 这个是最常见的初始值了。典型值的范围在0.5-0.9之间。 5、scale_pos_weight = 1: 这个值是因为类别十分不平衡。 注意哦,上面这些参数的值只是一个初始的估计值,后继需要调优。这里把学习速率就设成默认的0.1。然后用xgboost中的cv函数来确定最佳的决策树数量。前文中的函数可以完成这个工作。 #Choose all predictors except target & IDcols predictors = [x for x in train.columns if x not in [target,IDcol]] xgb1 = XGBClassifier( learning_rate =0.1, n_estimators=1000, max_depth=5, min_child_weight=1, gamma=0, subsample=0.8, colsample_bytree=0.8, objective= "binary:logistic", nthread=4, scale_pos_weight=1, seed=27) modelfit(xgb1, train, predictors) 从输出结果可以看出,在学习速率为0.1时,理想的决策树数目是140。这个数字对你而言可能比较高,当然这也取决于你的系统的性能。 注意:在AUC(test)这里你可以看到测试集的AUC值。但是如果你在自己的系统上运行这些命令,并不会出现这个值。因为数据并不公开。这里提供的值仅供参考。生成这个值的代码部分已经被删掉了。<喎"/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjwvYmxvY2txdW90ZT4NCjxoMSBpZD0="第二步-maxdepth-和-minweight-参数调优">第二步: max_depth 和 min_weight 参数调优 我们先对这两个参数调优,是因为它们对最终结果有很大的影响。首先,我们先大范围地粗调参数,然后再小范围地微调。 注意:在这一节我会进行高负荷的栅格搜索(grid search),这个过程大约需要15-30分钟甚至更久,具体取决于你系统的性能。你也可以根据自己系统的性能选择不同的值。 param_test1 = { "max_depth":range(3,10,2), "min_child_weight":range(1,6,2) } gsearch1 = GridSearchCV(estimator = XGBClassifier( learning_rate =0.1, n_estimators=140, max_depth=5, min_child_weight=1, gamma=0, subsample=0.8, colsample_bytree=0.8, objective= "binary:logistic", nthread=4, scale_pos_weight=1, seed=27), param_grid = param_test1, scoring="roc_auc",n_jobs=4,iid=False, cv=5) gsearch1.fit(train[predictors],train[target]) gsearch1.grid_scores_, gsearch1.best_params_, gsearch1.best_score_2023-07-18 09:30:121
xgboost参数调优
一. 确定最佳决策树数量 选择较高的学习速率(learning rate)。一般情况下,学习速率的值为0.1。但是,对于不同的问题,理想的学习速率有时候会在0.05到0.3之间波动。选择对应于此学习速率的理想决策树数量。XGBoost有一个很有用的函数“cv”,这个函数可以在每一次迭代中使用交叉验证,并返回理想的决策树数量。 先给定boosting主要参数一个初始值,后续再进行调优。 1、max_depth = 5 :这个参数的取值最好在3-10之间。我选的起始值为5,但是你也可以选择其它的值。起始值在4-6之间都是不错的选择。 2、min_child_weight = 1:在这里选了一个比较小的值,因为这是一个极不平衡的分类问题。因此,某些叶子节点下的值会比较小。 3、gamma = 0: 起始值也可以选其它比较小的值,在0.1到0.2之间就可以。这个参数后继也是要调整的。 4、subsample,colsample_bytree = 0.8: 这个是最常见的初始值了。典型值的范围在0.5-0.9之间。 5、scale_pos_weight = 1: 这个值是因为类别十分不平衡。 二. 主要参数调优 对于给定的学习速率和决策树数量,进行决策树特定参数调优(max_depth, min_child_weight, gamma, subsample, colsample_bytree)。 这里通常使用GridSearch。可先寻找max_depth、min_child_weight,确定后,再对gamma、subsample等调优。 三. xgboost的正则化参数的调优。(lambda, alpha)。这些参数可以降低模型的复杂度,从而提高模型的表现。 四. 降低学习速率,确定理想参数。 xgboost 中,objective 是模型学习任务参数(learning task parameters)中的目标参数,它指定训练任务的目标。 objective 参数默认值为 reg:squarederror 。 https://zhuanlan.zhihu.com/p/296491282023-07-18 09:30:191
QIIME中做16srDNA测序数据分析out_tablleBMP.biom文件如何生成?
步骤如下:1. 在Linux系统中(或虚拟系统)通过cd命令进入文件夹(路径);2. 用FLASH工具:flash subsample_r1.fq subsample_r2.fq -m 200 -M 280 -o merged3.提取barcode: extract_barcodes.py -f joined.extendedFrags.fastq -c barcode_single_end --bc1_len 6 -o processed_seqs 4. 割库:split_libraries.py -m mapping.txt -b 10 -l 250 -f merged.extendedFrags.fastq_fasta -o split_library_out5. OTU分类:pick_otus.py -i split_library_out/chimera_filtered_seqs.fna -o picked_otus/到这里就可以得到biom文件了6. 得到分类信息:biom summarize-table -i sorted_otu_table.biom -o seqs_per_sample.txt2023-07-18 09:30:271
为什么iphone屏幕出现了一个框框放大镜
好吧,呵呵。2023-07-18 09:30:365
如何画xgboost里面的决策树
XGBoost参数调优完全指南(附Python代码)译注:文内提供的代码和运行结果有一定差异,可以从这里完整代码对照参考。另外,我自己跟着教程做的时候,发现我的库无法解析字符串类型的特征,所以只用其中一部分特征做的,具体数值跟文章中不一样,反而可以帮助理解文章。所以大家其实也可以小小修改一下代码,不一定要完全跟着教程做~ ^0^需要提前安装好的库:简介如果你的预测模型表现得有些不尽如人意,那就用XGBoost吧。XGBoost算法现在已经成为很多数据工程师的重要武器。它是一种十分精致的算法,可以处理各种不规则的数据。构造一个使用XGBoost的模型十分简单。但是,提高这个模型的表现就有些困难(至少我觉得十分纠结)。这个算法使用了好几个参数。所以为了提高模型的表现,参数的调整十分必要。在解决实际问题的时候,有些问题是很难回答的——你需要调整哪些参数?这些参数要调到什么值,才能达到理想的输出?这篇文章最适合刚刚接触XGBoost的人阅读。在这篇文章中,我们会学到参数调优的技巧,以及XGboost相关的一些有用的知识。以及,我们会用Python在一个数据集上实践一下这个算法。你需要知道的XGBoost(eXtreme Gradient Boosting)是Gradient Boosting算法的一个优化的版本。特别鸣谢:我个人十分感谢Mr Sudalai Rajkumar (aka SRK)大神的支持,目前他在AV Rank中位列第二。如果没有他的帮助,就没有这篇文章。在他的帮助下,我们才能给无数的数据科学家指点迷津。给他一个大大的赞!内容列表1、XGBoost的优势2、理解XGBoost的参数3、调整参数(含示例)1、XGBoost的优势XGBoost算法可以给预测模型带来能力的提升。当我对它的表现有更多了解的时候,当我对它的高准确率背后的原理有更多了解的时候,我发现它具有很多优势:1、正则化标准GBM的实现没有像XGBoost这样的正则化步骤。正则化对减少过拟合也是有帮助的。 实际上,XGBoost以“正则化提升(regularized boosting)”技术而闻名。2、并行处理XGBoost可以实现并行处理,相比GBM有了速度的飞跃。 不过,众所周知,Boosting算法是顺序处理的,它怎么可能并行呢?每一课树的构造都依赖于前一棵树,那具体是什么让我们能用多核处理器去构造一个树呢?我希望你理解了这句话的意思。 XGBoost 也支持Hadoop实现。3、高度的灵活性XGBoost 允许用户定义自定义优化目标和评价标准 它对模型增加了一个全新的维度,所以我们的处理不会受到任何限制。4、缺失值处理XGBoost内置处理缺失值的规则。 用户需要提供一个和其它样本不同的值,然后把它作为一个参数传进去,以此来作为缺失值的取值。XGBoost在不同节点遇到缺失值时采用不同的处理方法,并且会学习未来遇到缺失值时的处理方法。5、剪枝当分裂时遇到一个负损失时,GBM会停止分裂。因此GBM实际上是一个贪心算法。 XGBoost会一直分裂到指定的最大深度(max_depth),然后回过头来剪枝。如果某个节点之后不再有正值,它会去除这个分裂。 这种做法的优点,当一个负损失(如-2)后面有个正损失(如+10)的时候,就显现出来了。GBM会在-2处停下来,因为它遇到了一个负值。但是XGBoost会继续分裂,然后发现这两个分裂综合起来会得到+8,因此会保留这两个分裂。6、内置交叉验证XGBoost允许在每一轮boosting迭代中使用交叉验证。因此,可以方便地获得最优boosting迭代次数。 而GBM使用网格搜索,只能检测有限个值。7、在已有的模型基础上继续XGBoost可以在上一轮的结果上继续训练。这个特性在某些特定的应用上是一个巨大的优势。 sklearn中的GBM的实现也有这个功能,两种算法在这一点上是一致的。相信你已经对XGBoost强大的功能有了点概念。注意这是我自己总结出来的几点,你如果有更多的想法,尽管在下面评论指出,我会更新这个列表的!2、XGBoost的参数XGBoost的作者把所有的参数分成了三类:1、通用参数:宏观函数控制。2、Booster参数:控制每一步的booster(tree/regression)。3、学习目标参数:控制训练目标的表现。在这里我会类比GBM来讲解,所以作为一种基础知识。通用参数这些参数用来控制XGBoost的宏观功能。1、booster[默认gbtree]选择每次迭代的模型,有两种选择:gbtree:基于树的模型gbliner:线性模型2、silent[默认0]当这个参数值为1时,静默模式开启,不会输出任何信息。 一般这个参数就保持默认的0,因为这样能帮我们更好地理解模型。3、nthread[默认值为最大可能的线程数]这个参数用来进行多线程控制,应当输入系统的核数。 如果你希望使用CPU全部的核,那就不要输入这个参数,算法会自动检测它。还有两个参数,XGBoost会自动设置,目前你不用管它。接下来咱们一起看booster参数。booster参数尽管有两种booster可供选择,我这里只介绍tree booster,因为它的表现远远胜过linear booster,所以linear booster很少用到。1、eta[默认0.3]和GBM中的 learning rate 参数类似。 通过减少每一步的权重,可以提高模型的鲁棒性。 典型值为0.01-0.2。2、min_child_weight[默认1]决定最小叶子节点样本权重和。 和GBM的 min_child_leaf 参数类似,但不完全一样。XGBoost的这个参数是最小样本权重的和,而GBM参数是最小样本总数。 这个参数用于避免过拟合。当它的值较大时,可以避免模型学习到局部的特殊样本。 但是如果这个值过高,会导致欠拟合。这个参数需要使用CV来调整。3、max_depth[默认6]和GBM中的参数相同,这个值为树的最大深度。 这个值也是用来避免过拟合的。max_depth越大,模型会学到更具体更局部的样本。 需要使用CV函数来进行调优。 典型值:3-104、max_leaf_nodes树上最大的节点或叶子的数量。 可以替代max_depth的作用。因为如果生成的是二叉树,一个深度为n的树最多生成n2个叶子。 如果定义了这个参数,GBM会忽略max_depth参数。5、gamma[默认0]在节点分裂时,只有分裂后损失函数的值下降了,才会分裂这个节点。Gamma指定了节点分裂所需的最小损失函数下降值。 这个参数的值越大,算法越保守。这个参数的值和损失函数息息相关,所以是需要调整的。6、max_delta_step[默认0]这参数限制每棵树权重改变的最大步长。如果这个参数的值为0,那就意味着没有约束。如果它被赋予了某个正值,那么它会让这个算法更加保守。 通常,这个参数不需要设置。但是当各类别的样本十分不平衡时,它对逻辑回归是很有帮助的。 这个参数一般用不到,但是你可以挖掘出来它更多的用处。7、subsample[默认1]和GBM中的subsample参数一模一样。这个参数控制对于每棵树,随机采样的比例。 减小这个参数的值,算法会更加保守,避免过拟合。但是,如果这个值设置得过小,它可能会导致欠拟合。 典型值:0.5-18、colsample_bytree[默认1]和GBM里面的max_features参数类似。用来控制每棵随机采样的列数的占比(每一列是一个特征)。 典型值:0.5-19、colsample_bylevel[默认1]用来控制树的每一级的每一次分裂,对列数的采样的占比。 我个人一般不太用这个参数,因为subsample参数和colsample_bytree参数可以起到相同的作用。但是如果感兴趣,可以挖掘这个参数更多的用处。10、lambda[默认1]权重的L2正则化项。(和Ridge regression类似)。 这个参数是用来控制XGBoost的正则化部分的。虽然大部分数据科学家很少用到这个参数,但是这个参数在减少过拟合上还是可以挖掘出更多用处的。11、alpha[默认1]权重的L1正则化项。(和Lasso regression类似)。 可以应用在很高维度的情况下,使得算法的速度更快。12、scale_pos_weight[默认1]在各类别样本十分不平衡时,把这个参数设定为一个正值,可以使算法更快收敛。学习目标参数这个参数用来控制理想的优化目标和每一步结果的度量方法。1、objective[默认reg:linear]这个参数定义需要被最小化的损失函数。最常用的值有:binary:logistic 二分类的逻辑回归,返回预测的概率(不是类别)。 multi:softmax 使用softmax的多分类器,返回预测的类别(不是概率)。在这种情况下,你还需要多设一个参数:num_class(类别数目)。 multi:softprob 和multi:softmax参数一样,但是返回的是每个数据属于各个类别的概率。2、eval_metric[默认值取决于objective参数的取值]对于有效数据的度量方法。 对于回归问题,默认值是rmse,对于分类问题,默认值是error。 典型值有:rmse 均方根误差(∑Ni=1?2N??????√) mae 平均绝对误差(∑Ni=1|?|N) logloss 负对数似然函数值 error 二分类错误率(阈值为0.5) merror 多分类错误率 mlogloss 多分类logloss损失函数 auc 曲线下面积3、seed(默认0)随机数的种子 设置它可以复现随机数据的结果,也可以用于调整参数如果你之前用的是Scikit-learn,你可能不太熟悉这些参数。但是有个好消息,python的XGBoost模块有一个sklearn包,XGBClassifier。这个包中的参数是按sklearn风格命名的。会改变的函数名是:1、eta ->learning_rate2、lambda->reg_lambda3、alpha->reg_alpha你肯定在疑惑为啥咱们没有介绍和GBM中的"n_estimators"类似的参数。XGBClassifier中确实有一个类似的参数,但是,是在标准XGBoost实现中调用拟合函数时,把它作为"num_boosting_rounds"参数传入。调整参数(含示例)我已经对这些数据进行了一些处理:City变量,因为类别太多,所以删掉了一些类别。 DOB变量换算成年龄,并删除了一些数据。 增加了 EMI_Loan_Submitted_Missing 变量。如果EMI_Loan_Submitted变量的数据缺失,则这个参数的值为1。否则为0。删除了原先的EMI_Loan_Submitted变量。 EmployerName变量,因为类别太多,所以删掉了一些类别。 因为Existing_EMI变量只有111个值缺失,所以缺失值补充为中位数0。 增加了 Interest_Rate_Missing 变量。如果Interest_Rate变量的数据缺失,则这个参数的值为1。否则为0。删除了原先的Interest_Rate变量。 删除了Lead_Creation_Date,从直觉上这个特征就对最终结果没什么帮助。 Loan_Amount_Applied, Loan_Tenure_Applied 两个变量的缺项用中位数补足。 增加了 Loan_Amount_Submitted_Missing 变量。如果Loan_Amount_Submitted变量的数据缺失,则这个参数的值为1。否则为0。删除了原先的Loan_Amount_Submitted变量。 增加了 Loan_Tenure_Submitted_Missing 变量。如果 Loan_Tenure_Submitted 变量的数据缺失,则这个参数的值为1。否则为0。删除了原先的 Loan_Tenure_Submitted 变量。 删除了LoggedIn, Salary_Account 两个变量 增加了 Processing_Fee_Missing 变量。如果 Processing_Fee 变量的数据缺失,则这个参数的值为1。否则为0。删除了原先的 Processing_Fee 变量。 Source前两位不变,其它分成不同的类别。 进行了量化和独热编码(一位有效编码)。如果你有原始数据,可以从资源库里面data_preparation的Ipython notebook 文件,然后自己过一遍这些步骤。首先,import必要的库,然后加载数据。#Import libraries:import pandas as pdimport numpy as npimport xgboost as xgbfrom xgboost.sklearn import XGBClassifierfrom sklearn import cross_validation, metrics #Additional scklearn functionsfrom sklearn.grid_search import GridSearchCV #Perforing grid searchimport matplotlib.pylab as plt%matplotlib inlinefrom matplotlib.pylab import rcParamsrcParams["figure.figsize"] = 12, 4train = pd.read_csv("train_modified.csv")target = "Disbursed"IDcol = "ID"注意我import了两种XGBoost:xgb - 直接引用xgboost。接下来会用到其中的“cv”函数。 XGBClassifier - 是xgboost的sklearn包。这个包允许我们像GBM一样使用Grid Search 和并行处理。在向下进行之前,我们先定义一个函数,它可以帮助我们建立XGBoost models 并进行交叉验证。好消息是你可以直接用下面的函数,以后再自己的models中也可以使用它。def modelfit(alg, dtrain, predictors,useTrainCV=True, cv_folds=5, early_stopping_rounds=50):if useTrainCV:xgb_param = alg.get_xgb_params()xgtrain = xgb.DMatrix(dtrain[predictors].values, label=dtrain[target].values)cvresult = xgb.cv(xgb_param, xgtrain, num_boost_round=alg.get_params()["n_estimators"], nfold=cv_folds,metrics="auc", early_stopping_rounds=early_stopping_rounds, show_progress=False)alg.set_params(n_estimators=cvresult.shape[0])#Fit the algorithm on the dataalg.fit(dtrain[predictors], dtrain["Disbursed"],eval_metric="auc")#Predict training set:dtrain_predictions = alg.predict(dtrain[predictors])dtrain_predprob = alg.predict_proba(dtrain[predictors])[:,1]#Print model report:print " Model Report"print "Accuracy : %.4g" % metrics.accuracy_score(dtrain["Disbursed"].values, dtrain_predictions)print "AUC Score (Train): %f" % metrics.roc_auc_score(dtrain["Disbursed"], dtrain_predprob)feat_imp = pd.Series(alg.booster().get_fscore()).sort_values(ascending=False)feat_imp.plot(kind="bar", title="Feature Importances")plt.ylabel("Feature Importance Score")这个函数和GBM中使用的有些许不同。不过本文章的重点是讲解重要的概念,而不是写代码。如果哪里有不理解的地方,请在下面评论,不要有压力。注意xgboost的sklearn包没有“feature_importance”这个量度,但是get_fscore()函数有相同的功能。参数调优的一般方法。我们会使用和GBM中相似的方法。需要进行如下步骤:选择较高的学习速率(learning rate)。一般情况下,学习速率的值为0.1。但是,对于不同的问题,理想的学习速率有时候会在0.05到0.3之间波动。选择对应于此学习速率的理想决策树数量。XGBoost有一个很有用的函数“cv”,这个函数可以在每一次迭代中使用交叉验证,并返回理想的决策树数量。2. 对于给定的学习速率和决策树数量,进行决策树特定参数调优(max_depth, min_child_weight, gamma, subsample, colsample_bytree)。在确定一棵树的过程中,我们可以选择不同的参数,待会儿我会举例说明。3. xgboost的正则化参数的调优。(lambda, alpha)。这些参数可以降低模型的复杂度,从而提高模型的表现。4. 降低学习速率,确定理想参数。咱们一起详细地一步步进行这些操作。第一步:确定学习速率和tree_based 参数调优的估计器数目。为了确定boosting 参数,我们要先给其它参数一个初始值。咱们先按如下方法取值:1、max_depth = 5 :这个参数的取值最好在3-10之间。我选的起始值为5,但是你也可以选择其它的值。起始值在4-6之间都是不错的选择。2、min_child_weight = 1:在这里选了一个比较小的值,因为这是一个极不平衡的分类问题。因此,某些叶子节点下的值会比较小。3、gamma = 0: 起始值也可以选其它比较小的值,在0.1到0.2之间就可以。这个参数后继也是要调整的。4、subsample,colsample_bytree = 0.8: 这个是最常见的初始值了。典型值的范围在0.5-0.9之间。5、scale_pos_weight = 1: 这个值是因为类别十分不平衡。注意哦,上面这些参数的值只是一个初始的估计值,后继需要调优。这里把学习速率就设成默认的0.1。然后用xgboost中的cv函数来确定最佳的决策树数量。前文中的函数可以完成这个工作。#Choose all predictors except target IDcolspredictors = [x for x in train.columns if x not in [target,IDcol]]xgb1 = XGBClassifier(learning_rate =0.1,n_estimators=1000,max_depth=5,min_child_weight=1,gamma=0,subsample=0.8,colsample_bytree=0.8,objective= "binary:logistic",nthread=4,scale_pos_weight=1,seed=27)modelfit(xgb1, train, predictors)</ol>从输出结果可以看出,在学习速率为0.1时,理想的决策树数目是140。这个数字对你而言可能比较高,当然这也取决于你的系统的性能。注意:在AUC(test)这里你可以看到测试集的AUC值。但是如果你在自己的系统上运行这些命令,并不会出现这个值。因为数据并不公开。这里提供的值仅供参考。生成这个值的代码部分已经被删掉了。<喎?"/kf/ware/vc/" target="_blank" class="keylink">vcD4NCjwvYmxvY2txdW90ZT4NCjxoMSBpZD0="第二步-maxdepth-和-minweight-参数调优">第二步: max_depth 和 min_weight 参数调优我们先对这两个参数调优,是因为它们对最终结果有很大的影响。首先,我们先大范围地粗调参数,然后再小范围地微调。注意:在这一节我会进行高负荷的栅格搜索(grid search),这个过程大约需要15-30分钟甚至更久,具体取决于你系统的性能。你也可以根据自己系统的性能选择不同的值。param_test1 = {"max_depth":range(3,10,2),"min_child_weight":range(1,6,2)}gsearch1 = GridSearchCV(estimator = XGBClassifier( learning_rate =0.1, n_estimators=140, max_depth=5,min_child_weight=1, gamma=0, subsample=0.8, colsample_bytree=0.8,objective= "binary:logistic", nthread=4, scale_pos_weight=1, seed=27), param_grid = param_test1, scoring="roc_auc",n_jobs=4,iid=False, cv=5)gsearch1.fit(train[predictors],train[target])gsearch1.grid_scores_, gsearch1.best_params_, gsearch1.best_score_2023-07-18 09:32:001
什么是交叉检验(K-fold cross-validation)
K层交叉检验就是把原始的数据随机分成K个部分。在这K个部分中,选择一个作为测试数据,剩下的K-1个作为训练数据。 交叉检验的过程实际上是把实验重复做K次,每次实验都从K个部分中选择一个不同的部分作为测试数据(保证K个部分的数据都分别做过测试数据),剩下的K-1个当作训练数据进行实验,最后把得到的K个实验结果平均。InK-fold cross-validation, the original sample is randomly partitioned intoKsubsamples. Of theKsubsamples, a single subsample is retained as the validation data for testing the model, and the remainingKu22121 subsamples are used as training data. The cross-validation process is then repeatedKtimes (thefolds2023-07-18 09:32:091
苹果手机上出现了一个放大镜样的框框
在文本的地方按住就会出现一个放大镜,可以方便你选取文本,实现准确定位后复制或粘贴2023-07-18 09:32:302
为什么iphone屏幕出现了一个框框放大镜
是因为你的手机开启了缩放功能。1、首先我们选择手机中的【设置】进入,在【设置】中,我们在下方可以找到【通用】。2、在【通用】中有个【辅助功能】,我们进入它。3、然后我们选择【缩放】打开。4、在缩放中需要把上面的绿色按钮点掉。按照以上方法,就可以关闭放大镜了。拓展资料1、缩小图像(或称为下采样(subsampled)或降采样(downsampled))的主要目的有两个,然而,确实有一些缩放方法能够增加图像的信息,从而使得缩放后的图像质量超过原图质量的。2、放大图像(或称为上采样(upsampling)或图像插值(interpolating))的主要目的是放大原图像,从而可以显示在更高分辨率的显示设备上。对图像的缩放操作并不能带来更多关于该图像的信息,因此图像的质量将不可避免地受到影响。2023-07-18 09:33:041
是relative few 还是 relatively few
few是形容词,副词修饰形容词的。relatively few 这个正确。相对较少。relatively英 [u02c8relu0259tu026avli] 美 [u02c8ru025blu0259tu026avlu026a] adv.相对地; 关系上地; 比较地; 较比2023-07-18 09:26:001
比华利保罗算奢侈品吗
别被楼上这些热心网友忽悠了,这牌子在美国十刀一件,莫名其妙进了中国就翻几十倍,纯粹是靠营销和百度助攻炒起来的。不信去美国亚马逊沃尔玛网站搜一下就知道了。2023-07-18 09:26:015
山东最好的大专学校
山东最好的几所大专学校:1.山东商业职业技术学院学校位于济南,是一所财经类的公办高职院校,成立于1936年,建校时间比较久,学校是国家示范性高职院校、国家建设类技能型紧缺人才培养试点高校,也被列为第一类高水平学校建设单位(A档)。学校设有51个专业,师资力量雄厚,综合实力全国排名第14。学校还有4个3+2本科分段的培养试点专业,专升本优势非常明显。2.淄博职业学院淄博职业学院是一所公办专科院校,列入“中国特色高水平高职学校和专业建设”计划,是国家优质高校。该学院作为山东省招生规模最大的公办高职院校,实力不俗,全国排名15,是一所很适合理工科学生的大专院校,机械类、工程造价、电气自动化、计算机等专业都不错。3.日照职业技术学院日照职业技术学院是由日照市政府举办的一所全日制专科院校,入选国家示范性高等职业院校。学校开设49个专业,2个“3+2”专本贯通联合培养专业,综合实力排名全国第19位。近些年,学校各层次的生源质量也在逐年提高,可见学校受欢迎程度。4.山东职业学院山东职业学院位于省会济南,是国家骨干高职院校,也是第一批山东省优质高等职业院校建设工程立项建设单位,全国排名56。其前身是济南铁路管理局中级技术学校,具有一定的铁路行业背景,目前开设专业57个,其优势专业多与铁道相关,毕业生很容易在铁路行业就业。5.山东科技职业学院山东科技职业学院位于潍坊市,隶属山东省工业和信息化厅、山东省教育厅双重领导,也是国家示范性高职院校、山东省首批优质高等职业院校建设单位。学校目前设有48个专业、4个“3+2”对口贯通分段培养本科专业,综合实力也不错,在全国众多院校中排名61位,很适合理工科类的学生报考。2023-07-18 09:26:071
简述DNS和WINS的主要功能
WINS是WindowsInternetNamingServer,即WindowsInternet命名服务。它提供一个分布式数据库,能在路由网络的环境中动态地对IP地址和NETBios名的映射进行注册与查询。WINS用来登记NetBIOS计算机名,并在需要时将它解析成为IP地址。WINS数据库是动态更新的。DNS是域名系统(DomainNameSystem)的缩写,它是由解析器和域名服务器组成的。域名服务器是指保存有该网络中所有主机的域名和对应IP地址,并具有将域名转换为IP地址功能的服务器。字面意思你就能看到区别啦。比如你的电脑想访问163.com那么就是dns服务器解析它的物理地址。如果你的电脑想访问局域网内的某台机器PC001这时候就是WINS服务器来解析了2023-07-18 09:26:091
什么贪嗔痴恨爱恶欲
贪,就是要告戒你做人要知足,嗔就是告戒你千万别随便动怒,痴告戒你做事时要知道什么时候该放弃,恨就是要你己所不欲,勿施与人,恶就是要让你知道凡事不能用有色眼镜去看人,欲则是让你在关键时候压制自己的欲望。2023-07-18 09:26:093
车辆自动驾驶级别l1什么意思
【太平洋汽车网】L1:驾驶支持。在此级别时,自动驾驶系统能够辅助驾驶员玩车某些驾驶任务。制动防抱死系统(ABS),车身电子稳定系统(ESP)等些配置都是L1级别的运用。车天下汽车百科汽车行业发展趋势是燃油-新能源配置的发展趋势是智能-无人驾驶说到无人驾驶,听到最多的词就是LL级别是由SAE(国际汽车工程师协会)对ADAS(驾驶员辅助系统)分的等级,L其实就是Level的第一个字母,后面的数字当然越大就代表等级越高,技术越好,越成熟。01L1级别L1级别就是给予驾驶者一些比较简单的辅助支持,驾驶者还需要操作。最具代表性的技术就是ACC自适应巡航,通过车身上的雷达系统检测周围的路况,实现自动跟车加速、减速、刹车等。02L2级别L2这个级别的车辆可以实现部分功能自动化,但驾驶者需监视路况,随时准备接手车辆。通常会配备以下几个功能,ACC自适应巡航、车道保持系统、自动刹车辅助系统、自动泊车系统。L2级别让开车变得更加轻松起来,甚至在简单道路上手可以短暂离开方向盘。03L3级别L3级别基本可以做到车辆在特定的环境中实现部分自动驾驶的操作,根据路况环境自动判断可以自动驾驶还是返还给驾驶者手动操作。在遇到一些特殊情况的时候也会做出正确判断,会提前询问驾驶者得到肯定回答后再进行自动操作。有点类似学徒在开车,驾驶者就是教练。目前有少数的车辆达到了这个级别,但都还是在持续完善的阶段。04L4级别L4可以达到了人们追求的自动驾驶,完全不需要监测或回应,车辆完全可以根据判断瞬时做出正确的操作。人坐在车上完全可以做想做的事,玩手机不会被扣分了,甚至睡觉都可以,相当于坐上了专人司机开的车辆,只需要上车下车就足够了。但是这个级别要限定行驶区域的,不能适合所有的驾驶场景。05L5级别这个级别就是自动驾驶技术的最终目标了,达到了L5自动驾驶级别的车辆是在任何场景,遇到任何情况都不需要人为地进行操作,只管坐在上面(躺着也行),反正就是想干嘛就干嘛!现在清楚了L+数字都表示的什么意思?L1-L3级别都还是不能称得上自动驾驶,只能算得上驾驶辅助系统;只有达到了L4级别才称得上是真正的自动驾驶。虽然现在大部分汽车都还处在L2级别。(图/文/摄:太平洋汽车网问答叫兽)2023-07-18 09:26:111
help sb with sth还是help sb to do sth?
都可以第一个是帮某人做某事第二个帮某人去做某事2023-07-18 09:26:142
什么是WINS 服务
微软开发的域名服务系统,需要了解详情 请看下面:WINS是Windows Internet Name Server(Windows网际名字服务)的简称。WINS为NetBIOS名字提供名字注册、更新、释放和转换服务,这些服务允许WINS服务器维护一个将NetBIOS名链接到IP地址的动态数据库,大大减轻了对网络交通的负担。 一.我们为什么需要WINS服务 在默认状态中,网络上的每一台计算机的NetBIOS名字是通过广播的方式来提供更新的,也就是说,假如网络上有n台计算机,那么每一台计算机就要广播n-1次,对于小型网络来说,这似乎并不影响网络交通,但是当大型网络来说,加重了网络的负担。因此WINS对大中型企业来说尤其重要。 二.WINS工作原理 上面说过,WINS服务器为客户端提供名字注册了、更新、释放和转换服务,下面就详细介绍这四个基本服务的工作原理: 1.名字注册 名字注册就是客户端从WINS服务器获得信息的过程,在WINS服务中,名字注册是动态的。 当一个客户端启动时,它向所配置的WINS服务器发送一个名字注册信息(包括了客户机的IP地址和计算机名),如果WINS服务器正在运行,并且没有没有其它客户计算机注册了相同的名字,服务器就向客户端计算机返还一个成功注册的消息(包括了名字注册的存活期----TTL)。 与IP地址一样,每个计算机都要求有唯一的计算机名,否则就无法通信。如果名字已经被其它计算机注册了,WINS服务将会验证该名字是否正在使用。如果该名字正在使用则注册失败(发回一个负确认的信息),否则就可以继续注册。 2.名字更新 因为客户端被分配了一个TTL(存活期),所有它的注册也有一定的期限,过了这个期限,WINS服务器将从数据库中删除这个名字的注册信息。它的过程是这样的: (1).在过了存活期的1/8后,客户端开始不断试图更新它的名字注册,如果收到不到任何响应,WINS客户端每过2分钟重复更新浓度,直到存活期过了一半。 (2).当存活期过了一半时,WINS客户端将尝试与次选WINS服务器更新它的租约,它的过程与首选WINS服务器一样。 (3).如果时间过了一半后仍然没有成功的话,该客户端又回到它的首选WINS服务器了。 在该过程中,不管是与首选还是次选WINS服务器,一旦名字注册成功之后,该WINS客户端的名字注册将被提供一个新的TTL值。 3.名字释放 在客户端的正常关机过程中,WINS客户端向WINS服务器发送一个名字释放的请求,以请求释放其映射在WINS服务器数据库中的IP地址和NetBIOS名字。收到释放请求后,WINS服务器验证一下在它的数据库中是否有该IP地址和NetBIOS名,如果有就可以正常释放了,否则就会出现错误(WINS服务器向WINS客户端发送一个负响应)。 如果计算机没有正常关闭,WINS服务器将不知道其名字已经释放了,则该名字将不会失效,直到WINS名字注册记录过期。 4.名字解析 当客户端在许多网络操作中需要WINS服务器解析名字,例如当使用网络上其它计算机的共享文件时,为了得到共享文件,用户需要指定两件事:系统名和共享名,而系统名就需要转换成IP地址。 名字解析过程是这样的: (1).当客户端计算机想要转换一个名字时,它首先检查本地NetBIOS名字缓存器。 (2).如果名字不在本地NetBIOS名字缓存器中,便发送一个名字查询到首选WINS服务器(每隔15秒发送一次,共发三次),如果请求失败,则向次选WINS发送同样的请求。 (3).如果都失败了,那么名字解析可以通过其它途径来转换(例如本地广播、lmhosts文件和hosts文件、或者DNS来进行名字解析。 三.WINS服务器和客户端的需求 1.Microsoft对服务器的需求 (1).至少提供一个首选WINS服务器和一个次选WINS服务器来提供容错功能。 (2).一个WINS服务器每分钟可以处理近1500个名字注册和约4500个名字查询。因此我们强烈建议你一个首选和一个次选WINS服务器可以带动10000个客户端。 (3).如果WINS服务器与客户机不在同一个子网上,就要考虑到路由器的性能了。 2.客户端的需求 几乎所有的支持网络互联的Microsoft客户端都可以是WINS客户端,下面列出了可以与WINS一起工作的客户端: *Windows NT Server 3.5x,4.0 *Windows NT Workstation 3.5x,4.0 *Windows 9x/me/2000 *Windows for Workgroups with TCP/IP-32 *Microsoft Network Client 3.0 for MS-DOS *LAN Manager 2.2c for MS-DOS 基于DOS的客户端也可以用WINS服务器进行名字解析,但你必须为它们在WINS服务器中添加静态词条。 2000以后wins几乎被抛弃 全面转向win2000的DNS系统了~2023-07-18 09:26:192
比较酷的英文单词
cruel。酷暑究竟是不是cool的暑期?2023-07-18 09:26:204
开关插座L和L1是啥意思
L.是代表火,L1代表控制线。2023-07-18 09:26:223
WINS服务器是什么
WINS服务器是指为客户端提供名字注册、更新、释放和转换服务的域名服务系统,这些服务允许WINS服务器维护一个将NETBIOS名链接到IP地址的动态数据库,大大减轻了对网络交通的负担。 具体解释为在默认状态中,网络上的每一台计算机的NETBIOS名字是通过广播的方式来提供更新的,假如网络上有N台计算机,那么每一台计算机就要广播N减1次,对于小型网络来说,这并不影响网络交通,但是对大型网络来说,加重了网络的负担,因此WINS对大中型企业来说尤其重要。2023-07-18 09:26:271
澳门科技大学要多少分能进?
570左右。分数仅供参考,详细以澳门科技大学公布的分数线为准。澳门科技大学(Macau University of Science and Technology),简称澳科大(MUST),是一所位于中国澳门的国际化私立研究型大学,澳门规模最大的综合型大学。学校是粤港澳高校联盟、中国高校行星科学联盟和国际大学协会成员。澳门科技大学成立于2000年,是澳门特别行政区政府在澳门回归祖国之后批准创办的第一所国际化综合研究型大学。大学坐落澳门氹仔岛,现有11个学院学部,开设170多个专业课程。 2020年12月,珠海市人民政府宣布,澳门科技大学将设立澳门科技大学珠海校区。师资力量据学校官网显示,澳门科技大学现有全职工作人员1500余人,当中有中国科学院院士、中国工程院院士、美国科学院院士、英国医学科学院院士、台湾中央研究院院士、英国皇家天文学会会士;英国皇家化学学院院士、IEEE会士(IEEE Fellow)、国际宇航科学院院士、美国医学科学院院士、海外高层次人才、世界高被引科学家等顶尖学者。以上内容参考:百度百科-澳门科技大学2023-07-18 09:26:301
wins服务器的作用有哪几个?
分类: 电脑/网络 >> 操作系统/系统故障 问题描述: wins服务器的作用有哪几个? 主要能用在什么地方? 解析: WINS(Windows Inter Name Service)服务器主要用于NetBIOS名字服务,它处理的是NetBIOS计算机名(Computer Name),所以也被称为NetBIOS名字服务器(NBNS,NetBIOS Name Server)。 WINS服务器可以登记WINS-enabled工作站的计算机名、IP地址、DNS域名等数据,当工作站查询名字时,它又可以将这些数据提供给工作站。在各种名字解析方式之中,WINS名字服务具有一些优点。首先,WINS名字服务是以点对点的方式直接进行通信的,并可以跨越路由器访问其他子网中的计算机,这便克服了广播查询无法跨越路由器和加重网络负担的不足;其次,与静态处理域主机名(Host Name)的DNS服务器不同,WINS名字服务还是一种很少人工干预的动态名字服务;第三,WINS名字服务不仅能够用于NetBIOS名字查询,而且还可以辅助域主机名(Host Name)的查询,可以结合DNS和WINS服务器的好处进行Inter域名查询,因此WINS又被称为Windows 网际名称服务(Windows Inter Name Service)。 WINS服务器在TCP/IP网络(包括Inter)的名字解析中得到了广泛的应用。2023-07-18 09:26:341
WINS服务器是什么
WINS服务器是指为客户端提供名字注册、更新、释放和转换服务的域名服务系统,这些服务允许WINS服务器维护一个将NETBIOS名链接到IP地址的动态数据库,大大减轻了对网络交通的负担。 具体解释为在默认状态中,网络上的每一台计算机的NETBIOS名字是通过广播的方式来提供更新的,假如网络上有N台计算机,那么每一台计算机就要广播N减1次,对于小型网络来说,这并不影响网络交通,但是对大型网络来说,加重了网络的负担,因此WINS对大中型企业来说尤其重要。2023-07-18 09:26:001
澳门理工大学好,还是澳门科技大学好
澳门理工大学好。澳门理工大学,(缩写UPM),英文:Macao Polytechnic University,简称澳理大),总部位于澳门新口岸高美士街,是一所多学科、应用型的公立高等学府,教学与科研并重。现任主席李向玉、校长严肇基。校训为“普专兼擅、中西融通”。根据2022年10月学校官网显示,学校设有6所学院,包括应用科学学院、健康科学及体育学院、语言及翻译学院、艺术及设计学院、人文及社会科学学院,以及管理科学学院;开办科技创新、健康医学、体育科学、语言翻译、艺术文创、公共管理、社会服务、工商管理等不同范畴的学士、硕士及博士学位课程。简介:澳门理工大学始创于1981年,前身为东亚大学理工学院。1991年改为澳门理工学院,2022年3月1日更名为澳门理工大学。1981年,澳门理工大学前身东亚大学理工学院成立。1991年,随着东亚大学一分为三,澳门理工学院正式成立。2022年2月,澳门特别行政区政府修改第28/2019号行政法规《澳门理工学院章程》,将澳门理工学院更名为澳门理工大学,原各高等学校更名为学院,其中“艺术高等学校”改为“艺术及设计学院”。2022年3月,澳门理工学院正式更名为澳门理工大学。学校的师资团队国际化,师资来自内地、韩国、欧洲、美国等地。大学创设多元学习环境,遵从“学生为本,全人发展”的方针,优化大学的各项工作。大学拥有来自世界各地著名高校的专家组成的学术顾问团队,为大学学术发展及指导起了积极的作用。2023-07-18 09:25:581
什么是WINS呢!!
WINS是Windows Internet Naming Server,即Windows Internet命名服务。2023-07-18 09:25:522
help sb do sth 的同义词组是什么?
help sb. do sth. 同意短语helpsb. with sth.2023-07-18 09:25:521
relatively 一般接比较级吗
不是的,要加形容词原形。虽然有“相对的,比较地”这个意思,但是后面不加比较级。如:The sums needed are relatively small 需要的金额相对较小。 I like to think I"m relatively easy to get along with. 我愿意认为自己相对比较容易相处。2023-07-18 09:25:511
澳门科技大学怎么样
一般被香港那边的大学录取了就不能在参加内地的高招了,那么,如果是被澳门的高校录取了呢?是不是也不能参加内地的招录了呢?如果今年有考生已经被澳门科技大学录取了,还能不能参加内地的高考招生呢?下面我给大家带来答案,供大家参考! 被澳门科技大学录取了是不是就不能参加内地的统招录取 报考澳门地区高校,可以同时参加江苏省高考统招各批次志愿的志愿填报和录取。 报考澳门大学、澳门理工学院、澳门旅游学院、澳门科技大学、澳门镜湖护理学院的考生,在高考分数公布后,直接登录高校网站进行网上报名。 被澳门科技大学和内地高校同时录取怎么办 澳门大学、澳门理工学院和旅游学院本科录取要求考生的分数需达到我省划定的本科第一批院校录取最低控制分数线以上;澳门科技大学和澳门镜湖护理学院要求考生的分数需达到我省划定的本科第二批院校录取最低控制分数线。澳门科技大学预科生的录取分数将根据生源情况确定。据悉,被澳门5所高校录取的考生,可以同时填报内地高校的志愿,并参加内地高校的录取。若被内地高校同时录取,考生可自主选择其中一所高校就读。 澳门科技大学怎么样 澳门科技大学分数线在一本线左右,对于一本线左右的考生来说是个非常不错的选择,在2019年qs亚洲大学排名中澳门科技大学位列第229名,与上海财经并列,超过很多内地的211号高校,像中国海洋大学,北京邮电大学等。同时已经连续两年在ARWU世界大学学术排名中保持501-600的位次,也已经连续3年在中国两岸四地大学排名中保持前50。 如果你的自制力比较强大并且把作为出国为目的的话,来澳门科技大学吧!这里比着国内二本出国条件好的多;毕竟有出国的氛围,一个宿舍4个人,三个在准备TOEFL,GRE等,这样的氛围中,通过彼此的帮助,相信四年之后大洋彼岸来得不说offer至少有个ad吧!! 澳门科技大学开设:计算机技术及其应用、电子资讯科技、软件技术及其应用、会计学、财务学、市场学、国际商务学、资讯系统学、电子商务学、人力资源管理学、物流管理学、会展管理、博彩业管理、中英文翻译、酒店管理、法学、中医学、生物医学等专业。用中、英两种语言授课。 澳门高校要求的入学成绩比香港高校要平易的多,除澳门大学参考有关省/市本科一批分数线录取外,澳门理工学院、澳门科技大学、澳门镜湖护理学院、澳门旅游学院仅要求考生达到所在省/市的二本线。因此,澳门高校向更多的内地考生敞开大门。2023-07-18 09:25:511
WINS是啥意思
请参见百度wins百科2023-07-18 09:25:452
急求英语动画片
《Wonder Pets》2023-07-18 09:25:458
Beverly Hills 歌词
歌曲名:Beverly Hills歌手:Weezer专辑:Beverly HillsBeverly HillsWeezerWhere I come from isn"t all that greatMy automobile is a piece of crapMy fashion sense is a little whackAnd my friends are just as screwy as meI didn"t go to boarding schoolsPreppy girls never looked at meWhy should they I ain"t nobodyGot nothing in my pocketBeverly HillsThat"s where I want to be! (Gimme Gimme)Living in Beverly Hills...Beverly HillsRolling like a celebrity! (Gimme Gimme)Living in Beverly Hills...Look at all those movie starsThey"re all so beautiful and cleanWhen the housemaids scrub the floorsThey get the spaces in betweenI wanna live a life like thatI wanna be just like a kingTake my picture by the poolCause I"m the next big thing!The truth is...I don"t stand a chanceIts something that you"re born into...And I just don"t belong...No I don"tI"m just a no class, beat down foolAnd I will always be that wayI might as well enjoy my lifeAnd watch the stars playhttp://music.baidu.com/song/102980812023-07-18 09:25:391
WINS服务是一种怎样的服务?
Windows Internet Name Service 微软开发的域名服务系统。 WINS是Windows Internet Name Server(Windows网际名字服务)的简称。WINS为NetBIOS名字提供名字注册、更新、释放和转换服务,这些服务允许WINS服务器维护一个将NetBIOS名链接到IP地址的动态数据库,大大减轻了对网络交通的负担。 一.我们为什么需要WINS服务 在默认状态中,网络上的每一台计算机的NetBIOS名字是通过广播的方式来提供更新的,也就是说,假如网络上有n台计算机,那么每一台计算机就要广播n-1次,对于小型网络来说,这似乎并不影响网络交通,但是当大型网络来说,加重了网络的负担。因此WINS对大中型企业来说尤其重要。 二.WINS工作原理 上面说过,WINS服务器为客户端提供名字注册了、更新、释放和转换服务,下面就详细介绍这四个基本服务的工作原理: 1.名字注册 名字注册就是客户端从WINS服务器获得信息的过程,在WINS服务中,名字注册是动态的。 当一个客户端启动时,它向所配置的WINS服务器发送一个名字注册信息(包括了客户机的IP地址和计算机名),如果WINS服务器正在运行,并且没有没有其它客户计算机注册了相同的名字,服务器就向客户端计算机返还一个成功注册的消息(包括了名字注册的存活期----TTL)。 与IP地址一样,每个计算机都要求有唯一的计算机名,否则就无法通信。如果名字已经被其它计算机注册了,WINS服务将会验证该名字是否正在使用。如果该名字正在使用则注册失败(发回一个负确认的信息),否则就可以继续注册。 2.名字更新 因为客户端被分配了一个TTL(存活期),所有它的注册也有一定的期限,过了这个期限,WINS服务器将从数据库中删除这个名字的注册信息。它的过程是这样的: (1).在过了存活期的1/8后,客户端开始不断试图更新它的名字注册,如果收到不到任何响应,WINS客户端每过2分钟重复更新浓度,直到存活期过了一半。 (2).当存活期过了一半时,WINS客户端将尝试与次选WINS服务器更新它的租约,它的过程与首选WINS服务器一样。 (3).如果时间过了一半后仍然没有成功的话,该客户端又回到它的首选WINS服务器了。 在该过程中,不管是与首选还是次选WINS服务器,一旦名字注册成功之后,该WINS客户端的名字注册将被提供一个新的TTL值。 3.名字释放 在客户端的正常关机过程中,WINS客户端向WINS服务器发送一个名字释放的请求,以请求释放其映射在WINS服务器数据库中的IP地址和NetBIOS名字。收到释放请求后,WINS服务器验证一下在它的数据库中是否有该IP地址和NetBIOS名,如果有就可以正常释放了,否则就会出现错误(WINS服务器向WINS客户端发送一个负响应)。 如果计算机没有正常关闭,WINS服务器将不知道其名字已经释放了,则该名字将不会失效,直到WINS名字注册记录过期。 4.名字解析 当客户端在许多网络操作中需要WINS服务器解析名字,例如当使用网络上其它计算机的共享文件时,为了得到共享文件,用户需要指定两件事:系统名和共享名,而系统名就需要转换成IP地址。 名字解析过程是这样的: (1).当客户端计算机想要转换一个名字时,它首先检查本地NetBIOS名字缓存器。 (2).如果名字不在本地NetBIOS名字缓存器中,便发送一个名字查询到首选WINS服务器(每隔15秒发送一次,共发三次),如果请求失败,则向次选WINS发送同样的请求。 (3).如果都失败了,那么名字解析可以通过其它途径来转换(例如本地广播、lmhosts文件和hosts文件、或者DNS来进行名字解析。 三.WINS服务器和客户端的需求 1.Microsoft对服务器的需求 (1).至少提供一个首选WINS服务器和一个次选WINS服务器来提供容错功能。 (2).一个WINS服务器每分钟可以处理近1500个名字注册和约4500个名字查询。因此我们强烈建议你一个首选和一个次选WINS服务器可以带动10000个客户端。 (3).如果WINS服务器与客户机不在同一个子网上,就要考虑到路由器的性能了。 2.客户端的需求 几乎所有的支持网络互联的Microsoft客户端都可以是WINS客户端,下面列出了可以与WINS一起工作的客户端: *Windows NT Server 3.5x,4.0 *Windows NT Workstation 3.5x,4.0 *Windows 9x/me/2000 *Windows for Workgroups with TCP/IP-32 *Microsoft Network Client 3.0 for MS-DOS *LAN Manager 2.2c for MS-DOS 基于DOS的客户端也可以用WINS服务器进行名字解析,但你必须为它们在WINS服务器中添加静态词条。 2000以后wins几乎被抛弃 全面转向win2000的DNS系统了~参考资料:http://www.lukin.cn/other/network/WINS/2006-4-18/k37708.htm2023-07-18 09:25:372
日照3+4学校有多少所
日照3+4学校有哪些具体如下:日照3+4学校包括日照职业技术学院、日照航海工程职业学院、五莲县职业中等专业学校、日照师范学校、日照春蕾特殊教育学校、日照航海技术学校、日照市工业学校、日照市科技中等专业学校、山东省日照市机电工程学校。山东省日照市东港歧黄推拿按摩职业培训学校、山东水利职业学院、日照市卫生学校、日照市特殊教育学校、日照市农业学校、日照市海洋工程学校、山东日照海事专修学院、日照金度外语学校、日照市东港职业培训学校、日照前程职业技术学院。日照市东港区职业教育中心、日照市体育运动学校、山东日照海事专修学院、日照市水产技工学校、日照市工程技术学校。日照市东港区卫生学校、山东外国语职业学院、日照市商业学校、日照海元素化妆摄影培训机构、兰易电脑职业培训学校、日照市鑫鑫职业培训学校。扩展知识:日照航海工程职业学院是经山东省人民政府批复成立、教育部备案的全日制普通高等职业院校。学校有日照大学科技园校区和山海天旅游度假区、青岛北路两个校区;设有8个教学院部门,开办高职专业37个。日照市科技中等专业学校,五莲县职业技术教育中心是国家级重点中等职业学校,成立于2002年7月,由原五莲县技工学校、教师进修学校、第一职业高中合并组建而成,隶属于五莲县教育局,主要承担本地区中等专业技术人才培养和各类社会人员的培训任务。日照航海工程职业学院是经山东省人民政府批复成立、教育部备案的全日制普通高等职业院校。学校有日照大学科技园校区和山海天旅游度假区(青岛北路)两个校区;设有8个教学院部门 ,开办高职专业37个。2023-07-18 09:25:371
今晚有没有伊万诺维奇的比赛
晚上7点 . 伊万诺维奇 VS 18号种子 斯托瑟2023-07-18 09:25:304