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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。