bootstrap滚动条样式 css框架bootstrap
- 软件开发
- 2023-08-13
- 107
大家好,bootstrap滚动条样式相信很多的网友都不是很明白,包括css框架bootstrap也是一样,不过没有关系,接下来就来为大家分享关于bootstrap滚动条...
大家好,bootstrap滚动条样式相信很多的网友都不是很明白,包括css框架bootstrap也是一样,不过没有关系,接下来就来为大家分享关于bootstrap滚动条样式和css框架bootstrap的一些知识点,大家可以关注收藏,免得下次来找不到哦,下面我们开始吧!
为什么XGBoost在机器学习竞赛中表现如此卓越
在此简单补充一点,希望能给你带来帮助:【预测领域中的真“绝色”:XGBoost】
全文共3492字,预计学习时长15分钟前几天,Z同学面试完一脸生无可恋地问我,“你知道XGBoost吗?”“当然知道啊,前几天不看你还在手推来着。”“嗯,那你知道XGBoost的中英文全称是啥么?”“ummmmm...X的话难道是罗马数字10?G的话Gradient梯度,Boost的Boostingtree?所以是第十代梯度提升树?”“。。。换你答,你也凉。”
图片来源:SOOGIF网站
学习算法的最大误区还记得那个吐槽清华某毕业生连手写红黑树都不会却张口就要一万八的HR吗?
这事曾一度引起网友的广泛关注和热烈讨论,不过圈子不同,影响不同。对于普通吃瓜群众,“HR说得对,太膨胀。”对于某些资深程序猿,“我也不会,我月薪30k。”对于求职小白,“好慌,手写红黑树?面试不会还要手推SVM、XGBoost吧?溜了溜了,去推泰勒二次展开了。”然后,就像我的同学小Z一样,只顾着埋头推导XGBoost的二阶泰勒展开,却连XGBoost的中英文全称都答不上来。顾此失彼,乃是兵家大忌。很多时候,我们在学习算法时,要么过于纠结弄懂原理而忽略了从宏观上对算法有一个总体的了解和把握,要么是囫囵吞枣一口气看个十来篇博客介绍却往往还是一知半解不求甚解,可能还会莫名自我感觉良好。
基于此,本文就从宏观上来帮大家梳理梳理XGBoost,力求通俗易懂,精准得当。至于算法原理和资源链接嘛,请直接拜读陈天奇博士的论文XGBoost:AScalableTreeBoostingSystem,同时请参考Github上的开源资源进行源码的学习和实战(https://github.com/dmlc/xgboost)。
什么是XGBoost?原图来自Unsplash(byJaredSubia)
十几年前,回归建模是预测分析中毫无争议的女王。但如今回归建模的时代已经结束,XGBoost已被成功加冕!XGBoost的英文全称为ExtremeGradientBoosting,中文可以解释为极端梯度提升(Extreme,一听就很牛X),它是一种基于决策树的集成机器学习算法,采用了梯度提升(GradientBoosting)框架。在预测有关非结构化数据(如图像、文本等)的问题时,人工神经网络往往表现得比其他算法或框架更出色。但在有关中小型结构/表格数据方面,基于决策树的算法则是目前为止的最佳方式。请参阅以下图表,了解几年来基于决策树的算法演变。
基于决策树的算法演变
XGBoost算法最初由华盛顿大学的一个研究项目发展而来。2016年,陈天奇和卡洛斯·格斯特林在知识发现和数据挖掘(SIGKDD)会议上共同发表了一篇论文,一时间这轰动了整个机器学习领域。自算法提出以来,它不仅帮助竞赛者赢得了多场Kaggle竞赛的胜利,还被几款尖端行业的应用所采纳。在GitHub上,有一群强大的数据科学家们为XGBoost开源项目提供帮助,约有350名科学家,总提交次数约为3,600次。
总体而言,XGBoost具有以下特征:
1.应用广泛:可用于解决回归、分类、排名和用户定义的预测问题。
2.移植性强:可在Windows、Linux和OSX上流畅运行。
3.语言支持:支持目前主要的全部编程语言,包括C++、Python、R、Java、Scala和Julia。
4.云集成:支持AWS、GCE、Azure和Yarn集群,可以与Flink、Spark和其他云数据流系统集成。
通俗理解基于决策树的算法演变照片来自Unsplash(byrawpixel)
假设你是一名面试官,正在面试几位资历优秀的候选人。基于决策树的算法演变中的每一环,都可看作面试过程的一部分。
1.决策树:每名面试官都有一套面试评价标准,如教育水平、工作经验以及面试表现,通过决策树来预测分析,就类似于面试官根据他自己的标准面试候选人。
2.Bagging:假设现在面试官不止一名,而是一个面试小组,每名面试官都有一票,Bagging(也称作bootstrapaggregating)意味着通过民主投票方式,将所有面试官的投票结果进行输入,从而做出最终决定。
3.随机森林:这是一种基于bagging的算法,与bagging的不同在于仅随机选择特征的子集。换句话说,每名面试官只会根据某些随机的资质测试方式(例如,测试编程技能的技术面试和非技术技能评估的行为面试)来考查面试者。
4.Boosting:这是一种动态评估方法,每位面试官根据前一位面试官的反馈,改变评估标准。通过部署更加动态的评估流程,“提高”面试流程的效率。
5.GradientBoosting:这是Boosting的一种特殊情况,通过梯度下降算法将误差最小化,打个比方说,就好比战略咨询公司利用面试案例,剔除不合格的候选人。
6.XGBoost:将XGBoost视为强化版的的gradientboosting,毕竟extreme不是随随便便就能“冠”名的。它是软件和硬件优化技术的完美结合,可在最短的时间内,使用较少的计算资源,得到较为出色的结果。
XGBoost为什么这么“绝”?XGBoost之所以能叫XGBoost,因为她够“绝”(够Extreme)。XGBoost和GradientBoostingMachines(GBMs)都是基于决策树的集合方法,通过梯度下降架构来提升较弱学习者(通常是CARTs)。通过系统优化和算法增强,XGBoost进一步改进了基础GBM框架。
XGBoost如何优化GBM标准算法系统优化:
1.并行化:
XGBoost通过多线程实现了回归树的并行构建。由于用于构建基础学习者的循环具有可互换性,因此设计并行是可能的。外部循环枚举树的节点,内部循环则计算特征。这种循环嵌套在一定程度上限制了并行化,当没有完成内部循环,外部循环就无法启动。因此,为改善运行时间,可通过对所有实例的全局扫描实现初始化,使用并行线程分类来交换循环顺序。这一交换通过抵消计算中的并行化开销,提高算法性能。
2.决策树剪枝:
当剪枝分裂遇到一个负损失时,GBM会停止分裂。因此GBM实际上是一个贪心算法(只求达到局部最优解就ok)。但XGBoost会一直分裂到指定的最大深度(max_depth),然后回过头来剪枝。这种“深度优先”方法显著提高了计算性能。
3.硬件优化:
该算法旨在有效利用硬件资源。通过在每个线程中分配内部缓冲区,存储梯度统计信息,获取缓存感知。诸如“核外”计算等进一步增强功能可优化可用磁盘空间,同时处理不适合保存的大数据帧。
算法增强:
1.正则化:
通过LASSO(L1)和Ridge(L2)正则化来对更为复杂的模型进行惩罚,防止过度拟合。
2.稀疏性感知:
XGBoost具有稀疏性的离散特征,根据训练缺失自动“学习”最佳缺失值,并且可以更有效率地处理数据中不同类型的稀疏模式。
3.加权分位数草图:
XGBoost采用分布式加权分位数草图算法,有效地找到加权数据集中的最佳分裂点。
4.交叉验证:
在每次迭代时,该算法都有内置的交叉验证方法,无需显式地对搜索进行编程或明确在指定单次运行中所需的增强迭代数量。有何证据?我们使用Scikit-learn的“Make_Classification”数据包创建了一个包含20类特征(2类信息型和2类冗余型)的100万个数据点的随机样本。我们测试了几种算法,如逻辑回归、随机森林、标准GradientBoosting和XGBoost。
使用SKLearn的Make_Classification数据集比较XGBoos与其他机器学习算法如上图所示,与其他算法相比,XGBoost模型是兼顾预测性能和处理时间的最佳预测方式。其他严格的基准研究也产生相同结果。正因如此,XGBoost在最近的数据科学竞赛中被广泛使用。如有疑问,请使用XGBoost。——Kaggle网站上AvitoContextAdClickPrediction竞赛的获奖者OwenZhang
XGBoost的未来尽管就目前而言,XGBoost的王座还难以撼动。但机器学习这一领域的学者大都比较活跃,而且不畏权贵,一心恋战。目前已有几种据说可以匹敌XGBoost的新算法框架被提出,比如微软研究中心新发布的LightGBM框架和YandexTechnology开发的CatBoost框架。
图片来源:RSGMedia网站
每当NIPS/ICML/KDD等顶级会议上一有新的算法被提出,最忙活的可能就是数据科学家了。数据科学家们必须测试所有可能的数据算法,以保证最终选择的算法是最佳的。
此外,选择正确的算法还远远不够,还必须通过不断调整超参数,正确对算法数据集进行配置。
此外,如何选择最佳的算法还有其他几个值得考虑的因素,例如算法的计算复杂度、可解释性以及实现的难易程度。而这正是机器学习开始从科学走向艺术的时刻。历史的车轮总是在不断向前滚动。XGBoost的铁王座早就被许多人觊觎垂涎,开发一个优于XGBoost的更强大的模型框架只是时间上的早晚问题。然而,在强大的挑战者出现之前,XGBoost将继续统治机器学习的世界!
留言点赞关注
我们一起分享AI学习与发展的干货
欢迎关注全平台AI垂类自媒体“读芯术”
开发androidapp,你会用到哪些开源框架
1.Framework7来自iDangero.us—自版本1.0在一年前发布以来,Framework就一直是开发iOS应用程序的最佳选择之一。由于它提供对安卓的支持,如果你先从iOS入手,但随后构建具有类似iOS外观感觉的安卓版本,它也是个不错的选择。功能特性包括:MaterialDesign用户界面、原生滚动、1:1页面动画、自定义DOM库以及XHR缓存和预装入。3.jQueryMobile来自jQuery基金会—这种成熟的轻量级框架基于jQuery,缺少本文中介绍的大多数程序包具有的许多高级功能,不过它仍拥有一群庞大的忠实用户。虽然它提供了语义标记、渐进式改进、主题化设计和PhoneGap/Cordova支持之类的功能,但是在类似原生系统的功能和性能或者高级用户界面方面乏善可陈。另一方面,它又很简单,这意味着“编写一次,到处运行”是常常可以实现的目标;对于还需要在WindowsPhone和黑莓上运行的简单应用程序而言,它也是个不错的选择。2.Ionic来自Ionic—这种流行的跨平台框架基于SassCSS扩展语言,使用起来相当容易,不过它还能集成用于构建更高级应用程序的AngularJS。Ionic提供了一个丰富的库,包括针对移动设备优化的HTML、CSS和JSCSS组件、手势及工具,可与预定义的组件协同工作。命令行接口提供了仿真器、实时重装和日志等功能。还有一个基于Cordova的应用程序包装器。4.KendoUI来自Telerik—这种基于jQuery的HTML5/Java框架既有开源版,又有商业版。对企业用户友好的KendoUI提供了种类丰富的用户界面窗口组件和插件。它最广为人知的地方就是拥有无数具有MaterialDesign风格的预构建主题,另外还有一个主题构建器,可用于构建自定义主题。其他功能特性包括:Angular和BootstrapUI集成以及性能优化。6.Native来自Telerik—顾名思义,Native专注于原生用户体验开发,但是它提供了跨安卓和iOS的跨平台代码共享支持。该软件使用现有的原生用户界面库,用户界面由Java、XML或视情况而定的Angular来描述。然而,使用起来,它不如Telerik更传统的跨平台KendoUI框架来得容易。5.MobileAngularUI来自MaurizioCasimirri—这个开源项目将AngularJS和经过修改的推特Bootstrap合并到了一个移动用户界面框架。据说它保留了Bootstrap3的大部分语法,因而更容易实现从Web应用程序向移动应用程序的移植,同时增添了Bootstrap缺失的许多组件,比如切开关、覆盖、侧边栏、可滚动区域以及固定位置的导航条。库包括fastclick.js和overthrow.js。7.OnsenUI来自AsialCorp.—Onsen基于HTML和CSS而建,旨在与并非预先集成的PhoneGap和Cordova协同运行。它还可以与Angular和jQuery协同运行。顾名思义,该程序强调用户界面开发,并提供了一系列广泛的基于Web的用户界面组件和特性,比如表格的双列视图。(然而,仍然缺少MaterialDesign。)这个文档完备的程序针对这样的jQueryMobile用户:既需要易于使用,又想要更多的功能、更高的性能和更丰富的用户界面特性。总部位于东京的Asial正在开发一种拖放式GUI工具,该公司还开发和维护Monaca。9.SenchaTouch来自Sencha—Sencha的成熟的、面向企业的HTML5/Java框架既有开源版,又有商业版。Sencha建立于ExtJS的基础上,能够获得类似原生的性能。它为HTML5提供了可视化应用程序构建器,另外还提供了重复使用自定义组件的功能。原生包装器简化了分发到GooglePlay等应用程序商店的工作。8.ReactNative来自Facebook—ReactNative是一种开源框架,从Facebook的ReactJava框架派生而来,众所周知,Java框架取代了早些时候的HTML5基础。顾名思义,这个面向iOS的高端程序与其说是一种跨平台框架,还不如说是原生程序包装器,但是由于新增了对安卓的支持,它很适合我们的要求,因为你实际上只要用Java编写一次代码,就能移植到这两个平台。目前,只有OSX桌面得到全面支持,不过也有试验性的Linux和Windows版本面向安卓开发。10.Titanium来自Appcelerator—不像那些比较偏向Web的框架,Titanium使用Java来构建原生代码,声称有望提升性能。这种基于Node.js的软件开发工具包(SDK)为iOS、安卓、Windows、黑莓和HTML5提供了5000多个API。Titanium更广为人知的地方是性能和丰富的功能特性,而不是易用性。软件是开源,不过只要你不发布你的应用程序,功能齐全的免费版可以免费享用,眼下你每月至少得支付39美元。
bootstrap可编辑表格,怎么绑定下拉框
首先,
你要知道一个基础table的标签怎么去写,只有知道这个基础,你才能更好的用bootstrap中的table.html在这不过多说明.
既然看这篇文章,肯定都能够理解.然后现在就把bootstrap中的table来详细说明一下.基础的table如下:
下面了解一下bootstrap中table,没有什么大道理可以讲解.唯有一点,通过表格的方式展示页面.首先有必要样式.table.和一些选用样式.举例说明必要样式.首先要搭建一个基础框架,请看系列经验第一篇.
在搭建的基础框架里面的body部分填写table信息.然后在table的标签上加上基础样式.table的css样式.你立刻发现,界面瞬间好看多了.
说明一下除了必要的.table之外,还有很多可选的class.不同的可选class.是可以联合使用的.
1.我们常用的就有边框的table.只需要使用.table-bordered查看效果图.
2.斑马线,也就是隔行相同颜色的一个样式.使用.table-striped样式.
注意点有2个:
(1)斑马线是对tbody中的行起作用
(2)斑马线的实现方式是通过:nth-childCSS选择器实现的,但是呢,他不被ie8支持,你懂我说的.
3.鼠标悬停在行上,改变行的背景颜色.使用.table-hover样式.
注意:这个需要多行的时候,这种效果更加明显.
4.让表格更加紧凑的样式.table-condensed,它是让表格单元格中的内部(padding)减半.展现更多的内容,和更多的显示内容.
其他的提醒说明:在bootstrap中有这样的几个样式,可以说是提醒样式.每个样式都是一种提醒方式.这些方式也可以放到table中.只需要使用class即可.
上面状态的样式,可以使用到不同的内容中,比方说,tr中,td中,都是可以的.下面的举例说明.
注意点:在使用这个样式的时候不能使用.table-striped的样式,会出现不能正常显示的问题.
还有就是现在比较流行的响应式的table.只需要在table包含在.table-responsive中即可,作用为:当屏幕小于768的时候,才会出现滚动条,否则滚动条消失.
10
动手去尝试,你发现学习bootstrap也就是这么简单.祝你更快的学会这个框架.
OK,本文到此结束,希望对大家有所帮助。
本文链接:http://xinin56.com/ruanjian/2380.html