# -*- coding: utf-8 -*-
"""
Created on Fri Aug 19 15:25:35 2022
@author: 123
"""
import xgboost as xgb
import numpy
import pandas as pd
traindata = pd.read_excel('E:/NREL/solarforecast/2d/train_2inimage.xlsx')
validdata = pd.read_excel('E:/NREL/solarforecast/2d/valid_2inimage.xlsx')
testdata = pd.read_excel('E:/NREL/solarforecast/2d/test_2inimage.xlsx')
def load_data(data):
l=len(data)
data = data.values.tolist()
in_seq=[]
out_seq=[]
for i in range(l):
inseq = []
outseq = []
indata=data[i]
outseq.append(indata[-1])
for j in range(0,len(indata)-5):
inseq.append(indata[j])
in_seq.append(inseq)
out_seq.append(outseq)
in_seq=numpy.array(in_seq)
out_seq=numpy.array(out_seq)
return out_seq, in_seq
y_train,x_train=load_data(traindata)
y_valid,x_valid=load_data(validdata)
y_test,x_test=load_data(testdata)
dtrain=xgb.DMatrix(x_train,label=y_train)
dvalid=xgb.DMatrix(x_valid,label=y_valid)
xtest=xgb.DMatrix(x_test)
#GPU使用方法
# param['gpu_id'] = 0
# param['tree_method'] = 'gpu_hist'
params={'booster':'gbtree',
'nthread':4,
'seed':1,
'eta': 0.01,
'gamma':0.1,
'min_child_weight':1.1,
'max_depth':8,
'lambda':10,
'subsample':0.7,
'colsample_bytree':0.7,
'colsample_bylevel':0.7,
'tree_method':'exact'
}
evallist=[(dtrain,'train'),(dvalid,'eval')]
num_round=1000
model=xgb.train(params,dtrain,num_round,evallist,early_stopping_rounds=10)
y_pred = model.predict(xtest)
y_pred=numpy.array(y_pred)
loss=(y_pred-y_test.flatten())**2##注意数据格式问题
loss=loss.mean()
print(loss)
通过python自带的xgboost 进行预测
最新推荐文章于 2024-03-01 15:48:11 发布