梯度提升树

 梯度提升树是多个决策树集成模型,跟大多数机器学习类似,既可以用作分类,也可用于回归。梯度提升树的模型调用很简单,sklearn基本上可以满足。但是,在实际项目应用中,如何让模型更优,或者说如何让模型发挥作用。我认为,首先更应该看重的是数据本身,数据特征的构建以及特征工程的处理,好的数据质量可以让一个模型更能发挥自身性能。接下来,在数据质量的基础上,才应该关注的是模型本身的参数调优。参数调优主要有两种思想,一是根据历史经验,例如高斯核的选取,损失函数的选取等等;二是随机尝试,这也并不是完全随机,在给定网格区域中进行随机搜索,返回区域内的最优参数。具体的参数调优方式可以参考:吴裕雄 python 机器学习——集成学习梯度提升决策树GradientBoostingClassifier分类模型 - 吴裕雄 - 博客园

from sklearn.ensemble import GradientBoostingClassifier

from sklearn.model_selection import train_test_split
import numpy as np
import matplotlib.pyplot as plt
from sklearn import datasets,ensemble

data = pd.read_excel(r'E:\spyder\反窃电特征分析\tidu_test_data.xlsx')
data
# 排除数据集中的ID变量和因变量,剩余的数据用作自变量X;因为ID只是一个达到索引的作用
X = data.drop(['mp_id','label'], axis = 1)
y = data.label

x_train,x_test,y_train,y_test=train_test_split(X,y,test_size = 0.3,random_state=0)

gbrt=GradientBoostingClassifier()#模型不做参数调整

gbrt.fit(x_train,y_train)

print(gbrt.score(x_train,y_train))

print(gbrt.score(x_test,y_test))
a = gbrt.predict_proba(x_test)
a[:,0]
# 自变量的重要性排序
importance = pd.Series(gbrt.feature_importances_, index = X.columns)
#对模型做预剪枝

gbrt1=GradientBoostingClassifier(n_estimators=100,learning_rate=0.01)

gbrt1.fit(x_train,y_train)

print(gbrt1.score(x_train,y_train))

print(gbrt1.score(x_test,y_test))

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值