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

网站定做公司关于珠海网站建设的优势

网站定做公司,关于珠海网站建设的优势,建网站模板,小吃加盟方案文章目录 1 什么是随机森林#xff1f;2 随机深林构造流程3 随机森林的优缺点3.1 优点3.2 缺点 4 随机深林算法实现 建模资料 ## 0 赛题思路 #xff08;赛题出来以后第一时间在CSDN分享#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 什么是随机森林#xff… 文章目录 1 什么是随机森林2 随机深林构造流程3 随机森林的优缺点3.1 优点3.2 缺点 4 随机深林算法实现 建模资料 ## 0 赛题思路 赛题出来以后第一时间在CSDN分享 https://blog.csdn.net/dc_sinor?typeblog 1 什么是随机森林 随机森林属于 集成学习 中的 BaggingBootstrap AGgregation 的简称 方法。如果用图来表示他们之间的关系如下 决策树 – Decision Tree 在解释随机森林前需要先提一下决策树。决策树是一种很简单的算法他的解释性强也符合人类的直观思维。这是一种基于if-then-else规则的有监督学习算法上面的图片可以直观的表达决策树的逻辑。 随机森林 – Random Forest | RF 随机森林是由很多决策树构成的不同决策树之间没有关联。 当我们进行分类任务时新的输入样本进入就让森林中的每一棵决策树分别进行判断和分类每个决策树会得到一个自己的分类结果决策树的分类结果中哪一个分类最多那么随机森林就会把这个结果当做最终的结果。 2 随机深林构造流程 一个样本容量为N的样本有放回的抽取N次每次抽取1个最终形成了N个样本。这选择好了的N个样本用来训练一个决策树作为决策树根节点处的样本。 当每个样本有M个属性时在决策树的每个节点需要分裂时随机从这M个属性中选取出m个属性满足条件m M。然后从这m个属性中采用某种策略比如说信息增益来选择1个属性作为该节点的分裂属性。 决策树形成过程中每个节点都要按照步骤2来分裂很容易理解如果下一次该节点选出来的那一个属性是刚刚其父节点分裂时用过的属性则该节点已经达到了叶子节点无须继续分裂了。一直到不能够再分裂为止。注意整个决策树形成过程中没有进行剪枝。 按照步骤1~3建立大量的决策树这样就构成了随机森林了。 3 随机森林的优缺点 3.1 优点 它可以出来很高维度特征很多的数据并且不用降维无需做特征选择它可以判断特征的重要程度可以判断出不同特征之间的相互影响不容易过拟合训练速度比较快容易做成并行方法实现起来比较简单对于不平衡的数据集来说它可以平衡误差。如果有很大一部分的特征遗失仍可以维持准确度。 3.2 缺点 随机森林已经被证明在某些噪音较大的分类或回归问题上会过拟合。对于有不同取值的属性的数据取值划分较多的属性会对随机森林产生更大的影响所以随机森林在这种数据上产出的属性权值是不可信的 4 随机深林算法实现 数据集https://archive.ics.uci.edu/ml/machine-learning-databases/undocumented/connectionist-bench/sonar/ import csv from random import seed from random import randrange from math import sqrtdef loadCSV(filename):#加载数据一行行的存入列表dataSet []with open(filename, r) as file:csvReader csv.reader(file)for line in csvReader:dataSet.append(line)return dataSet# 除了标签列其他列都转换为float类型 def column_to_float(dataSet):featLen len(dataSet[0]) - 1for data in dataSet:for column in range(featLen):data[column] float(data[column].strip())# 将数据集随机分成N块方便交叉验证其中一块是测试集其他四块是训练集 def spiltDataSet(dataSet, n_folds):fold_size int(len(dataSet) / n_folds)dataSet_copy list(dataSet)dataSet_spilt []for i in range(n_folds):fold []while len(fold) fold_size: # 这里不能用ifif只是在第一次判断时起作用while执行循环直到条件不成立index randrange(len(dataSet_copy))fold.append(dataSet_copy.pop(index)) # pop() 函数用于移除列表中的一个元素默认最后一个元素并且返回该元素的值。dataSet_spilt.append(fold)return dataSet_spilt# 构造数据子集 def get_subsample(dataSet, ratio):subdataSet []lenSubdata round(len(dataSet) * ratio)#返回浮点数while len(subdataSet) lenSubdata:index randrange(len(dataSet) - 1)subdataSet.append(dataSet[index])# print len(subdataSet)return subdataSet# 分割数据集 def data_spilt(dataSet, index, value):left []right []for row in dataSet:if row[index] value:left.append(row)else:right.append(row)return left, right# 计算分割代价 def spilt_loss(left, right, class_values):loss 0.0for class_value in class_values:left_size len(left)if left_size ! 0: # 防止除数为零prop [row[-1] for row in left].count(class_value) / float(left_size)loss (prop * (1.0 - prop))right_size len(right)if right_size ! 0:prop [row[-1] for row in right].count(class_value) / float(right_size)loss (prop * (1.0 - prop))return loss# 选取任意的n个特征在这n个特征中选取分割时的最优特征 def get_best_spilt(dataSet, n_features):features []class_values list(set(row[-1] for row in dataSet))b_index, b_value, b_loss, b_left, b_right 999, 999, 999, None, Nonewhile len(features) n_features:index randrange(len(dataSet[0]) - 1)if index not in features:features.append(index)# print features:,featuresfor index in features:#找到列的最适合做节点的索引损失最小for row in dataSet:left, right data_spilt(dataSet, index, row[index])#以它为节点的左右分支loss spilt_loss(left, right, class_values)if loss b_loss:#寻找最小分割代价b_index, b_value, b_loss, b_left, b_right index, row[index], loss, left, right# print b_loss# print type(b_index)return {index: b_index, value: b_value, left: b_left, right: b_right}# 决定输出标签 def decide_label(data):output [row[-1] for row in data]return max(set(output), keyoutput.count)# 子分割不断地构建叶节点的过程对对对 def sub_spilt(root, n_features, max_depth, min_size, depth):left root[left]# print leftright root[right]del (root[left])del (root[right])# print depthif not left or not right:root[left] root[right] decide_label(left right)# print testingreturnif depth max_depth:root[left] decide_label(left)root[right] decide_label(right)returnif len(left) min_size:root[left] decide_label(left)else:root[left] get_best_spilt(left, n_features)# print testing_leftsub_spilt(root[left], n_features, max_depth, min_size, depth 1)if len(right) min_size:root[right] decide_label(right)else:root[right] get_best_spilt(right, n_features)# print testing_rightsub_spilt(root[right], n_features, max_depth, min_size, depth 1)# 构造决策树 def build_tree(dataSet, n_features, max_depth, min_size):root get_best_spilt(dataSet, n_features)sub_spilt(root, n_features, max_depth, min_size, 1)return root # 预测测试集结果 def predict(tree, row):predictions []if row[tree[index]] tree[value]:if isinstance(tree[left], dict):return predict(tree[left], row)else:return tree[left]else:if isinstance(tree[right], dict):return predict(tree[right], row)else:return tree[right]# predictionsset(predictions) def bagging_predict(trees, row):predictions [predict(tree, row) for tree in trees]return max(set(predictions), keypredictions.count) # 创建随机森林 def random_forest(train, test, ratio, n_feature, max_depth, min_size, n_trees):trees []for i in range(n_trees):train get_subsample(train, ratio)#从切割的数据集中选取子集tree build_tree(train, n_features, max_depth, min_size)# print tree %d: %i,treetrees.append(tree)# predict_values [predict(trees,row) for row in test]predict_values [bagging_predict(trees, row) for row in test]return predict_values # 计算准确率 def accuracy(predict_values, actual):correct 0for i in range(len(actual)):if actual[i] predict_values[i]:correct 1return correct / float(len(actual))if __name__ __main__:seed(1) dataSet loadCSV(sonar-all-data.csv)column_to_float(dataSet)#dataSetn_folds 5max_depth 15min_size 1ratio 1.0# n_featuressqrt(len(dataSet)-1)n_features 15n_trees 10folds spiltDataSet(dataSet, n_folds)#先是切割数据集scores []for fold in folds:train_set folds[:] # 此处不能简单地用train_setfolds这样用属于引用,那么当train_set的值改变的时候folds的值也会改变所以要用复制的形式。L[:]能够复制序列D.copy() 能够复制字典list能够生成拷贝 list(L)train_set.remove(fold)#选好训练集# print len(folds)train_set sum(train_set, []) # 将多个fold列表组合成一个train_set列表# print len(train_set)test_set []for row in fold:row_copy list(row)row_copy[-1] Nonetest_set.append(row_copy)# for row in test_set:# print row[-1]actual [row[-1] for row in fold]predict_values random_forest(train_set, test_set, ratio, n_features, max_depth, min_size, n_trees)accur accuracy(predict_values, actual)scores.append(accur)print (Trees is %d % n_trees)print (scores:%s % scores)print (mean score:%s % (sum(scores) / float(len(scores))))建模资料 资料分享: 最强建模资料
http://www.zqtcl.cn/news/584368/

相关文章:

  • 上海专业网站建站公网站开发人员
  • 淄博网站建设公司有几家网络培训平台下载
  • 优秀网站展示仲恺做网站
  • 达州做淘宝网站制作3d动画的软件
  • 服务器主机搭建网站wordpress 隐私设置
  • 专业的网站制作公司wordpress 网页模板
  • 中国建设人才服务信息网是什么网站深圳居家办公最新通知
  • 中国建设银行网站招聘wordpress 文件下载插件
  • 福州企业建站程序莆田市的网站建设公司
  • 龙岩做网站推广龙华品牌网站建设
  • 如何用网站开发工具停止网页进程微信网站 教程
  • 高端网站网站设计网站建设怎么分析市场分析
  • 株洲网站设计外包运营wordpress seo插件教程
  • 做湘菜的网站wordpress外贸网站
  • 可以做书的网站做网站的软件叫什么
  • 深圳营销型网站公司电话网站优化北京如何联系?
  • 网站配资公司网站织梦怎么关闭网站
  • 建设企业网站哪家好网站页面布局设计思路
  • 长尾词在线挖掘数字营销服务商seo
  • cms傻瓜式建站系统帝国 cms 网站关键字
  • 东莞营销网站建设直播php 网站 项目
  • 网站访问量什么意思wordpress 静态商店
  • 汕头建站平台网站如何配置域名
  • 大芬网站建设石嘴山网站建设
  • 彩票网站开发解决方案wordpress网站如何与关联
  • 怎么做各大视频网站的会员代理芜湖的网站建设
  • 番禺做网站开发免费素材下载网站
  • 做网站服务公司王业美
  • 遵义网站建设推广城乡住房建设部官网查询
  • 电商设计网站素材免费建站网站seo