SCIKIT-LEARN与GBDT使用案例
2015-07-26 23:19
351 查看
安装
SCIKIT-LEARN是一个基于python/numpy/scipy的机器学习库windows下最简单的安装方式是使用winpython进行安装
WinPython地址
GBDT使用
这段代码展示了一个简单的GBDT调用过程数据维数24,训练数据1990,测试数据221
import numpy as np from sklearn.ensemble import GradientBoostingRegressor gbdt=GradientBoostingRegressor( loss='ls' , learning_rate=0.1 , n_estimators=100 , subsample=1 , min_samples_split=2 , min_samples_leaf=1 , max_depth=3 , init=None , random_state=None , max_features=None , alpha=0.9 , verbose=0 , max_leaf_nodes=None , warm_start=False ) train_feat=np.genfromtxt("train_feat.txt",dtype=np.float32) train_id=np.genfromtxt("train_id.txt",dtype=np.float32) test_feat=np.genfromtxt("test_feat.txt",dtype=np.float32) test_id=np.genfromtxt("test_id.txt",dtype=np.float32) print train_feat.shape,rain_id.shape,est_feat.shape,est_id.shape gbdt.fit(train_feat,train_id) pred=gbdt.predict(test_feat) total_err=0 for i in range(pred.shape[0]): print pred[i],test_id[i] err=(pred[i]-test_id[i])/test_id[i] total_err+=err*err print total_err/pred.shape[0]
train_id.txt示例
320 361 364 336 358
train_feat.txt示例
0.00598802 0.569231 0.647059 0.95122 -0.225434 0.837989 0.357258 -0.0030581 -0.383475 0.161677 0.743195 0.682353 0.960976 -0.0867052 0.780527 0.282945 0.149847 -0.0529661 0.113772 0.744379 0.541176 0.990244 -0.00578035 0.721468 0.43411 -0.318043 0.288136 0.0538922 0.608284 0.764706 0.95122 -0.248555 0.821229 0.848604 -0.0030581 0.239407 0.173653 0.866272 0.682353 0.95122 0.017341 0.704709 -0.0210016 -0.195719 0.150424
测试结果与真值
333.986169852 334.0 360.84170859 360.0 342.658750421 343.0 329.591753015 328.0 374.247432336 374.0
更多详细功能介绍请看这里
调参与结果对比
误差度量采用预测值与真值的误差占真值的百分比的均值方法 | 参数 | 平均误差百分比 |
---|---|---|
svm | 最佳参数 | 1.60452% |
gdbt | n_estimators=100,max_depth=3 | 2.29247% |
gdbt | n_estimators=1000,max_depth=3 | 1.23875% |
gdbt | n_estimators=1000,max_depth=5 | 1.14202% |
gdbt | n_estimators=1000,max_depth=7 | 1.02505% |
同时gbdt相对svm效果更优
相关文章推荐
- Meta http-equiv属性详解(转)
- POJ 1088 滑雪(记忆化搜索+dfs)
- Hibernate 集中常用的查询方式
- RecyclerView的拖动和滑动 第一部分 :基本的ItemTouchHelper示例
- 过程(栈帧结构是干货)
- [Windows] 双缓冲代码
- 过程(栈帧结构是干货)
- [JavaWeb基础] 009.Struts2 上传文件
- 使用GitHub建立个人网站
- ping通本机主机名问题
- iOS应用之间跳转
- UIWebView 使用
- LeetCode 203 Remove Linked List Elements
- HDU 4193 Non-negative Partial Sums(想法题,单调队列)
- Binary Tree Inorder Traversal(转)
- shiro控制登陆成功后跳回之前的页面
- 数据表操作(一)
- UIWebView与JavaScript的交互
- 博客有感
- static_cast, dynamic_cast, reinterpret_cast, const_cast区别