python gbdt,gbdt算法

  python gbdt,gbdt算法

  在本文中,我们将学习以下内容。

  Gd算法实现模型保存。负荷与预测模型前言

  GBDT是Boosting算法,用当前模型在损失函数负梯度方向的值作为残差的近似值,进一步拟合一棵CART回归树。GBDT将累积所有树的结果,但是这种累积不能通过分类来实现。因此,GBDT树是一棵CART回归树,而不是一棵分类树(调整后GBDT也可用于分类,但代表GBDT的树不是分类树)。本文用GBDT算法实现了一个例子。

  数据描述

  为新能源充电桩故障检测提供85500条训练数据(标签:0表示充电桩正常,1表示充电桩故障)。参与者需要预测36,644条测试数据。

  培训用数据

  文件:data_train.csv

  字段描述:

  测试数据

  文件:data_test.csv

  字段描述:

  GBDT算法

  导入所需的库:

  一个

  2

  三

  四

  进口熊猫作为pd

  froms kle arn . model _ selection importtrain _ test _ split

  froms kle arn . ensembleimportgradientboostingclassifier

  froms kle arn . externalsimportjoblib

  使用熊猫读取csv文件,GDBT算法直接从sklearn.ensemble调用,joblib函数保存模型。

  然后,读取文件,删除id和标签条目,将数据分为训练集和验证集。

  一个

  2

  三

  四

  五

  六

  七

  八

  data=PD.read _ CSV (r 。/data _ train。CSV’)

  x_columns=[]

  对于data.columns中的x:

  如果x不在[id ,标签]中:

  x_columns.append(x)

  x=数据[x列]

  y=数据[标签]

  x_train,x_test,y_train,y_test=train_test_split(x,y))))))).

  这里默认的分割比例,即75%的数据作为训练集,25%作为预测集。

  接下来,调用GBDT算法。

  一个

  2

  三

  四

  #模型训练,使用GBDT算法

  GBR=gradientboostingclassifier(n _ estimators=3000,最大深度=2,最小样本分离=2,学习速率

  GBR.fit(x_train,y_train.ravel))

  保存joblib.dump(GBR, train_model_result4.m )模型。

  如上所述,GDT算法的参数设置也可以通过网格搜索来寻找最佳的参数设置,此处不再赘述。模型train_model_result4.m保存在当前目录中。

  最后,打印训练和验证的准确性。

  一个

  2

  三

  四

  五

  六

  y_GBR=GBR.predict(x_train))

  y_GBR1=GBR.predict(x_test))

  ACC_train=GBR.score(x_train,y_train))))))))ACC _ train=GBR . score(x _ train,y _ train)))

  ACC_test=GBR。Score(x_test,y_test ) ) ) ) ) ) ) ) ACC_test=GBR。分数(x_test,y_test)))

  打印(ACC _ train))

  打印(ACC _ test))

  我们的模型在训练和预测方面达到了100%的准确率:

  和训练正确性的验证。

  的完整代码如下所示。

  一个

  2

  三

  四

  五

  六

  七

  八

  九

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  进口熊猫作为pd

  froms kle arn . model _ selection importtrain _ test _ split

  froms kle arn . ensembleimportgradientboostingclassifier

  froms kle arn . externalsimportjoblib

  data=PD.read _ CSV (r 。/data _ train。CSV’)

  x_columns=[]

  对于data.columns中的x:

  如果x不在[id ,标签]中:

  x_columns.append(x)

  x=数据[x列]

  y=数据[标签]

  x_train,x_test,y_train,y_test=train_test_split(x,y))))))).

  #模型训练,使用GBDT算法

  GBR=gradientboostingclassifier(n _ estimators=3000,最大深度=2,最小样本分离=2,学习速率

  GBR.fit(x_train,y_train.ravel))

  保存joblib.dump(GBR, train_model_result4.m )模型。

  y_GBR=GBR.predict(x_train))

  y_GBR1=GBR.predict(x_test))

  ACC_train=GBR.score(x_train,y_train))))))))ACC _ train=GBR . score(x _ train,y _ train)))

  ACC_test=GBR。Score(x_test,y_test ) ) ) ) ) ) ) ) ACC_test=GBR。分数(x_test,y_test)))

  打印(ACC _ train))

  打印(ACC _ test))

  模型预测法

  在训练和验证集上,我们的模型达到了100%的准确率,然后利用该模型对测试集的结果进行预测。

  代码如下。

  一个

  2

  三

  四

  五

  六

  七

  八

  九

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  进口编号为NP

  进口熊猫作为pd

  froms kle arn . externalsimportjoblib

  加载模型进行预测。

  GBR=job lib . load(train _ model _ result 4 . m)#加载模型

  test _ data=PD.read _ CSV (r ./data _ test .CSV’)

  testx_columns=[]

  对于测试数据列中的xx:

  如果xx不在[id ,标签]中:

  testx_columns.append(xx)

  测试x=测试数据[测试x列]

  test_y=GBR.predict(test_x))

  test _ y=NP。形状(test _ y,(36644,1)))

  #保存预测结果

  df=pd .数据帧(

  df[id]=测试数据[ id ]

  df[标签]=测试_y

  df.to_CSV ./data_predict .CSV,头=无,索引=无)。

  最终将结果保存到数据_预测。战斗支援车并提交比赛作业。这个结果准确率为100%。

  我们将通过具体项目实现梯度提升决策树算法的训练和预测过程。正文所需的资料都放在这里。密码:47v5,希望能帮上忙。

  资料来源:https://在thon.com/python-gbdt-prediction

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: