Boosting和GBT
来源:互联网 发布:千牛与淘宝什么区别 编辑:程序博客网 时间:2024/06/06 21:38
总结的Boosting和GBT相关内容
boosting的代码,g为不同的幂次的函数
# -*- coding: utf-8 -*-"""Created on Mon Jan 23 11:02:38 2017@author: Administrator"""import numpy as npdef XYSeparation(dataset): dataset = np.transpose(np.array(dataset)) Xset = dataset[:-1] Yset = dataset[-1] return Xset,Ysetdef BaseG(dataset,n): basefunction = np.array([[0.0]*(len(dataset[0])) for i in range(len(dataset)*n + 1)]) NormalizedCoef = np.array([0.0]*(len(dataset)*n + 1)) basefunction[0] = 1.0 NormalizedCoef[0] = np.linalg.norm(basefunction[0]) basefunction[0] = basefunction[0]/NormalizedCoef[0] for i in range(n): for ii in range(len(dataset)): NormalizedCoef[i*len(dataset)+ii+1] = np.linalg.norm((dataset[ii]**(i+1))) basefunction[i*len(dataset)+ii+1] = (dataset[ii]**(i+1))/NormalizedCoef[i*len(dataset)+ii+1] return basefunction,NormalizedCoefdef myBoosting(dataset,n,MaxDepth): myResult = {} Xset,yr = XYSeparation(dataset) basefunction,NormalizedCoef = BaseG(Xset,n) for depth in range(MaxDepth): i0 = 0 Val0 = 0 for i in range(len(basefunction)): Val = np.dot(yr,basefunction[i]) if abs(Val) > abs(Val0): Val0 = Val i0 = i if i0 in list(myResult.keys()): myResult[i0] += Val0 else: myResult[i0] = Val0 yr -= Val0*basefunction[i0] if np.linalg.norm(yr) == 0: break for i in list(myResult.keys()): myResult[i] /= NormalizedCoef[i] return myResult,np.linalg.norm(yr)def BoostingClassify(myResult,n,data): Val = 0 IndexD = list(myResult.keys()) basefunction = [1.0]*(len(data)*n + 1) for i in range(n): for ii in range(len(data)): basefunction[len(data)*i+ii+1] = data[ii]**(i+1) for i in range(len(IndexD)): if IndexD[i] == 0: Val += myResult[IndexD[i]] else: Val += myResult[IndexD[i]]*basefunction[IndexD[i]] return Val
GBRT的代码
# -*- coding: utf-8 -*-"""Created on Mon Jan 23 14:46:42 2017@author: Administrator"""import DTdef GBRTClassify(myTreeSet,data): GBRTResult = 0 for Tree in myTreeSet: GBRTResult += DT.classify(Tree,data) return GBRTResultdef myGBRT(dataset,TreeN,TreeMaxDepth): myTreeSet = [] for i in range(TreeN): inputTree = DT.MyCreateTree(dataset,TreeMaxDepth) myTreeSet += [inputTree] for data in dataset: data[-1] -= DT.classify(inputTree,data) return myTreeSet
0 0
- Boosting和GBT
- Boosting 和梯度Boosting
- Boosting和梯度Boosting
- Boosting 和 Gradient Boosting 理解
- Boosting和Bagging
- Boosting和Bagging
- boosting和adaboost区别
- Boosting和Bagging
- boosting
- Boosting
- Boosting
- boosting
- Boosting
- boosting
- Boosting
- boosting
- Boosting
- boosting和bagging算法学习
- 引用和指针
- struets标签<S:iterator>迭代器
- struts2注解总结----@Action和@Result
- HTTP长连接和短连接原理浅析
- 【LeetCode】 274. H-Index
- Boosting和GBT
- Note7燃损确因电池而起三星将加强安全检查工作
- Hibernate中的二级缓存
- SpringMVC(第二天 高级知识)
- MySQL Group Replication调研剖析
- urllib
- 初步学习多线程的总结
- 算法之路二:刘汝佳算法竞赛入门经典 4.11刽子手游戏 UVa 489
- SSL、TLS、HTTPS、SSH综述