当前位置: 首页 > news >正文

网站系统建设技术服务费设计师网址推荐

网站系统建设技术服务费,设计师网址推荐,广告平面设计用什么软件,网站主机测速文章目录一、 集成学习的三大关键领域二、Bagging 方法的基本思想三、RandomForestRegressor 的实现在开始学习之前#xff0c;先导入我们需要的库#xff0c;并查看库的版本。 import numpy as np import pandas as pd import sklearn import matplotlib as mlp import sea… 文章目录一、 集成学习的三大关键领域二、Bagging 方法的基本思想三、RandomForestRegressor 的实现在开始学习之前先导入我们需要的库并查看库的版本。 import numpy as np import pandas as pd import sklearn import matplotlib as mlp import seaborn as sns import re, pip, condafor package in [sklearn,mlp,np,pd,sns,pip,conda]:print(re.findall(([^]*),str(package))[2],package.__version__) #sklearn 1.0.1 #matplotlib 3.4.3 #numpy 1.20.3 #pandas 1.3.4 #seaborn 0.11.2 #pip 21.3.1 #conda 4.10.3如果有缺少的库或者库的版本比较落后可以采用如下的代码进行下载更新。 #下载 pip install --upgrade scikit-learn #更新 conda update scikit-learn一、 集成学习的三大关键领域 集成学习Ensemble learning是机器学习中最先进、最有效、最具研究价值的领域之一这类方法会训练多个弱评估器base estimators、并将它们输出的结果以某种方式结合起来解决一个问题。在过去十年中人工智能相关产业蓬勃发展计算机视觉、自然语言处理、语音识别等领域不断推陈出新、硕果累累但热闹是深度学习的机器学习好似什么也没有。2012 年之后传统机器学习占据的搜索、推荐、翻译、各类预测领域都被深度学习替代或入侵在招聘岗位中69% 的岗位明确要求深度学习技能传统机器学习算法在这一场轰轰烈烈的人工智能热潮当中似乎有些被冷落了。在人工智能大热的背后集成学习就如同裂缝中的一道阳光凭借其先进的思想、优异的性能杀出了一条血路成为当代机器学习领域中最受学术界和产业界青睐的领域。从今天的眼光来看集成学习是1 当代工业应用中唯一能与深度学习算法分庭抗礼的算法2 数据竞赛高分榜统治者KDDcup、Kaggle、天池、DC 冠军队御用算法3 在搜索、推荐、广告等众多领域事实上的工业标准和基准模型4 任何机器学习/深度学习工作者都必须掌握其原理、熟读其思想的领域。在集成学习的发展历程中集成的思想以及方法启发了众多深度学习和机器学习方面的工作在学术界和工业界都取得了巨大的成功。今天集成学习可以被分为三个主要研究领域 -1 模型融合。 模型融合在最初的时候被称为分类器结合这个领域主要关注强评估器试图设计出强大的规则来融合强分类器的结果、以获取更好的融合结果。这个领域的手段主要包括了投票法 Voting、堆叠法 Stacking、混合法 Blending等且被融合的模型需要是强分类器。 模型融合技巧是机器学习/深度学习竞赛中最为可靠的提分手段之一常言道当你做了一切尝试都无效试试模型融合。2 弱分类器集成。弱分类器集成主要专注于对传统机器学习算法的集成这个领域覆盖了大部分我们熟悉的集成算法和集成手段如装袋法 bagging提升法 boosting。这个领域试图设计强大的集成算法、来将多个弱学习器提升成为强学习器。3 混合专家模型mixture of experts。混合专家模型常常出现在深度学习神经网络的领域。在其他集成领域当中不同的学习器是针对同一任务、甚至在同一数据上进行训练。但在混合专家模型中我们将一个复杂的任务拆解成几个相对简单且更小的子任务然后针对不同的子任务训练个体学习器专家然后再结合这些个体学习器的结果得出最终的输出。 二、Bagging 方法的基本思想 Bagging又称为装袋法它是所有集成学习方法当中最为著名、最为简单、也最为有效的操作之一。在 Bagging 集成当中我们并行建立多个弱评估器通常是决策树也可以是其他非线性算法并综合多个弱评估器的结果进行输出。当集成算法目标是回归任务时集成算法的输出结果是弱评估器输出的结果的平均值当集成算法的目标是分类任务时集成算法的输出结果是弱评估器输出的结果少数服从多数。举例来说假设现在一个 bagging 集成算法当中有 7 个弱评估器对任意一个样本而言输出的结果如下 #分类的情况输出7个弱评估器上的分类结果012 r_clf np.array([0,2,1,1,2,1,0])b_result_clf np.argmax(np.bincount(r_clf))b_result_clf #集成算法在现在的样本上应该输出的类别 #1bincount 会先将 array 由小到大进行排序然后对每个数值进行计数并返回计数结果的函数。需要注意的是bincount 函数不能接受负数输入。argmax 是找到 array 中最大值并返回最大值索引的函数。 np.bincount(r_clf) #0类2个1类3个2类2个 #array([2, 3, 2], dtypeint64)np.bincount([3,0,2,1,1,2,1,0]) #0类2个1类3个2类2个3类1个 #array([2, 3, 2, 1], dtypeint64)np.argmax(np.array([2, 3, 2])) #不难发现其返回的就是少数服从多数后数量最多的类别 #1#如果是二分类涉及到有一些负数类别的可以使用如下代码 r_clf np.array([1,1,1,-1,-1,-1,-1]) (r_clf 1).sum() #整个集成算法当中输出为1的弱分类器的数量 #3(r_clf -1).sum() #4b_result_clf 1 if (r_clf 1).sum() (r_clf ! 1).sum() else -1 b_result_clf #-1#如果评估器的数量是偶数而少数和多数刚好一致怎么办 r_clf np.array([1,1,1,0,0,0,2,2])从数量一致的类别中随机返回一个类别需要进行随机设置。从数量一致的类别中返回编码数字更小的类别如果使用 argmax 函数。 #回归的情况输出7个弱评估器上的回归结果 r_reg np.array([-2.082, -0.601, -1.686, -1.001, -2.037, 0.1284, 0.8500]) b_result_reg r_reg.mean() b_result_reg #-0.9183714285714285在 sklearn 当中我们可以接触到两个 Bagging 集成算法一个是随机森林RandomForest另一个是极端随机树ExtraTrees他们都是以决策树为弱评估器的有监督算法可以被用于分类、回归、排序等各种任务。同时我们还可以使用 bagging 的思路对其他算法进行集成比如使用装袋法分类的类 BaggingClassifier 对支持向量机或逻辑回归进行集成。在课程当中我们将重点介绍随机森林的原理与用法。 Bagging算法集成类随机森林分类RandmForestClassifier随机森林回归RandomForestRegressor极端随机树分类ExtraTreesClassifier极端随机树回归ExtraTreesRegressor装袋法分类BaggingClassifier装袋法回归BaggingRegressor 三、RandomForestRegressor 的实现 随机森林是机器学习领域最常用的算法之一其算法构筑过程非常简单从提供的数据中随机抽样出不同的子集用于建立多棵不同的决策树并按照 Bagging 的规则对单棵决策树的结果进行集成回归则平均分类则少数服从多数。只要你充分掌握了决策树的各项属性和参数随机森林的大部分内容都相当容易理解。虽然原理上很简单但随机森林的学习能力异常强大、算法复杂度高、又具备一定的抗过拟合能力是从根本上来说比单棵决策树更优越的算法。即便在深入了解机器学习的各种技巧之后它依然是我们能够使用的最强大的算法之一。原理如此简单、还如此强大的算法在机器学习的世界中是不常见的。在机器学习竞赛当中随机森林往往是我们在中小型数据上会尝试的第一个算法。在 sklearn 中随机森林可以实现回归也可以实现分类。随机森林回归器由类 sklearn.ensemble.RandomForestRegressor 实现随机森林分类器则有类 sklearn.ensemble.RandomForestClassifier 实现。我们可以像调用逻辑回归、决策树等其他 sklearn 中的算法一样使用“实例化、fit、predict/score”三部曲来使用随机森林同时我们也可以使用 sklearn 中的交叉验证方法来实现随机森林。其中回归森林的默认评估指标为 R2分类森林的默认评估指标为准确率。随机森林回归器实现模板如下 class sklearn.ensemble.RandomForestRegressor(n_estimators100, *, criterionsquared_error, max_depthNone, min_samples_split2, min_samples_leaf1, min_weight_fraction_leaf0.0, max_featuresauto, max_leaf_nodesNone, min_impurity_decrease0.0, bootstrapTrue, oob_scoreFalse, n_jobsNone, random_stateNone, verbose0, warm_startFalse, ccp_alpha0.0, max_samplesNone)随机森林分类器实现模板如下 class sklearn.ensemble.RandomForestClassifier(n_estimators100, *, criteriongini, max_depthNone, min_samples_split2, min_samples_leaf1, min_weight_fraction_leaf0.0, max_featuresauto, max_leaf_nodesNone, min_impurity_decrease0.0, bootstrapTrue, oob_scoreFalse, n_jobsNone, random_stateNone, verbose0, warm_startFalse, class_weightNone, ccp_alpha0.0, max_samplesNone)不难发现随机森林回归器和分类器的参数高度一致因此我们只需要讲解其中一个类即可。任意集成算法在发源时都是回归类算法因此我们的重点将会放在回归类算法上。随机森林有大量的参数幸运的是随机森林中所有参数都有默认值因此即便我们不学习任何参数也可以调用随机森林算法。我们先来建一片森林看看吧先导入必要的库。 import matplotlib.pyplot as plt from sklearn.ensemble import RandomForestRegressor as RFR from sklearn.tree import DecisionTreeRegressor as DTR from sklearn.model_selection import cross_validate, KFold这里有几点需要注意1 这里我们不再使用 cross_val_score转而使用能够输出训练集分数的 cross_validate2 决策树本身就是非常容易过拟合的算法而集成模型的参数量/复杂度很难支持大规模网格搜索因此对于随机森林来说一定要关注算法的过拟合情况。首先我们先读入待操作的数据集并通过 head() 函数读取其中的前五行数据。 data pd.read_csv(rD:\Pythonwork\2021ML\PART 2 Ensembles\datasets\House Price\train_encode.csv,index_col0) data.head() #Id 住宅类型 住宅区域 街道接触面积(英尺) 住宅面积 街道路面状况 巷子路面状况 住宅形状(大概) 住宅现状 水电气 ... 泳池面积 泳池质量 篱笆质量 其他配置 其他配置的价值 销售月份 销售年份 销售类型 销售状态 SalePrice #0 0.0 5.0 3.0 36.0 327.0 1.0 0.0 3.0 3.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 1.0 2.0 8.0 4.0 208500 #1 1.0 0.0 3.0 51.0 498.0 1.0 0.0 3.0 3.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 4.0 1.0 8.0 4.0 181500 #2 2.0 5.0 3.0 39.0 702.0 1.0 0.0 0.0 3.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 8.0 2.0 8.0 4.0 223500 #3 3.0 6.0 3.0 31.0 489.0 1.0 0.0 0.0 3.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 1.0 0.0 8.0 0.0 140000 #4 4.0 5.0 3.0 55.0 925.0 1.0 0.0 0.0 3.0 0.0 ... 0.0 0.0 0.0 0.0 0.0 11.0 2.0 8.0 4.0 250000 #5 rows × 81 columns可以通过 shape 函数得到数据的行列数量信息。 data.shape #(1460, 81)随后对 X 和 y 进行设定并操作。 X data.iloc[:,:-1] y data.iloc[:,-1]y #注意y的类型是整数型并且y的均值很大可想而知整体的MSE一定会很大 #0 208500 #1 181500 #2 223500 #3 140000 #4 250000 # ... #1455 175000 #1456 210000 #1457 266500 #1458 142125 #1459 147500 #Name: SalePrice, Length: 1460, dtype: int64y.mean() #180921.19589041095X.shape #(1460, 80)X.columns.tolist() #[Id, # 住宅类型, # 住宅区域, # 街道接触面积(英尺), # 住宅面积, # 街道路面状况, # 巷子路面状况, # 住宅形状(大概), # 住宅现状, # 水电气, # 住宅配置, # 住宅视野, # 社区, # 住宅周边1, # 住宅周边2, # 适用家庭, # 住宅房型, # 装修质量, # 整体质量, # 建造年份, # 法律拆除年份, # 天花板类型, # 天花板材料, # 户外装饰1, # 户外装饰2, # 砖墙类型, # 砖墙面积, # 户外材料质量, # 户外装修质量, # 地下室类型, # 地下室深度, # 地下室质量, # 花园外墙, # 地下室现状1, # 地下室一层标准面积, # 地下室现状2, # 地下室二层标准面积, # 地下室建造现状, # 整体地下室面积, # 暖气类型, # 暖气质量, # 中央空调, # 电力系统, # 二楼面积, # 三楼面积, # 全低质量面积, # 户外活动空间面积, # 全卫地下室, # 半卫地下室, # 全卫及以上, # 半卫及以上, # 卧室及以上, # 厨房及以上, # 厨房质量, # 总房间量, # 住宅性能, # 壁炉数量, # 壁炉质量, # 车库类型, # 车库建造时间, # 车库装修现状, # 车位数量, # 车库面积, # 车库质量, # 车库现状, # 石板路, # 木板面积, # 开放式门廊面积, # 关闭式门廊面积, # 三季门廊面积, # 半开放式门廊面积, # 泳池面积, # 泳池质量, # 篱笆质量, # 其他配置, # 其他配置的价值, # 销售月份, # 销售年份, # 销售类型, # 销售状态]reg_f RFR() #实例化随机森林 reg_t DTR() #实例化决策树 cv KFold(n_splits5,shuffleTrue,random_state1412) #实例化交叉验证方式与 sklearn 中其他回归算法一样随机森林的默认评估指标是 R2但在机器学习竞赛、甚至实际使用时我们很少使用损失以外的指标对回归类算法进行评估。对回归类算法而言最常见的损失就是 MSE。 cross_validate参数n_jobs允许该程序调用的线程数verbose是否打印进度 result_t cross_validate(reg_t #要进行交叉验证的评估器,X,y #数据,cvcv #交叉验证模式,scoringneg_mean_squared_error #评估指标,return_train_scoreTrue #是否返回训练分数,verboseTrue #是否打印进程,n_jobs-1 #线程数) #[Parallel(n_jobs-1)]: Using backend LokyBackend with 16 concurrent workers. #[Parallel(n_jobs-1)]: Done 5 out of 5 | elapsed: 1.2s finished你知道如何查看自己计算机的线程数吗 result_f cross_validate(reg_f,X,y,cvcv,scoringneg_mean_squared_error,return_train_scoreTrue,verboseTrue,n_jobs-1) #[Parallel(n_jobs-1)]: Using backend LokyBackend with 16 concurrent workers. #[Parallel(n_jobs-1)]: Done 5 out of 5 | elapsed: 2.1s finishedresult_t #超级过拟合 #{fit_time: array([0.0220046 , 0.0220046 , 0.0220046 , 0.02100563, 0.02100468]), # score_time: array([0.00199962, 0.00199938, 0.00199938, 0.00199914, 0.00200129]), # test_score: array([-1.13534182e09, -3.41485921e09, -1.67088861e09, -1.67895115e09, # -1.59034213e09]), # train_score: array([-0., -0., -0., -0., -0.])}result_f #训练集和测试在交叉验证上的分数差异更小因此森林的过拟合程度没有决策树高 #{fit_time: array([1.31684232, 1.19581604, 1.27883458, 1.29583764, 1.21081877]), # score_time: array([0.01100278, 0.01100206, 0.01100206, 0.01100278, 0.0110023 ]), # test_score: array([-7.66379839e08, -2.01798504e09, -7.66327398e08, -4.90163166e08, # -9.88309425e08]), # train_score: array([-1.27164348e08, -1.09165780e08, -1.34679785e08, -1.39727005e08, # -1.19699899e08])}在集成学习中我们衡量回归类算法的指标一般是 RMSE根均方误差也就是 MSE 开根号后的结果。现实数据的标签往往数字巨大、数据量庞杂MSE 作为平方结果会放大现实数据上的误差例如随机森林结果中得到的7∗108 等结果。因此我们会对平房结果开根号让回归类算法的评估指标在数值上不要过于夸张。同样的方差作为平方结果在现实数据上也会太大因此如果可以我们使用标准差进行模型稳定性的衡量。 trainRMSE_f abs(result_f[train_score])**0.5 testRMSE_f abs(result_f[test_score])**0.5 trainRMSE_t abs(result_t[train_score])**0.5 testRMSE_t abs(result_t[test_score])**0.5 trainRMSE_f.mean() #11218.296933940535 testRMSE_f.mean() #30773.03828921106trainRMSE_f.std() #方差数额太大使用标准差 #487.0084587022606#默认值下随机森林的RMSE与标准差std xaxis range(1,6) plt.figure(figsize(8,6),dpi80) #RMSE plt.plot(xaxis,trainRMSE_f,colorgreen,label RandomForestTrain) plt.plot(xaxis,testRMSE_f,colorgreen,linestyle--,label RandomForestTest) plt.plot(xaxis,trainRMSE_t,colororange,label DecisionTreeTrain) plt.plot(xaxis,testRMSE_t,colororange,linestyle--,label DecisionTreeTest) plt.xticks([1,2,3,4,5]) plt.xlabel(CVcounts,fontsize16) plt.ylabel(RMSE,fontsize16) plt.legend() plt.show()其中横坐标表示交叉验证次数纵坐标表示 RMSE 数值。从图像来看森林与决策树都处于过拟合状态不过森林的过拟合程度较轻决策树的过拟合程度较强。两个算法在训练集上的结果都比较优秀决策树的可以完美学习训练集上的内容达到 RMSE0 的程度。而随机森林在训练集上的 RMSE 大约在 1w 上下徘徊测试集上的结果则是随机森林更占优。可见与填写的参数无关随机森林天生就是比决策树更不容易过拟合、泛化能力更强的。
http://www.dnsts.com.cn/news/141087.html

相关文章:

  • 在小网站上做点击广告凌哥seo
  • 网页制作网站开发的论文推广产品的方式有哪些
  • 网站建设需要备案wordpress动态标题
  • 微网站 淘宝客网站备案方法
  • 为新公司取名南京做网站优化价格
  • 中企动力做网站 知乎做国际网站每年要多少钱
  • 网站开发工具 比较wordpress 增加菜单
  • 数据库查询网站建设网站上传根目录
  • 温州网站网络公司吉林网站建设价格
  • 聊城微信推广网站wordpress建群站
  • 设计素材类网站开发策划书做装机u盘那个网站好
  • 手机网站优化国人在线做网站怎么样
  • soho的网站怎么做网站运营者
  • 做视频网站需要多少带宽江苏省 建设 注册中心网站
  • 网页设计视频教程-响应式手机网站制作怎样做网站快照
  • 网站建设原理与实践网站内容设计主要包括
  • 学校网站 网站建设长沙互联网公司在哪个区
  • 广告网站建设实训报告知名商城网站建设报价
  • php 企业网站开发教程linux 搭建网站服务器
  • 郑州高端定制网站wordpress 图片id
  • 做1元夺宝网站挣钱吗如何做网站创业
  • 网站做微信支付宝支付接口怎么仿网站链接
  • 如何做产品网站的推广网站域名怎么做变更
  • 应用商店下载入口iis 网站 优化
  • 网站建设和维护怎么学灯具的网站建设
  • 常州 网站设计高校网站建设费用
  • 正则表达式匹配网站苏华建设集团有限公司网站
  • 深圳常平网站建设制作公司网站主机选择
  • 单位做网站图片素材用视频做背景的网站
  • 网站做seo安全吗网站gzip压缩