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

手机电脑网站建设短视频一一影视网站源码

手机电脑网站建设短视频,一一影视网站源码,dede怎么做音乐网站,企业为什么要增资文章目录 集成学习随机森林随机森林回归填补缺失值实例#xff1a;随机森林在乳腺癌数据上的调参附录参数 集成学习 集成学习#xff08;ensemble learning#xff09;是时下非常流行的机器学习算法#xff0c;它本身不是一个单独的机器学习算法#xff0c;而是通过在数据… 文章目录 集成学习随机森林随机森林回归填补缺失值实例随机森林在乳腺癌数据上的调参附录参数 集成学习 集成学习ensemble learning是时下非常流行的机器学习算法它本身不是一个单独的机器学习算法而是通过在数据上构建多个模型集成所有模型的建模结果。 集成算法会考虑多个评估器的建模结果汇总之后得到一个综合的结果以此来获取比单个模型更好的回归或分类表现。 多个模型集成成为的模型叫做集成评估器ensemble estimator组成集成评估器的每个模型都叫做基评估器base estimator。通常来说有三类集成算法装袋法Bagging提升法Boosting和stacking。 Bagging的核心思想是构建多个相互独立的评估器然后对其预测进行平均或多数表决原则来决定集成评估器的结果。装袋法的代表模型就是随机森林。Boosting基评估器是相关的是按顺序一一构建的。其核心思想是结合弱评估器的力量一次次对难以评估的样本进行预测从而构成一个强评估器。提升法的代表模型有Adaboost和梯度提升树。 如何得到若干个个体学习器: 所有的个体学习器都是一个种类的或者说是同质的。比如都是决策树个体学习器或者都是神经网络个体学习器。所有的个体学习器不全是一个种类的或者说是异质的。比如我们有一个分类问题对训练集采用支持向量机个体学习器逻辑回归个体学习器和朴素贝叶斯个体学习器来学习再通过某种结合策略来确定最终的分类强学习器。 如何选择一种结合策略: 比较常用的集成策略有直接平均、加权平均等。最直接的集成学习策略就是直接平均即“投票”。我们先从讨论最常见的基于多数票机制的集成方法。简单来说多数票机制就是选择多数分类器所预测的分类标签也就是那些获得50%以上支持的预测结果。 可以看一下scikit-learn库中有关集成学习的类 类类的功能ensemble.AdaBoostClassifierAdaBoost分类ensemble.AdaBoostRegressorAdaboost回归ensemble.BaggingClassifier装袋分类器ensemble.BaggingRegressor装袋回归器ensemble.ExtraTreesClassifierExtra-trees分类超树极端随机树ensemble.ExtraTreesRegressorExtra-trees回归ensemble.GradientBoostingClassifier梯度提升分类ensemble.GradientBoostingRegressor梯度提升回归ensemble.IsolationForest隔离森林ensemble.RandomForestClassifier随机森林分类ensemble.RandomForestRegressor随机森林回归ensemble.RandomTreesEmbedding完全随机树的集成ensemble.VotingClassifier用于不合适估算器的软投票/多数规则分类器 随机森林 随机森林算法可以简单概况为以下四个步骤: 随机提取一个规模为n的bootstrap样本(从训练集中有放回的随机选择n个样本)基于提取的bootstrap样本生成决策树。在每个结点上完成以下任务 不放回的选取d个特征根据目标函数的要求例如信息增益最大化使用选定的最佳特征来分裂结点。 把步骤1和2重复k次聚合每棵树的预测结果并且以多数票机制确定标签的分类。 关于bootstrap样本不放回说明 在一个含有n个样本的原始训练集中我们进行随机采样每次采样一个样本并在抽取下一个样本之前将该样本放回原始训练集也就是说下次采样时这个样本依然可能被采集到这样采集n次最终得到一个和原始训练集一样大的n个样本组成的自助集。 我们用交叉验证再次比较单颗决策树和随机森林 # 交叉验证 from sklearn.model_selection import cross_val_score import matplotlib.pyplot as pltrfc RandomForestClassifier(n_estimators30) rfc_s cross_val_score(rfc, wine.data, wine.target, cv10)clf DecisionTreeClassifier() clf_s cross_val_score(clf, wine.data, wine.target, cv10)plt.plot(range(1,11), rfc_s, labelRandomForest) plt.plot(range(1,11), clf_s, labelDecisionTree) plt.legend() plt.show()随机森林始终大于等于单科决策树。 关于随机森林scikit-learn里面的RandomForestClassifier类参数详解 n_estimators 这是森林中树木的数量即基评估器的数量。 这个参数对随机森林模型的精确性影响是单调的n_estimators越 大模型的效果往往越好。但是相应的任何模型都有决策边界n_estimators达到一定的程度之后随机森林的精确性往往不在上升或开始波动并且n_estimators越大需要的计算量和内存也越大训练的时间也会越来越长。对于这个参数我们是渴望在训练难度和模型效果之间取得平衡。 superpa [] for i in range(200):rfc RandomForestClassifier(n_estimatorsi1,n_jobs-1)rfc_s cross_val_score(rfc,wine.data,wine.target,cv10).mean()superpa.append(rfc_s) print(max(superpa),superpa.index(max(superpa))) plt.figure(figsize[20,5]) plt.plot(range(1,201),superpa) plt.show()可以通过这个来找到最佳的n_estimators值 2. random_state 随机森林中其实也有random_state用法和分类树中相似只不过在分类树中一个random_state只控制生成一棵树而随机森林中的random_state控制的是生成森林的模式而非让一个森林中只有一棵树。 当random_state固定时随机森林中生成是一组固定的树但每棵树依然是不一致的这是 用”随机挑选特征进行分枝“的方法得到的随机性。并且我们可以证明当这种随机性越大的时候袋装法的效果一 般会越来越好。用袋装法集成时基分类器应当是相互独立的是不相同的。 其他 随机森林回归填补缺失值 基本思想 数据集特征数据标签因为是有监督的学习我们的标签数据肯定是完整的假设特征数据中特征A有缺失值需要填充可以这样做 特征数据 特征数据除去特征A 标签标签特征A现在数据集的特点是特征数据完整标签数据有缺失值拿标签数据不缺失的数据进行训练训练完成后拿模型对缺失的数据进行预测填充这就完成了我们数据集的填充。 上面的情况只是一列缺失也就是一个特征缺失对于多个特征都有缺失的情况该怎么处理 遍历所有的特征从缺失最少的开始进行填补因为填补缺失最少的特征所需要的准确信息最少。填补一个特征时先将其他特征的缺失值用0代替每完成一次回归预测就将预测值放到原本的特征矩阵中再继续填补下一个特征。每一次填补完毕有缺失值的特征会减少一个所以每次循环后需要用0来填补的特征就越来越少。当进行到最后一个特征时这个特征应该是所有特征中缺失值最多的已经没有任何的其他特征需要用0来进行填补了而我们已经使用回归为其他特征填补了大量有效信息可以用来填补缺失最多的特征。遍历所有的特征后数据就完整不再有缺失值了。 X_missing_reg X_missing.copy() # 对原始数据进行copy sortindex np.argsort(X_missing_reg.isnull().sum(axis0)).values # 对缺失特征的数目进行排序并返回索引下标顺序 for i in sortindex:#构建我们的新特征矩阵和新标签df X_missing_regfillc df.iloc[:,i] # 要填充的特征》标签df pd.concat([df.iloc[:,df.columns ! i],pd.DataFrame(y_full)],axis1) # 除去要需要填充的特征的特征数据标签》特征数据#在新特征矩阵中对含有缺失值的列进行0的填补df_0 SimpleImputer(missing_valuesnp.nan,strategyconstant,fill_value0).fit_transform(df)#找出我们的训练集和测试集Ytrain fillc[fillc.notnull()] # 新标签里面没有缺失的值Ytest fillc[fillc.isnull()] # 新标签里面缺失的值后面进行预测填充Xtrain df_0[Ytrain.index,:] # 训练集Xtest df_0[Ytest.index,:] # 测试集#用随机森林回归来填补缺失值rfc RandomForestRegressor(n_estimators100) rfc rfc.fit(Xtrain, Ytrain)Ypredict rfc.predict(Xtest) #将填补好的特征返回到我们的原始的特征矩阵中X_missing_reg.loc[X_missing_reg.iloc[:,i].isnull(),i] Ypredict 实例随机森林在乳腺癌数据上的调参 导入所需要的库 from sklearn.datasets import load_breast_cancer # 乳腺癌的数据集 from sklearn.ensemble import RandomForestClassifier # 随机森林分类树 from sklearn.model_selection import GridSearchCV # 网格搜索 调参 from sklearn.model_selection import cross_val_score # 交叉验证 import matplotlib.pyplot as plt # 画图 import pandas as pd import numpy as np数据处理 data load_breast_cancer() # jupyter 查看数据信息 data data.data.shape data.target简单建模 rfc RandomForestClassifier(n_estimators100,random_state90) score_pre cross_val_score(rfc,data.data,data.target,cv10).mean() score_pre调参优化 在机器学习中我们用来衡量模型在未知数据上的准确率的指标叫做泛化误差Genelization error 最佳模型是泛化误差最低的点左边是欠拟合模型不够复杂右边是过拟合模型太过复杂。 对树模型来说树越茂盛深度越深枝叶越多模型就越复杂。 对于随机森林最终的几个参数 参数对模型在未知数据上的评估性能的影响影响程度n_estimators提升至平稳n_estimators↑不影响单个模型的复杂度⭐⭐⭐⭐max_depth有增有减默认最大深度即最高复杂度向复杂度降低的方向调参max_depth↓模型更简单且向图像的左边移动⭐⭐⭐min_samples _leaf有增有减默认最小限制1即最高复杂度向复杂度降低的方向调参min_samples_leaf↑模型更简单且向图像的左边移动⭐⭐min_samples _split有增有减默认最小限制2即最高复杂度向复杂度降低的方向调参min_samples_split↑模型更简单且向图像的左边移动⭐⭐max_features有增有减默认auto是特征总数的开平方位于中间复杂度既可以向复杂度升高的方向也可以向复杂度降低的方向调参max_features↓模型更简单图像左移max_features↑模型更复杂图像右移max_features是唯一的既能够让模型更简单也能够让模型更复杂的参数所以在调整这个参数的时候需要考虑我们调参的方向⭐criterion有增有减一般使用gini看具体情况 1n_estimators 初步大范围的调 scorel [] for i in range(0,200,10):rfc RandomForestClassifier(n_estimatorsi1,n_jobs-1,random_state90)score cross_val_score(rfc,data.data,data.target,cv10).mean()scorel.append(score) print(max(scorel),(scorel.index(max(scorel))*10)1) plt.figure(figsize[20,5]) plt.plot(range(1,201,10),scorel) plt.show()大范围确定n_estimators 在71附近缩小范围再次调整 scorel [] for i in range(65,75):rfc RandomForestClassifier(n_estimatorsi,n_jobs-1,random_state90)score cross_val_score(rfc,data.data,data.target,cv10).mean()scorel.append(score) print(max(scorel),([*range(65,75)][scorel.index(max(scorel))])) plt.figure(figsize[20,5]) plt.plot(range(65,75),scorel)可以确定n_estimators73相比之前的准确率是有提升的。 2max_depth 采用网格搜索 # 调整max_depth param_grid {max_depth:np.arange(1, 20, 1)} # 一般根据数据的大小来进行一个试探乳腺癌数据很小所以可以采用1~10或者1~20这样的试探 # 但对于像digit recognition那样的大型数据来说我们应该尝试30~50层深度或许还不足够 # 更应该画出学习曲线来观察深度对模型的影响 rfc RandomForestClassifier(n_estimators73,random_state90) GS GridSearchCV(rfc,param_grid,cv10) GS.fit(data.data,data.target)可以发现准确率没有变化可以不设置这个参数。 3其他参数也可以采用网格搜索来找出 有一些参数是没有参照的很难说清一个范围这种情况下我们使用学习曲线看趋势 从曲线跑出的结果中选取一个更小的区间再跑曲线 param_grid {n_estimators:np.arange(0, 200, 10)} param_grid {max_depth:np.arange(1, 20, 1)}param_grid {max_leaf_nodes:np.arange(25,50,1)}对于大型数据集可以尝试从1000来构建先输入1000每100个叶子一个区间再逐渐缩小范围 有一些参数是可以找到一个范围的或者说我们知道他们的取值和随着他们的取值模型的整体准确率会如何变化这 样的参数我们就可以直接跑网格搜索 param_grid {criterion:[gini, entropy]} param_grid {min_samples_split:np.arange(2, 220, 1)} param_grid {min_samples_leaf:np.arange(1, 110, 1)}param_grid {max_features:np.arange(5,30,1)} 附录参数
http://www.w-s-a.com/news/416958/

相关文章:

  • 工作网站建设中布线费用账务处理特色的重庆网站推广
  • dede 网站地图模板htm写作网站水平哪个最好
  • 服务器上的网站erp教学零基础入门
  • 网站建设58设计资料网站
  • 如何把动态图发网站做头像网页设计实训报告小结
  • 做简历用的网站wordpress版权说明
  • 网站关键词有哪些网站新闻前置审批
  • 怎么自己注册网站义乌做公司网站
  • 做哪种网站赚钱苏州住房城乡建设部网站
  • 镇江做网站学编程学哪一种比较好
  • 华美天一建筑公司网站赚钱做任务的网站有哪些
  • asp网站打开速度慢家乡网页设计教程
  • 网站 设计 深圳书店网站的建设
  • 北京网络营销推广培训哪家好南宁软件优化网站建设
  • flash网站引导页仓库管理系统源码
  • 济南网站制作公司排名营销型网站管理系统
  • 公司网站设计要多少钱用什么做网站的访问量统计
  • 湖北省住房和城乡建设厅门户网站沈阳网络平台推广公司
  • 河南平台网站建设公司网站如何提高转化率
  • 网站及推广wordpress 分享主题
  • 房产网站有哪些如何自己建一个微网站
  • 青岛市黄岛区城市建设局网站手机域名访问网站怎么进入
  • 网站模板 双语河南省建设人才信息网官网
  • 网站建设备案优化之看邹城网站开发
  • 网站方案书图书馆网站建设公司
  • 公司取名网免费版在线网站优化公司
  • dw怎么做秋季运动会网站九江集团网站建设
  • 响应式网站建设服务商wordpress 非小工具形式 微博秀
  • 网站安全检测漏洞扫描风险等级分布建设一个网站步骤
  • 摄影网站的意义开发企业小程序公司