emission_detect_ai/使用lightgbm对所有特征建模.ipynb

893 KiB
Raw Blame History

In [7]:
import pandas as pd
import lightgbm as lgb
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_absolute_error, mean_squared_error, mean_absolute_percentage_error, r2_score
import datetime as dt
import matplotlib.pyplot as plt
#新增加的两行
from pylab import mpl
# 设置显示中文字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]

mpl.rcParams["axes.unicode_minus"] = False
In [8]:
data = pd.read_csv('data/factory_train_data.csv')
data = data[data['燃料消耗量(吨)'] > 0].copy()
In [9]:
data['week_of_years'] = data.day_of_year // 7
data['day_of_week'] = data.days.apply(lambda x: dt.datetime.strptime(x, '%Y-%m-%d').weekday() + 1)
In [10]:
data['企业名称'].value_counts()
Out[10]:
浙江秀舟热电有限公司          1087
武乡西山发电有限责任公司         112
国电电力邯郸东郊热电有限责任公司      59
建投遵化热电有限责任公司          25
Name: 企业名称, dtype: int64
In [11]:
data.drop(columns=['days', 'day_of_year', '企业名称'], inplace=True)
In [12]:
object_cols = ['生产设备类型', '燃料类型', '汽轮机类型', '冷却方式', '压力参数', 'day_of_week']
num_cols = [x for x in data.columns if x not in object_cols]
In [13]:
for col in num_cols:
    if col != 'num_workers':
        data[col] = np.log1p(data[col])
In [14]:
data.corr()
Out[14]:
r_O2 temperature 发电量(万千瓦时) 供热量(吉焦) c_smoke c_NO2 c_SO2 flow num_workers 燃料消耗量(吨) 低位发热量GJ/t 额定蒸发量 总容量 week_of_years day_of_week
r_O2 1.000000 -0.316186 -0.319038 0.068471 -0.417281 -0.560829 -0.272416 -0.427438 0.157706 -0.541179 0.317284 -0.391598 -0.391399 0.056489 0.015395
temperature -0.316186 1.000000 -0.003006 0.117038 0.133293 0.288824 0.046211 0.194207 0.076302 0.044031 0.098987 -0.105596 -0.105362 0.141038 0.030817
发电量(万千瓦时) -0.319038 -0.003006 1.000000 -0.251193 0.704215 0.682388 0.532251 0.673315 -0.422639 0.864512 -0.681444 0.880452 0.882626 -0.289343 0.008199
供热量(吉焦) 0.068471 0.117038 -0.251193 1.000000 -0.174803 -0.164987 -0.174050 -0.180025 0.498720 -0.208610 0.707886 -0.338254 -0.337874 -0.056148 0.014397
c_smoke -0.417281 0.133293 0.704215 -0.174803 1.000000 0.909606 0.488700 0.963711 -0.342271 0.791680 -0.581977 0.794106 0.793466 -0.313741 0.014961
c_NO2 -0.560829 0.288824 0.682388 -0.164987 0.909606 1.000000 0.468403 0.925927 -0.344105 0.769341 -0.549735 0.754143 0.753368 -0.246944 0.011258
c_SO2 -0.272416 0.046211 0.532251 -0.174050 0.488700 0.468403 1.000000 0.473151 -0.276540 0.590084 -0.462104 0.594941 0.596513 -0.188307 0.001653
flow -0.427438 0.194207 0.673315 -0.180025 0.963711 0.925927 0.473151 1.000000 -0.320692 0.762291 -0.581641 0.767429 0.769066 -0.253597 0.017986
num_workers 0.157706 0.076302 -0.422639 0.498720 -0.342271 -0.344105 -0.276540 -0.320692 1.000000 -0.482223 0.479269 -0.539560 -0.529737 0.119964 0.018464
燃料消耗量(吨) -0.541179 0.044031 0.864512 -0.208610 0.791680 0.769341 0.590084 0.762291 -0.482223 1.000000 -0.682627 0.945291 0.941232 -0.430310 -0.003100
低位发热量GJ/t 0.317284 0.098987 -0.681444 0.707886 -0.581977 -0.549735 -0.462104 -0.581641 0.479269 -0.682627 1.000000 -0.770206 -0.777893 0.247530 -0.000316
额定蒸发量 -0.391598 -0.105596 0.880452 -0.338254 0.794106 0.754143 0.594941 0.767429 -0.539560 0.945291 -0.770206 1.000000 0.999263 -0.442480 0.000319
总容量 -0.391399 -0.105362 0.882626 -0.337874 0.793466 0.753368 0.596513 0.769066 -0.529737 0.941232 -0.777893 0.999263 1.000000 -0.445768 0.000484
week_of_years 0.056489 0.141038 -0.289343 -0.056148 -0.313741 -0.246944 -0.188307 -0.253597 0.119964 -0.430310 0.247530 -0.442480 -0.445768 1.000000 0.007419
day_of_week 0.015395 0.030817 0.008199 0.014397 0.014961 0.011258 0.001653 0.017986 0.018464 -0.003100 -0.000316 0.000319 0.000484 0.007419 1.000000
In [9]:
len(object_cols)
Out[9]:
6
In [10]:
data['燃料类型'].value_counts()
Out[10]:
中高挥发分烟煤    1087
褐煤          112
低挥发分烟煤       59
一般烟煤         25
Name: 燃料类型, dtype: int64
In [11]:
fig = plt.figure(figsize=(20, 20))
for index, col in enumerate(object_cols+num_cols):
    plt.subplot(4,5,index+1)
    plt.title(col)
    # if col in object_cols:
    #     plt.bar(data['燃料类型'].value_counts().index, data['燃料类型'].value_counts().values)
    # else:
    plt.hist(data[col])
# plt.savefig('figure/特征分析.png')
No description has been provided for this image
In [12]:
use_data = pd.get_dummies(data.drop(columns=['r_O2', 'temperature']), columns=object_cols)
In [13]:
feature_cols = [x for x in use_data.columns if x != '燃料消耗量(吨)']
# feature_cols = [x for x in use_data.columns if x not in ['发电量(万千瓦时)', '供热量(吉焦)', '燃料消耗量(吨)']]
np.random.shuffle(feature_cols)
feature_cols
Out[13]:
['day_of_week_5',
 '燃料类型_一般烟煤',
 '燃料类型_褐煤',
 '燃料类型_低挥发分烟煤',
 'day_of_week_7',
 'day_of_week_1',
 '压力参数_高压',
 'day_of_week_4',
 'flow',
 'num_workers',
 '额定蒸发量',
 '低位发热量GJ/t',
 '冷却方式_水冷-闭式循环',
 '汽轮机类型_抽凝式',
 '汽轮机类型_背压式',
 '燃料类型_中高挥发分烟煤',
 'day_of_week_3',
 'c_NO2',
 '压力参数_超超临界',
 '压力参数_超临界',
 'day_of_week_6',
 '压力参数_亚临界',
 '生产设备类型_高温高压循环流化床锅炉',
 '冷却方式_空冷-直接空冷',
 'c_smoke',
 '生产设备类型_煤粉锅炉',
 'day_of_week_2',
 '供热量(吉焦)',
 '发电量(万千瓦时)',
 '总容量',
 'week_of_years',
 'c_SO2']
In [14]:
train_data, valid = train_test_split(use_data, test_size=0.2, shuffle=True, random_state=666)
valid_data, test_data = train_test_split(valid, test_size=0.5, shuffle=True, random_state=666)
In [15]:
X_train, Y_train = train_data[feature_cols], train_data['燃料消耗量(吨)']
X_valid, Y_valid = valid_data[feature_cols], valid_data['燃料消耗量(吨)']
X_test, Y_test = test_data[feature_cols], test_data['燃料消耗量(吨)']
In [16]:
lgb_train = lgb.Dataset(X_train, Y_train)
lgb_eval = lgb.Dataset(X_valid, Y_valid)
lgb_test = lgb.Dataset(X_test, Y_test)
In [17]:
params = {
    'task': 'train',
    'boosting_type': 'gbdt',  # 设置提升类型
    'objective': 'regression_l2',  # 目标函数
    'metric': {'rmse'},  # 评估函数
    'max_depth': 10,
    'num_leaves': 31,  # 叶子节点数
    'learning_rate': 0.005,  # 学习速率
    'feature_fraction': 0.9,  # 建树的特征选择比例
    'bagging_fraction': 0.8,  # 建树的样本采样比例
    'bagging_freq': 5,  # k 意味着每 k 次迭代执行bagging
    'verbose': -1  # <0 显示致命的, =0 显示错误 (警告), >0 显示信息
}
In [18]:
gbm = lgb.train(params, lgb_train, num_boost_round=2000, valid_sets=lgb_eval, early_stopping_rounds=100)
[1]	valid_0's rmse: 0.791089
Training until validation scores don't improve for 100 rounds
[2]	valid_0's rmse: 0.787271
[3]	valid_0's rmse: 0.78351
[4]	valid_0's rmse: 0.779729
[5]	valid_0's rmse: 0.775969
[6]	valid_0's rmse: 0.772221
[7]	valid_0's rmse: 0.768495
[8]	valid_0's rmse: 0.764799
[9]	valid_0's rmse: 0.761119
[10]	valid_0's rmse: 0.757458
[11]	valid_0's rmse: 0.75382
[12]	valid_0's rmse: 0.750205
[13]	valid_0's rmse: 0.746608
[14]	valid_0's rmse: 0.743049
[15]	valid_0's rmse: 0.73949
[16]	valid_0's rmse: 0.735968
[17]	valid_0's rmse: 0.732466
[18]	valid_0's rmse: 0.728982
[19]	valid_0's rmse: 0.725517
[20]	valid_0's rmse: 0.72207
[21]	valid_0's rmse: 0.718638
[22]	valid_0's rmse: 0.715222
[23]	valid_0's rmse: 0.711775
[24]	valid_0's rmse: 0.708395
[25]	valid_0's rmse: 0.705036
[26]	valid_0's rmse: 0.701685
[27]	valid_0's rmse: 0.698352
[28]	valid_0's rmse: 0.695038
[29]	valid_0's rmse: 0.691743
[30]	valid_0's rmse: 0.688472
[31]	valid_0's rmse: 0.685206
[32]	valid_0's rmse: 0.681959
[33]	valid_0's rmse: 0.678739
[34]	valid_0's rmse: 0.675526
[35]	valid_0's rmse: 0.672341
[36]	valid_0's rmse: 0.669171
[37]	valid_0's rmse: 0.666044
[38]	valid_0's rmse: 0.662925
[39]	valid_0's rmse: 0.659891
[40]	valid_0's rmse: 0.656781
[41]	valid_0's rmse: 0.653696
[42]	valid_0's rmse: 0.650626
[43]	valid_0's rmse: 0.647574
[44]	valid_0's rmse: 0.644538
[45]	valid_0's rmse: 0.641518
[46]	valid_0's rmse: 0.638482
[47]	valid_0's rmse: 0.635482
[48]	valid_0's rmse: 0.632471
[49]	valid_0's rmse: 0.629502
[50]	valid_0's rmse: 0.62655
[51]	valid_0's rmse: 0.623609
[52]	valid_0's rmse: 0.62071
[53]	valid_0's rmse: 0.617806
[54]	valid_0's rmse: 0.614918
[55]	valid_0's rmse: 0.61204
[56]	valid_0's rmse: 0.609199
[57]	valid_0's rmse: 0.606373
[58]	valid_0's rmse: 0.603566
[59]	valid_0's rmse: 0.60077
[60]	valid_0's rmse: 0.59793
[61]	valid_0's rmse: 0.595155
[62]	valid_0's rmse: 0.592395
[63]	valid_0's rmse: 0.589647
[64]	valid_0's rmse: 0.586914
[65]	valid_0's rmse: 0.584196
[66]	valid_0's rmse: 0.581501
[67]	valid_0's rmse: 0.578822
[68]	valid_0's rmse: 0.576158
[69]	valid_0's rmse: 0.573656
[70]	valid_0's rmse: 0.57102
[71]	valid_0's rmse: 0.5684
[72]	valid_0's rmse: 0.565795
[73]	valid_0's rmse: 0.5632
[74]	valid_0's rmse: 0.560578
[75]	valid_0's rmse: 0.558009
[76]	valid_0's rmse: 0.555465
[77]	valid_0's rmse: 0.552937
[78]	valid_0's rmse: 0.550422
[79]	valid_0's rmse: 0.547964
[80]	valid_0's rmse: 0.545476
[81]	valid_0's rmse: 0.542974
[82]	valid_0's rmse: 0.540486
[83]	valid_0's rmse: 0.538012
[84]	valid_0's rmse: 0.535616
[85]	valid_0's rmse: 0.533169
[86]	valid_0's rmse: 0.530754
[87]	valid_0's rmse: 0.528353
[88]	valid_0's rmse: 0.525965
[89]	valid_0's rmse: 0.523596
[90]	valid_0's rmse: 0.521235
[91]	valid_0's rmse: 0.518884
[92]	valid_0's rmse: 0.516547
[93]	valid_0's rmse: 0.514223
[94]	valid_0's rmse: 0.511911
[95]	valid_0's rmse: 0.5096
[96]	valid_0's rmse: 0.507304
[97]	valid_0's rmse: 0.50502
[98]	valid_0's rmse: 0.50275
[99]	valid_0's rmse: 0.500492
[100]	valid_0's rmse: 0.498211
[101]	valid_0's rmse: 0.495969
[102]	valid_0's rmse: 0.49374
[103]	valid_0's rmse: 0.491524
[104]	valid_0's rmse: 0.48932
[105]	valid_0's rmse: 0.487183
[106]	valid_0's rmse: 0.485015
[107]	valid_0's rmse: 0.482859
[108]	valid_0's rmse: 0.480717
[109]	valid_0's rmse: 0.478586
[110]	valid_0's rmse: 0.476467
[111]	valid_0's rmse: 0.474371
[112]	valid_0's rmse: 0.472291
[113]	valid_0's rmse: 0.470241
[114]	valid_0's rmse: 0.468176
[115]	valid_0's rmse: 0.466134
[116]	valid_0's rmse: 0.4641
[117]	valid_0's rmse: 0.462079
[118]	valid_0's rmse: 0.460069
[119]	valid_0's rmse: 0.45807
[120]	valid_0's rmse: 0.456083
[121]	valid_0's rmse: 0.454099
[122]	valid_0's rmse: 0.452094
[123]	valid_0's rmse: 0.450135
[124]	valid_0's rmse: 0.448161
[125]	valid_0's rmse: 0.446191
[126]	valid_0's rmse: 0.444307
[127]	valid_0's rmse: 0.442417
[128]	valid_0's rmse: 0.440538
[129]	valid_0's rmse: 0.438617
[130]	valid_0's rmse: 0.436759
[131]	valid_0's rmse: 0.43492
[132]	valid_0's rmse: 0.433091
[133]	valid_0's rmse: 0.431275
[134]	valid_0's rmse: 0.429467
[135]	valid_0's rmse: 0.427674
[136]	valid_0's rmse: 0.425877
[137]	valid_0's rmse: 0.424089
[138]	valid_0's rmse: 0.422309
[139]	valid_0's rmse: 0.420541
[140]	valid_0's rmse: 0.418809
[141]	valid_0's rmse: 0.417017
[142]	valid_0's rmse: 0.415233
[143]	valid_0's rmse: 0.413463
[144]	valid_0's rmse: 0.411721
[145]	valid_0's rmse: 0.409971
[146]	valid_0's rmse: 0.408258
[147]	valid_0's rmse: 0.406538
[148]	valid_0's rmse: 0.404828
[149]	valid_0's rmse: 0.403242
[150]	valid_0's rmse: 0.401559
[151]	valid_0's rmse: 0.399908
[152]	valid_0's rmse: 0.398267
[153]	valid_0's rmse: 0.396668
[154]	valid_0's rmse: 0.395045
[155]	valid_0's rmse: 0.393426
[156]	valid_0's rmse: 0.39179
[157]	valid_0's rmse: 0.39017
[158]	valid_0's rmse: 0.388559
[159]	valid_0's rmse: 0.386958
[160]	valid_0's rmse: 0.385384
[161]	valid_0's rmse: 0.383801
[162]	valid_0's rmse: 0.382229
[163]	valid_0's rmse: 0.380666
[164]	valid_0's rmse: 0.379114
[165]	valid_0's rmse: 0.37757
[166]	valid_0's rmse: 0.376087
[167]	valid_0's rmse: 0.374566
[168]	valid_0's rmse: 0.373056
[169]	valid_0's rmse: 0.37155
[170]	valid_0's rmse: 0.370061
[171]	valid_0's rmse: 0.368599
[172]	valid_0's rmse: 0.367143
[173]	valid_0's rmse: 0.3657
[174]	valid_0's rmse: 0.364264
[175]	valid_0's rmse: 0.362838
[176]	valid_0's rmse: 0.361406
[177]	valid_0's rmse: 0.359975
[178]	valid_0's rmse: 0.358569
[179]	valid_0's rmse: 0.357157
[180]	valid_0's rmse: 0.355761
[181]	valid_0's rmse: 0.354364
[182]	valid_0's rmse: 0.352985
[183]	valid_0's rmse: 0.351615
[184]	valid_0's rmse: 0.350253
[185]	valid_0's rmse: 0.348956
[186]	valid_0's rmse: 0.347575
[187]	valid_0's rmse: 0.346228
[188]	valid_0's rmse: 0.344865
[189]	valid_0's rmse: 0.343516
[190]	valid_0's rmse: 0.342195
[191]	valid_0's rmse: 0.340973
[192]	valid_0's rmse: 0.339695
[193]	valid_0's rmse: 0.338425
[194]	valid_0's rmse: 0.337154
[195]	valid_0's rmse: 0.335891
[196]	valid_0's rmse: 0.334632
[197]	valid_0's rmse: 0.333414
[198]	valid_0's rmse: 0.332171
[199]	valid_0's rmse: 0.330958
[200]	valid_0's rmse: 0.32973
[201]	valid_0's rmse: 0.328485
[202]	valid_0's rmse: 0.327245
[203]	valid_0's rmse: 0.326014
[204]	valid_0's rmse: 0.324791
[205]	valid_0's rmse: 0.323575
[206]	valid_0's rmse: 0.32241
[207]	valid_0's rmse: 0.321255
[208]	valid_0's rmse: 0.320101
[209]	valid_0's rmse: 0.318964
[210]	valid_0's rmse: 0.317822
[211]	valid_0's rmse: 0.316655
[212]	valid_0's rmse: 0.315497
[213]	valid_0's rmse: 0.314346
[214]	valid_0's rmse: 0.313204
[215]	valid_0's rmse: 0.312066
[216]	valid_0's rmse: 0.310985
[217]	valid_0's rmse: 0.309874
[218]	valid_0's rmse: 0.30878
[219]	valid_0's rmse: 0.307692
[220]	valid_0's rmse: 0.306614
[221]	valid_0's rmse: 0.305512
[222]	valid_0's rmse: 0.304451
[223]	valid_0's rmse: 0.303357
[224]	valid_0's rmse: 0.302312
[225]	valid_0's rmse: 0.301231
[226]	valid_0's rmse: 0.300248
[227]	valid_0's rmse: 0.299244
[228]	valid_0's rmse: 0.298216
[229]	valid_0's rmse: 0.297211
[230]	valid_0's rmse: 0.296224
[231]	valid_0's rmse: 0.295211
[232]	valid_0's rmse: 0.294237
[233]	valid_0's rmse: 0.293227
[234]	valid_0's rmse: 0.292224
[235]	valid_0's rmse: 0.291226
[236]	valid_0's rmse: 0.290269
[237]	valid_0's rmse: 0.289326
[238]	valid_0's rmse: 0.288383
[239]	valid_0's rmse: 0.287447
[240]	valid_0's rmse: 0.286519
[241]	valid_0's rmse: 0.285581
[242]	valid_0's rmse: 0.284672
[243]	valid_0's rmse: 0.283748
[244]	valid_0's rmse: 0.282809
[245]	valid_0's rmse: 0.281896
[246]	valid_0's rmse: 0.280999
[247]	valid_0's rmse: 0.280112
[248]	valid_0's rmse: 0.279217
[249]	valid_0's rmse: 0.278338
[250]	valid_0's rmse: 0.277469
[251]	valid_0's rmse: 0.276604
[252]	valid_0's rmse: 0.275735
[253]	valid_0's rmse: 0.274888
[254]	valid_0's rmse: 0.274032
[255]	valid_0's rmse: 0.273203
[256]	valid_0's rmse: 0.272376
[257]	valid_0's rmse: 0.271529
[258]	valid_0's rmse: 0.270689
[259]	valid_0's rmse: 0.269864
[260]	valid_0's rmse: 0.26906
[261]	valid_0's rmse: 0.268234
[262]	valid_0's rmse: 0.267418
[263]	valid_0's rmse: 0.266608
[264]	valid_0's rmse: 0.265804
[265]	valid_0's rmse: 0.265031
[266]	valid_0's rmse: 0.264244
[267]	valid_0's rmse: 0.263479
[268]	valid_0's rmse: 0.26272
[269]	valid_0's rmse: 0.261942
[270]	valid_0's rmse: 0.261192
[271]	valid_0's rmse: 0.260401
[272]	valid_0's rmse: 0.259613
[273]	valid_0's rmse: 0.258842
[274]	valid_0's rmse: 0.258069
[275]	valid_0's rmse: 0.257297
[276]	valid_0's rmse: 0.256554
[277]	valid_0's rmse: 0.255829
[278]	valid_0's rmse: 0.255095
[279]	valid_0's rmse: 0.254369
[280]	valid_0's rmse: 0.253645
[281]	valid_0's rmse: 0.252945
[282]	valid_0's rmse: 0.252243
[283]	valid_0's rmse: 0.251536
[284]	valid_0's rmse: 0.250858
[285]	valid_0's rmse: 0.25018
[286]	valid_0's rmse: 0.249496
[287]	valid_0's rmse: 0.248816
[288]	valid_0's rmse: 0.248143
[289]	valid_0's rmse: 0.247473
[290]	valid_0's rmse: 0.246805
[291]	valid_0's rmse: 0.246201
[292]	valid_0's rmse: 0.245591
[293]	valid_0's rmse: 0.244986
[294]	valid_0's rmse: 0.244381
[295]	valid_0's rmse: 0.24378
[296]	valid_0's rmse: 0.2432
[297]	valid_0's rmse: 0.24262
[298]	valid_0's rmse: 0.242035
[299]	valid_0's rmse: 0.241451
[300]	valid_0's rmse: 0.240888
[301]	valid_0's rmse: 0.240276
[302]	valid_0's rmse: 0.239668
[303]	valid_0's rmse: 0.239072
[304]	valid_0's rmse: 0.238476
[305]	valid_0's rmse: 0.237876
[306]	valid_0's rmse: 0.237299
[307]	valid_0's rmse: 0.236708
[308]	valid_0's rmse: 0.23614
[309]	valid_0's rmse: 0.235559
[310]	valid_0's rmse: 0.235001
[311]	valid_0's rmse: 0.234486
[312]	valid_0's rmse: 0.233957
[313]	valid_0's rmse: 0.233432
[314]	valid_0's rmse: 0.232903
[315]	valid_0's rmse: 0.232386
[316]	valid_0's rmse: 0.23185
[317]	valid_0's rmse: 0.231319
[318]	valid_0's rmse: 0.230816
[319]	valid_0's rmse: 0.230276
[320]	valid_0's rmse: 0.229758
[321]	valid_0's rmse: 0.229246
[322]	valid_0's rmse: 0.22876
[323]	valid_0's rmse: 0.228257
[324]	valid_0's rmse: 0.227737
[325]	valid_0's rmse: 0.227231
[326]	valid_0's rmse: 0.22674
[327]	valid_0's rmse: 0.226252
[328]	valid_0's rmse: 0.225768
[329]	valid_0's rmse: 0.225296
[330]	valid_0's rmse: 0.224806
[331]	valid_0's rmse: 0.224324
[332]	valid_0's rmse: 0.223846
[333]	valid_0's rmse: 0.223372
[334]	valid_0's rmse: 0.222902
[335]	valid_0's rmse: 0.222438
[336]	valid_0's rmse: 0.221952
[337]	valid_0's rmse: 0.221487
[338]	valid_0's rmse: 0.221023
[339]	valid_0's rmse: 0.220566
[340]	valid_0's rmse: 0.220111
[341]	valid_0's rmse: 0.219654
[342]	valid_0's rmse: 0.219203
[343]	valid_0's rmse: 0.218758
[344]	valid_0's rmse: 0.218315
[345]	valid_0's rmse: 0.217876
[346]	valid_0's rmse: 0.217452
[347]	valid_0's rmse: 0.217032
[348]	valid_0's rmse: 0.216615
[349]	valid_0's rmse: 0.216202
[350]	valid_0's rmse: 0.215792
[351]	valid_0's rmse: 0.215384
[352]	valid_0's rmse: 0.214969
[353]	valid_0's rmse: 0.214568
[354]	valid_0's rmse: 0.214161
[355]	valid_0's rmse: 0.213757
[356]	valid_0's rmse: 0.213377
[357]	valid_0's rmse: 0.213
[358]	valid_0's rmse: 0.212629
[359]	valid_0's rmse: 0.21226
[360]	valid_0's rmse: 0.211882
[361]	valid_0's rmse: 0.211515
[362]	valid_0's rmse: 0.211151
[363]	valid_0's rmse: 0.210803
[364]	valid_0's rmse: 0.210446
[365]	valid_0's rmse: 0.210093
[366]	valid_0's rmse: 0.209735
[367]	valid_0's rmse: 0.209381
[368]	valid_0's rmse: 0.20903
[369]	valid_0's rmse: 0.208682
[370]	valid_0's rmse: 0.208337
[371]	valid_0's rmse: 0.207999
[372]	valid_0's rmse: 0.207672
[373]	valid_0's rmse: 0.207332
[374]	valid_0's rmse: 0.207002
[375]	valid_0's rmse: 0.206689
[376]	valid_0's rmse: 0.206394
[377]	valid_0's rmse: 0.206093
[378]	valid_0's rmse: 0.205762
[379]	valid_0's rmse: 0.205475
[380]	valid_0's rmse: 0.205184
[381]	valid_0's rmse: 0.204873
[382]	valid_0's rmse: 0.204574
[383]	valid_0's rmse: 0.204278
[384]	valid_0's rmse: 0.203975
[385]	valid_0's rmse: 0.203675
[386]	valid_0's rmse: 0.20338
[387]	valid_0's rmse: 0.20312
[388]	valid_0's rmse: 0.202845
[389]	valid_0's rmse: 0.202579
[390]	valid_0's rmse: 0.202294
[391]	valid_0's rmse: 0.202018
[392]	valid_0's rmse: 0.201746
[393]	valid_0's rmse: 0.201476
[394]	valid_0's rmse: 0.201209
[395]	valid_0's rmse: 0.200943
[396]	valid_0's rmse: 0.200666
[397]	valid_0's rmse: 0.200402
[398]	valid_0's rmse: 0.20014
[399]	valid_0's rmse: 0.199866
[400]	valid_0's rmse: 0.199609
[401]	valid_0's rmse: 0.199369
[402]	valid_0's rmse: 0.199131
[403]	valid_0's rmse: 0.198877
[404]	valid_0's rmse: 0.198644
[405]	valid_0's rmse: 0.198414
[406]	valid_0's rmse: 0.198175
[407]	valid_0's rmse: 0.197939
[408]	valid_0's rmse: 0.197705
[409]	valid_0's rmse: 0.197451
[410]	valid_0's rmse: 0.197216
[411]	valid_0's rmse: 0.196992
[412]	valid_0's rmse: 0.19677
[413]	valid_0's rmse: 0.196535
[414]	valid_0's rmse: 0.196302
[415]	valid_0's rmse: 0.196072
[416]	valid_0's rmse: 0.195846
[417]	valid_0's rmse: 0.195622
[418]	valid_0's rmse: 0.195385
[419]	valid_0's rmse: 0.195166
[420]	valid_0's rmse: 0.194947
[421]	valid_0's rmse: 0.194724
[422]	valid_0's rmse: 0.194502
[423]	valid_0's rmse: 0.194284
[424]	valid_0's rmse: 0.194066
[425]	valid_0's rmse: 0.193852
[426]	valid_0's rmse: 0.193654
[427]	valid_0's rmse: 0.19345
[428]	valid_0's rmse: 0.19325
[429]	valid_0's rmse: 0.193057
[430]	valid_0's rmse: 0.192865
[431]	valid_0's rmse: 0.192628
[432]	valid_0's rmse: 0.192417
[433]	valid_0's rmse: 0.192183
[434]	valid_0's rmse: 0.191952
[435]	valid_0's rmse: 0.191746
[436]	valid_0's rmse: 0.191549
[437]	valid_0's rmse: 0.191362
[438]	valid_0's rmse: 0.191169
[439]	valid_0's rmse: 0.190974
[440]	valid_0's rmse: 0.190784
[441]	valid_0's rmse: 0.190603
[442]	valid_0's rmse: 0.190423
[443]	valid_0's rmse: 0.190244
[444]	valid_0's rmse: 0.190061
[445]	valid_0's rmse: 0.189879
[446]	valid_0's rmse: 0.189708
[447]	valid_0's rmse: 0.189521
[448]	valid_0's rmse: 0.189338
[449]	valid_0's rmse: 0.189152
[450]	valid_0's rmse: 0.188969
[451]	valid_0's rmse: 0.188799
[452]	valid_0's rmse: 0.188651
[453]	valid_0's rmse: 0.188505
[454]	valid_0's rmse: 0.188358
[455]	valid_0's rmse: 0.188213
[456]	valid_0's rmse: 0.188052
[457]	valid_0's rmse: 0.187909
[458]	valid_0's rmse: 0.187779
[459]	valid_0's rmse: 0.187639
[460]	valid_0's rmse: 0.187477
[461]	valid_0's rmse: 0.187331
[462]	valid_0's rmse: 0.187205
[463]	valid_0's rmse: 0.18708
[464]	valid_0's rmse: 0.186957
[465]	valid_0's rmse: 0.186832
[466]	valid_0's rmse: 0.186676
[467]	valid_0's rmse: 0.186538
[468]	valid_0's rmse: 0.186402
[469]	valid_0's rmse: 0.186251
[470]	valid_0's rmse: 0.186102
[471]	valid_0's rmse: 0.185945
[472]	valid_0's rmse: 0.185772
[473]	valid_0's rmse: 0.1856
[474]	valid_0's rmse: 0.18543
[475]	valid_0's rmse: 0.185261
[476]	valid_0's rmse: 0.185119
[477]	valid_0's rmse: 0.184995
[478]	valid_0's rmse: 0.184875
[479]	valid_0's rmse: 0.184753
[480]	valid_0's rmse: 0.184635
[481]	valid_0's rmse: 0.184496
[482]	valid_0's rmse: 0.184357
[483]	valid_0's rmse: 0.184232
[484]	valid_0's rmse: 0.184095
[485]	valid_0's rmse: 0.18396
[486]	valid_0's rmse: 0.183827
[487]	valid_0's rmse: 0.183696
[488]	valid_0's rmse: 0.183566
[489]	valid_0's rmse: 0.183434
[490]	valid_0's rmse: 0.183307
[491]	valid_0's rmse: 0.183191
[492]	valid_0's rmse: 0.183076
[493]	valid_0's rmse: 0.182949
[494]	valid_0's rmse: 0.182835
[495]	valid_0's rmse: 0.182721
[496]	valid_0's rmse: 0.182602
[497]	valid_0's rmse: 0.182476
[498]	valid_0's rmse: 0.182384
[499]	valid_0's rmse: 0.18226
[500]	valid_0's rmse: 0.182169
[501]	valid_0's rmse: 0.182029
[502]	valid_0's rmse: 0.181891
[503]	valid_0's rmse: 0.181755
[504]	valid_0's rmse: 0.181618
[505]	valid_0's rmse: 0.181485
[506]	valid_0's rmse: 0.181404
[507]	valid_0's rmse: 0.181303
[508]	valid_0's rmse: 0.181202
[509]	valid_0's rmse: 0.181096
[510]	valid_0's rmse: 0.181006
[511]	valid_0's rmse: 0.180921
[512]	valid_0's rmse: 0.180834
[513]	valid_0's rmse: 0.180747
[514]	valid_0's rmse: 0.180662
[515]	valid_0's rmse: 0.18058
[516]	valid_0's rmse: 0.180506
[517]	valid_0's rmse: 0.180432
[518]	valid_0's rmse: 0.180363
[519]	valid_0's rmse: 0.180291
[520]	valid_0's rmse: 0.18022
[521]	valid_0's rmse: 0.180165
[522]	valid_0's rmse: 0.18009
[523]	valid_0's rmse: 0.180024
[524]	valid_0's rmse: 0.179963
[525]	valid_0's rmse: 0.179911
[526]	valid_0's rmse: 0.179847
[527]	valid_0's rmse: 0.179779
[528]	valid_0's rmse: 0.179711
[529]	valid_0's rmse: 0.179649
[530]	valid_0's rmse: 0.179583
[531]	valid_0's rmse: 0.179516
[532]	valid_0's rmse: 0.179451
[533]	valid_0's rmse: 0.179388
[534]	valid_0's rmse: 0.179325
[535]	valid_0's rmse: 0.179262
[536]	valid_0's rmse: 0.179183
[537]	valid_0's rmse: 0.179104
[538]	valid_0's rmse: 0.179028
[539]	valid_0's rmse: 0.178951
[540]	valid_0's rmse: 0.178868
[541]	valid_0's rmse: 0.178798
[542]	valid_0's rmse: 0.17873
[543]	valid_0's rmse: 0.178649
[544]	valid_0's rmse: 0.17857
[545]	valid_0's rmse: 0.17849
[546]	valid_0's rmse: 0.178444
[547]	valid_0's rmse: 0.178371
[548]	valid_0's rmse: 0.178298
[549]	valid_0's rmse: 0.178226
[550]	valid_0's rmse: 0.178181
[551]	valid_0's rmse: 0.178134
[552]	valid_0's rmse: 0.178055
[553]	valid_0's rmse: 0.178009
[554]	valid_0's rmse: 0.177963
[555]	valid_0's rmse: 0.177919
[556]	valid_0's rmse: 0.177865
[557]	valid_0's rmse: 0.177811
[558]	valid_0's rmse: 0.177757
[559]	valid_0's rmse: 0.1777
[560]	valid_0's rmse: 0.177653
[561]	valid_0's rmse: 0.177599
[562]	valid_0's rmse: 0.17754
[563]	valid_0's rmse: 0.177487
[564]	valid_0's rmse: 0.177456
[565]	valid_0's rmse: 0.177398
[566]	valid_0's rmse: 0.177338
[567]	valid_0's rmse: 0.177272
[568]	valid_0's rmse: 0.177206
[569]	valid_0's rmse: 0.17714
[570]	valid_0's rmse: 0.177108
[571]	valid_0's rmse: 0.177067
[572]	valid_0's rmse: 0.177017
[573]	valid_0's rmse: 0.176977
[574]	valid_0's rmse: 0.176929
[575]	valid_0's rmse: 0.176892
[576]	valid_0's rmse: 0.17686
[577]	valid_0's rmse: 0.176828
[578]	valid_0's rmse: 0.176796
[579]	valid_0's rmse: 0.176765
[580]	valid_0's rmse: 0.17673
[581]	valid_0's rmse: 0.17669
[582]	valid_0's rmse: 0.176658
[583]	valid_0's rmse: 0.176618
[584]	valid_0's rmse: 0.176576
[585]	valid_0's rmse: 0.176541
[586]	valid_0's rmse: 0.176519
[587]	valid_0's rmse: 0.176487
[588]	valid_0's rmse: 0.176464
[589]	valid_0's rmse: 0.176442
[590]	valid_0's rmse: 0.17642
[591]	valid_0's rmse: 0.176398
[592]	valid_0's rmse: 0.176374
[593]	valid_0's rmse: 0.176351
[594]	valid_0's rmse: 0.176324
[595]	valid_0's rmse: 0.1763
[596]	valid_0's rmse: 0.176264
[597]	valid_0's rmse: 0.176224
[598]	valid_0's rmse: 0.17619
[599]	valid_0's rmse: 0.176157
[600]	valid_0's rmse: 0.176138
[601]	valid_0's rmse: 0.176118
[602]	valid_0's rmse: 0.176098
[603]	valid_0's rmse: 0.176072
[604]	valid_0's rmse: 0.176052
[605]	valid_0's rmse: 0.17603
[606]	valid_0's rmse: 0.176001
[607]	valid_0's rmse: 0.175975
[608]	valid_0's rmse: 0.175947
[609]	valid_0's rmse: 0.17592
[610]	valid_0's rmse: 0.175893
[611]	valid_0's rmse: 0.175847
[612]	valid_0's rmse: 0.1758
[613]	valid_0's rmse: 0.175756
[614]	valid_0's rmse: 0.175708
[615]	valid_0's rmse: 0.175664
[616]	valid_0's rmse: 0.175627
[617]	valid_0's rmse: 0.175591
[618]	valid_0's rmse: 0.175555
[619]	valid_0's rmse: 0.175519
[620]	valid_0's rmse: 0.175485
[621]	valid_0's rmse: 0.175473
[622]	valid_0's rmse: 0.175462
[623]	valid_0's rmse: 0.175451
[624]	valid_0's rmse: 0.175411
[625]	valid_0's rmse: 0.175401
[626]	valid_0's rmse: 0.175348
[627]	valid_0's rmse: 0.175304
[628]	valid_0's rmse: 0.175261
[629]	valid_0's rmse: 0.175215
[630]	valid_0's rmse: 0.17517
[631]	valid_0's rmse: 0.175135
[632]	valid_0's rmse: 0.175114
[633]	valid_0's rmse: 0.175093
[634]	valid_0's rmse: 0.175078
[635]	valid_0's rmse: 0.175057
[636]	valid_0's rmse: 0.175015
[637]	valid_0's rmse: 0.17498
[638]	valid_0's rmse: 0.174913
[639]	valid_0's rmse: 0.174846
[640]	valid_0's rmse: 0.17478
[641]	valid_0's rmse: 0.174767
[642]	valid_0's rmse: 0.174759
[643]	valid_0's rmse: 0.174728
[644]	valid_0's rmse: 0.174717
[645]	valid_0's rmse: 0.174683
[646]	valid_0's rmse: 0.174639
[647]	valid_0's rmse: 0.174593
[648]	valid_0's rmse: 0.174549
[649]	valid_0's rmse: 0.174504
[650]	valid_0's rmse: 0.174467
[651]	valid_0's rmse: 0.174448
[652]	valid_0's rmse: 0.174436
[653]	valid_0's rmse: 0.174418
[654]	valid_0's rmse: 0.174407
[655]	valid_0's rmse: 0.174398
[656]	valid_0's rmse: 0.17439
[657]	valid_0's rmse: 0.174388
[658]	valid_0's rmse: 0.174385
[659]	valid_0's rmse: 0.174383
[660]	valid_0's rmse: 0.17438
[661]	valid_0's rmse: 0.174326
[662]	valid_0's rmse: 0.174275
[663]	valid_0's rmse: 0.174235
[664]	valid_0's rmse: 0.174184
[665]	valid_0's rmse: 0.174133
[666]	valid_0's rmse: 0.174126
[667]	valid_0's rmse: 0.174119
[668]	valid_0's rmse: 0.174113
[669]	valid_0's rmse: 0.174106
[670]	valid_0's rmse: 0.1741
[671]	valid_0's rmse: 0.174096
[672]	valid_0's rmse: 0.174092
[673]	valid_0's rmse: 0.174088
[674]	valid_0's rmse: 0.174093
[675]	valid_0's rmse: 0.174089
[676]	valid_0's rmse: 0.174081
[677]	valid_0's rmse: 0.174074
[678]	valid_0's rmse: 0.174073
[679]	valid_0's rmse: 0.174073
[680]	valid_0's rmse: 0.17407
[681]	valid_0's rmse: 0.174034
[682]	valid_0's rmse: 0.174001
[683]	valid_0's rmse: 0.173979
[684]	valid_0's rmse: 0.173947
[685]	valid_0's rmse: 0.173912
[686]	valid_0's rmse: 0.173919
[687]	valid_0's rmse: 0.1739
[688]	valid_0's rmse: 0.17388
[689]	valid_0's rmse: 0.173887
[690]	valid_0's rmse: 0.173868
[691]	valid_0's rmse: 0.17387
[692]	valid_0's rmse: 0.173858
[693]	valid_0's rmse: 0.173871
[694]	valid_0's rmse: 0.173859
[695]	valid_0's rmse: 0.173847
[696]	valid_0's rmse: 0.173822
[697]	valid_0's rmse: 0.173767
[698]	valid_0's rmse: 0.173713
[699]	valid_0's rmse: 0.173658
[700]	valid_0's rmse: 0.173605
[701]	valid_0's rmse: 0.173558
[702]	valid_0's rmse: 0.173508
[703]	valid_0's rmse: 0.173459
[704]	valid_0's rmse: 0.17341
[705]	valid_0's rmse: 0.173361
[706]	valid_0's rmse: 0.173354
[707]	valid_0's rmse: 0.173345
[708]	valid_0's rmse: 0.173335
[709]	valid_0's rmse: 0.173318
[710]	valid_0's rmse: 0.173302
[711]	valid_0's rmse: 0.173276
[712]	valid_0's rmse: 0.173251
[713]	valid_0's rmse: 0.173227
[714]	valid_0's rmse: 0.17321
[715]	valid_0's rmse: 0.173195
[716]	valid_0's rmse: 0.173191
[717]	valid_0's rmse: 0.173187
[718]	valid_0's rmse: 0.173184
[719]	valid_0's rmse: 0.173172
[720]	valid_0's rmse: 0.173168
[721]	valid_0's rmse: 0.173171
[722]	valid_0's rmse: 0.173175
[723]	valid_0's rmse: 0.173176
[724]	valid_0's rmse: 0.173186
[725]	valid_0's rmse: 0.17319
[726]	valid_0's rmse: 0.173191
[727]	valid_0's rmse: 0.173189
[728]	valid_0's rmse: 0.173187
[729]	valid_0's rmse: 0.173189
[730]	valid_0's rmse: 0.173188
[731]	valid_0's rmse: 0.173186
[732]	valid_0's rmse: 0.173184
[733]	valid_0's rmse: 0.173182
[734]	valid_0's rmse: 0.173181
[735]	valid_0's rmse: 0.173179
[736]	valid_0's rmse: 0.17316
[737]	valid_0's rmse: 0.17314
[738]	valid_0's rmse: 0.173128
[739]	valid_0's rmse: 0.173108
[740]	valid_0's rmse: 0.173089
[741]	valid_0's rmse: 0.173075
[742]	valid_0's rmse: 0.173044
[743]	valid_0's rmse: 0.173013
[744]	valid_0's rmse: 0.172983
[745]	valid_0's rmse: 0.172947
[746]	valid_0's rmse: 0.172904
[747]	valid_0's rmse: 0.17289
[748]	valid_0's rmse: 0.172847
[749]	valid_0's rmse: 0.172804
[750]	valid_0's rmse: 0.172767
[751]	valid_0's rmse: 0.172718
[752]	valid_0's rmse: 0.172669
[753]	valid_0's rmse: 0.172621
[754]	valid_0's rmse: 0.172573
[755]	valid_0's rmse: 0.172527
[756]	valid_0's rmse: 0.172532
[757]	valid_0's rmse: 0.172538
[758]	valid_0's rmse: 0.172546
[759]	valid_0's rmse: 0.172552
[760]	valid_0's rmse: 0.172558
[761]	valid_0's rmse: 0.172547
[762]	valid_0's rmse: 0.172541
[763]	valid_0's rmse: 0.172538
[764]	valid_0's rmse: 0.172532
[765]	valid_0's rmse: 0.172527
[766]	valid_0's rmse: 0.172521
[767]	valid_0's rmse: 0.172514
[768]	valid_0's rmse: 0.172508
[769]	valid_0's rmse: 0.172496
[770]	valid_0's rmse: 0.172489
[771]	valid_0's rmse: 0.17249
[772]	valid_0's rmse: 0.172492
[773]	valid_0's rmse: 0.172501
[774]	valid_0's rmse: 0.172503
[775]	valid_0's rmse: 0.172506
[776]	valid_0's rmse: 0.172503
[777]	valid_0's rmse: 0.172498
[778]	valid_0's rmse: 0.172493
[779]	valid_0's rmse: 0.172484
[780]	valid_0's rmse: 0.172479
[781]	valid_0's rmse: 0.172469
[782]	valid_0's rmse: 0.172441
[783]	valid_0's rmse: 0.172412
[784]	valid_0's rmse: 0.172385
[785]	valid_0's rmse: 0.172372
[786]	valid_0's rmse: 0.172371
[787]	valid_0's rmse: 0.172372
[788]	valid_0's rmse: 0.172371
[789]	valid_0's rmse: 0.17237
[790]	valid_0's rmse: 0.172375
[791]	valid_0's rmse: 0.172382
[792]	valid_0's rmse: 0.172389
[793]	valid_0's rmse: 0.172395
[794]	valid_0's rmse: 0.172408
[795]	valid_0's rmse: 0.172415
[796]	valid_0's rmse: 0.172422
[797]	valid_0's rmse: 0.172427
[798]	valid_0's rmse: 0.172433
[799]	valid_0's rmse: 0.172436
[800]	valid_0's rmse: 0.172442
[801]	valid_0's rmse: 0.172432
[802]	valid_0's rmse: 0.172437
[803]	valid_0's rmse: 0.172442
[804]	valid_0's rmse: 0.172446
[805]	valid_0's rmse: 0.17245
[806]	valid_0's rmse: 0.172449
[807]	valid_0's rmse: 0.17245
[808]	valid_0's rmse: 0.172451
[809]	valid_0's rmse: 0.172449
[810]	valid_0's rmse: 0.17245
[811]	valid_0's rmse: 0.172442
[812]	valid_0's rmse: 0.172434
[813]	valid_0's rmse: 0.172401
[814]	valid_0's rmse: 0.172394
[815]	valid_0's rmse: 0.172388
[816]	valid_0's rmse: 0.172367
[817]	valid_0's rmse: 0.172347
[818]	valid_0's rmse: 0.172333
[819]	valid_0's rmse: 0.172315
[820]	valid_0's rmse: 0.172295
[821]	valid_0's rmse: 0.172302
[822]	valid_0's rmse: 0.172308
[823]	valid_0's rmse: 0.172314
[824]	valid_0's rmse: 0.172321
[825]	valid_0's rmse: 0.172321
[826]	valid_0's rmse: 0.172317
[827]	valid_0's rmse: 0.172315
[828]	valid_0's rmse: 0.172311
[829]	valid_0's rmse: 0.172309
[830]	valid_0's rmse: 0.172306
[831]	valid_0's rmse: 0.172287
[832]	valid_0's rmse: 0.172269
[833]	valid_0's rmse: 0.172251
[834]	valid_0's rmse: 0.172234
[835]	valid_0's rmse: 0.172216
[836]	valid_0's rmse: 0.172223
[837]	valid_0's rmse: 0.17223
[838]	valid_0's rmse: 0.172238
[839]	valid_0's rmse: 0.172239
[840]	valid_0's rmse: 0.172247
[841]	valid_0's rmse: 0.172248
[842]	valid_0's rmse: 0.172249
[843]	valid_0's rmse: 0.17225
[844]	valid_0's rmse: 0.172251
[845]	valid_0's rmse: 0.172253
[846]	valid_0's rmse: 0.172225
[847]	valid_0's rmse: 0.1722
[848]	valid_0's rmse: 0.172176
[849]	valid_0's rmse: 0.172152
[850]	valid_0's rmse: 0.172129
[851]	valid_0's rmse: 0.172132
[852]	valid_0's rmse: 0.172137
[853]	valid_0's rmse: 0.17214
[854]	valid_0's rmse: 0.172144
[855]	valid_0's rmse: 0.172161
[856]	valid_0's rmse: 0.17216
[857]	valid_0's rmse: 0.172175
[858]	valid_0's rmse: 0.172174
[859]	valid_0's rmse: 0.172188
[860]	valid_0's rmse: 0.172188
[861]	valid_0's rmse: 0.172185
[862]	valid_0's rmse: 0.172182
[863]	valid_0's rmse: 0.172179
[864]	valid_0's rmse: 0.172187
[865]	valid_0's rmse: 0.172184
[866]	valid_0's rmse: 0.172192
[867]	valid_0's rmse: 0.172202
[868]	valid_0's rmse: 0.172205
[869]	valid_0's rmse: 0.172205
[870]	valid_0's rmse: 0.172206
[871]	valid_0's rmse: 0.17221
[872]	valid_0's rmse: 0.172214
[873]	valid_0's rmse: 0.17222
[874]	valid_0's rmse: 0.172224
[875]	valid_0's rmse: 0.172226
[876]	valid_0's rmse: 0.17222
[877]	valid_0's rmse: 0.172217
[878]	valid_0's rmse: 0.172218
[879]	valid_0's rmse: 0.172214
[880]	valid_0's rmse: 0.172213
[881]	valid_0's rmse: 0.172201
[882]	valid_0's rmse: 0.172189
[883]	valid_0's rmse: 0.172177
[884]	valid_0's rmse: 0.172166
[885]	valid_0's rmse: 0.172154
[886]	valid_0's rmse: 0.172136
[887]	valid_0's rmse: 0.172118
[888]	valid_0's rmse: 0.172101
[889]	valid_0's rmse: 0.172113
[890]	valid_0's rmse: 0.172094
[891]	valid_0's rmse: 0.172103
[892]	valid_0's rmse: 0.17211
[893]	valid_0's rmse: 0.172114
[894]	valid_0's rmse: 0.172117
[895]	valid_0's rmse: 0.172121
[896]	valid_0's rmse: 0.172117
[897]	valid_0's rmse: 0.172118
[898]	valid_0's rmse: 0.172114
[899]	valid_0's rmse: 0.172115
[900]	valid_0's rmse: 0.172115
[901]	valid_0's rmse: 0.172125
[902]	valid_0's rmse: 0.172136
[903]	valid_0's rmse: 0.172145
[904]	valid_0's rmse: 0.172155
[905]	valid_0's rmse: 0.172164
[906]	valid_0's rmse: 0.172175
[907]	valid_0's rmse: 0.172183
[908]	valid_0's rmse: 0.172203
[909]	valid_0's rmse: 0.172223
[910]	valid_0's rmse: 0.172242
[911]	valid_0's rmse: 0.172244
[912]	valid_0's rmse: 0.172246
[913]	valid_0's rmse: 0.172248
[914]	valid_0's rmse: 0.17225
[915]	valid_0's rmse: 0.172252
[916]	valid_0's rmse: 0.17223
[917]	valid_0's rmse: 0.172238
[918]	valid_0's rmse: 0.172218
[919]	valid_0's rmse: 0.17222
[920]	valid_0's rmse: 0.172222
[921]	valid_0's rmse: 0.172208
[922]	valid_0's rmse: 0.172212
[923]	valid_0's rmse: 0.172215
[924]	valid_0's rmse: 0.172219
[925]	valid_0's rmse: 0.172222
[926]	valid_0's rmse: 0.172237
[927]	valid_0's rmse: 0.172245
[928]	valid_0's rmse: 0.172253
[929]	valid_0's rmse: 0.172269
[930]	valid_0's rmse: 0.172277
[931]	valid_0's rmse: 0.172285
[932]	valid_0's rmse: 0.172285
[933]	valid_0's rmse: 0.172294
[934]	valid_0's rmse: 0.172303
[935]	valid_0's rmse: 0.172312
[936]	valid_0's rmse: 0.172293
[937]	valid_0's rmse: 0.172275
[938]	valid_0's rmse: 0.172279
[939]	valid_0's rmse: 0.172261
[940]	valid_0's rmse: 0.172249
[941]	valid_0's rmse: 0.172226
[942]	valid_0's rmse: 0.172204
[943]	valid_0's rmse: 0.172202
[944]	valid_0's rmse: 0.172179
[945]	valid_0's rmse: 0.172157
[946]	valid_0's rmse: 0.172133
[947]	valid_0's rmse: 0.172109
[948]	valid_0's rmse: 0.172086
[949]	valid_0's rmse: 0.172063
[950]	valid_0's rmse: 0.17204
[951]	valid_0's rmse: 0.172046
[952]	valid_0's rmse: 0.172052
[953]	valid_0's rmse: 0.172065
[954]	valid_0's rmse: 0.172076
[955]	valid_0's rmse: 0.172089
[956]	valid_0's rmse: 0.172094
[957]	valid_0's rmse: 0.1721
[958]	valid_0's rmse: 0.172108
[959]	valid_0's rmse: 0.172116
[960]	valid_0's rmse: 0.172122
[961]	valid_0's rmse: 0.172133
[962]	valid_0's rmse: 0.172144
[963]	valid_0's rmse: 0.172155
[964]	valid_0's rmse: 0.172166
[965]	valid_0's rmse: 0.172184
[966]	valid_0's rmse: 0.172178
[967]	valid_0's rmse: 0.172172
[968]	valid_0's rmse: 0.172163
[969]	valid_0's rmse: 0.172142
[970]	valid_0's rmse: 0.172136
[971]	valid_0's rmse: 0.172154
[972]	valid_0's rmse: 0.172166
[973]	valid_0's rmse: 0.17217
[974]	valid_0's rmse: 0.172172
[975]	valid_0's rmse: 0.172192
[976]	valid_0's rmse: 0.172204
[977]	valid_0's rmse: 0.172215
[978]	valid_0's rmse: 0.172226
[979]	valid_0's rmse: 0.172237
[980]	valid_0's rmse: 0.172241
[981]	valid_0's rmse: 0.17225
[982]	valid_0's rmse: 0.17226
[983]	valid_0's rmse: 0.172271
[984]	valid_0's rmse: 0.172281
[985]	valid_0's rmse: 0.172291
[986]	valid_0's rmse: 0.172293
[987]	valid_0's rmse: 0.172296
[988]	valid_0's rmse: 0.172301
[989]	valid_0's rmse: 0.172305
[990]	valid_0's rmse: 0.172307
[991]	valid_0's rmse: 0.172316
[992]	valid_0's rmse: 0.172331
[993]	valid_0's rmse: 0.172346
[994]	valid_0's rmse: 0.172361
[995]	valid_0's rmse: 0.172377
[996]	valid_0's rmse: 0.172377
[997]	valid_0's rmse: 0.172377
[998]	valid_0's rmse: 0.172381
[999]	valid_0's rmse: 0.172393
[1000]	valid_0's rmse: 0.172393
[1001]	valid_0's rmse: 0.172408
[1002]	valid_0's rmse: 0.172416
[1003]	valid_0's rmse: 0.172425
[1004]	valid_0's rmse: 0.172433
[1005]	valid_0's rmse: 0.172443
[1006]	valid_0's rmse: 0.172443
[1007]	valid_0's rmse: 0.172448
[1008]	valid_0's rmse: 0.17245
[1009]	valid_0's rmse: 0.172459
[1010]	valid_0's rmse: 0.172469
[1011]	valid_0's rmse: 0.172487
[1012]	valid_0's rmse: 0.172504
[1013]	valid_0's rmse: 0.172522
[1014]	valid_0's rmse: 0.172538
[1015]	valid_0's rmse: 0.172551
[1016]	valid_0's rmse: 0.172556
[1017]	valid_0's rmse: 0.172568
[1018]	valid_0's rmse: 0.17258
[1019]	valid_0's rmse: 0.172584
[1020]	valid_0's rmse: 0.172597
[1021]	valid_0's rmse: 0.172598
[1022]	valid_0's rmse: 0.172599
[1023]	valid_0's rmse: 0.1726
[1024]	valid_0's rmse: 0.172602
[1025]	valid_0's rmse: 0.172599
[1026]	valid_0's rmse: 0.172605
[1027]	valid_0's rmse: 0.17261
[1028]	valid_0's rmse: 0.172616
[1029]	valid_0's rmse: 0.172605
[1030]	valid_0's rmse: 0.172596
[1031]	valid_0's rmse: 0.172588
[1032]	valid_0's rmse: 0.17258
[1033]	valid_0's rmse: 0.172572
[1034]	valid_0's rmse: 0.172564
[1035]	valid_0's rmse: 0.172573
[1036]	valid_0's rmse: 0.17257
[1037]	valid_0's rmse: 0.172569
[1038]	valid_0's rmse: 0.172567
[1039]	valid_0's rmse: 0.172565
[1040]	valid_0's rmse: 0.172563
[1041]	valid_0's rmse: 0.172568
[1042]	valid_0's rmse: 0.172567
[1043]	valid_0's rmse: 0.172568
[1044]	valid_0's rmse: 0.172572
[1045]	valid_0's rmse: 0.172576
[1046]	valid_0's rmse: 0.172579
[1047]	valid_0's rmse: 0.17258
[1048]	valid_0's rmse: 0.172581
[1049]	valid_0's rmse: 0.172585
[1050]	valid_0's rmse: 0.172595
Early stopping, best iteration is:
[950]	valid_0's rmse: 0.17204
In [19]:
y_pred = np.expm1(gbm.predict(X_test))
y_true = np.expm1(Y_test)
In [20]:
MSE = mean_squared_error(y_true, y_pred)
RMSE = np.sqrt(mean_squared_error(y_true, y_pred))
MAE = mean_absolute_error(y_true, y_pred)
MAPE = mean_absolute_percentage_error(y_true, y_pred)
R_2 = r2_score(y_true, y_pred)
NMB = sum(y_pred - y_true) / sum(y_true)
NME = sum(abs(y_true-y_pred)) / sum(y_true)
MFB = sum((y_pred - y_true)/((y_pred+y_true)/2))/len(y_true)
MFE = sum(abs((y_pred - y_true))/((y_pred+y_true)/2))/len(y_true)
print(f"MSE: {format(MSE, '.2E')}")
print(f'RMSE: {round(RMSE, 4)}')
print(f'MAE: {round(MAE, 4)}')
print(f'MAPE: {round(MAPE*100, 2)}%')
print(f'R_2: {round(R_2, 4)}')
print(f'NMB: {round(NMB, 4)}')
print(f'NME: {round(NME, 4)}')
print(f'MFB: {round(MFB, 4)}')
print(f'MFE: {round(MFE, 4)}')
MSE: 6.60E+04
RMSE: 256.8979
MAE: 105.2196
MAPE: 3.81%
R_2: 0.9877
NMB: -0.0226
NME: 0.0639
MFB: -0.008
MFE: 0.0384
In [21]:
test_rst = pd.DataFrame(np.array([y_pred, y_true]).T, columns=['y_pred', 'y_true'])
In [22]:
plt.figure(figsize=(22, 9))
smaller_rst = test_rst[test_rst.y_true <= 2000].reset_index(drop=True)
plt.plot(smaller_rst.y_pred, 'o-', color='b', label='预测值')
plt.plot(smaller_rst.y_true, '*-', color='r', label='真实值')
# for index in range(smaller_rst.shape[0]):
#     tmp_y = smaller_rst.iloc[index].y_true
#     tmp_yhat = smaller_rst.iloc[index].y_pred
#     plt.plot([index, index], [tmp_yhat, tmp_y], color='grey')
#     # print(f"从({index}, {tmp_y}) 到 ({index},{tmp_yhat})")
plt.legend(loc='best')
plt.title('低煤耗电厂预测结果(使用发电量、供热量)')
plt.savefig('./figure/smaller_1.png')
No description has been provided for this image
In [23]:
plt.figure(figsize=(22, 9))
larger_rst = test_rst[test_rst.y_true > 2000].reset_index(drop=True)
plt.plot(larger_rst.y_pred, 'o-', color='b', label='预测值')
plt.plot(larger_rst.y_true, '*-', color='r', label='真实值')
# for index in range(larger_rst.shape[0]):
#     tmp_y = larger_rst.iloc[index].y_true
#     tmp_yhat = larger_rst.iloc[index].y_pred
#     plt.plot([index, index], [tmp_yhat, tmp_y], color='grey')
#     # print(f"从({index}, {tmp_y}) 到 ({index},{tmp_yhat})")
plt.legend(loc='best')
plt.title('高煤耗电厂预测结果(使用发电量、供热量)')
plt.savefig('./figure/larger_1.png')
No description has been provided for this image
In [24]:
y_pred_l = test_rst[test_rst.y_true > 2000].y_pred
y_true_l = test_rst[test_rst.y_true > 2000].y_true
MSE_l = mean_squared_error(y_true_l, y_pred_l)
RMSE_l = np.sqrt(mean_squared_error(y_true_l, y_pred_l))
MAE_l = mean_absolute_error(y_true_l, y_pred_l)
MAPE_l = mean_absolute_percentage_error(y_true_l, y_pred_l)
R_2_l = r2_score(y_true_l, y_pred_l)
print('MSE:', format(MSE_l, '.2E'))
print('RMSE:', RMSE_l)
print('MAE:', MAE_l)
print('MAPE:', MAPE_l)
print('R_2:', R_2_l)
MSE: 2.92E+05
RMSE: 540.1489742426004
MAE: 414.12677797198677
MAPE: 0.07910283246319393
R_2: 0.9557298796435275
In [25]:
y_pred_s = test_rst[test_rst.y_true <= 2000].y_pred
y_true_s = test_rst[test_rst.y_true <= 2000].y_true
MSE_s = mean_squared_error(y_true_s, y_pred_s)
RMSE_s = np.sqrt(mean_squared_error(y_true_s, y_pred_s))
MAE_s = mean_absolute_error(y_true_s, y_pred_s)
MAPE_s = mean_absolute_percentage_error(y_true_s, y_pred_s)
R_2_s = r2_score(y_true_s, y_pred_s)
print('MSE:', format(MSE_s, '.2E'))
print('RMSE:', RMSE_s)
print('MAE:', MAE_s)
print('MAPE:', MAPE_s)
print('R_2:', R_2_s)
MSE: 5.25E+02
RMSE: 22.90970315255905
MAE: 15.636471401761884
MAPE: 0.026197783962765748
R_2: 0.9611485658308001
In [26]:
import seaborn as sns
In [27]:
import matplotlib.ticker as ticker
In [30]:
feature_importance = pd.DataFrame()
feature_importance['fea_name'] = feature_cols
feature_importance['fea_imp'] = gbm.feature_importance(importance_type='split')
feature_importance = feature_importance.sort_values('fea_imp', ascending=False)

plt.figure(figsize=[28, 16])
ax = sns.barplot(x=feature_importance['fea_name'], y=feature_importance['fea_imp'])
ax.set_xticklabels(labels=feature_importance['fea_name'], rotation=45, fontsize=14)
ax.yaxis.set_major_locator(ticker.MultipleLocator(1000))
plt.title('特征重要性(使用发电量、供热量)')
plt.xlabel('fea_name', fontsize=18)
plt.ylabel('fea_imp', fontsize=18)
plt.tight_layout()
plt.savefig('./figure/电厂建模特征重要性1.png')
No description has been provided for this image
In [29]:
feature_importance
Out[29]:
fea_name fea_imp
28 发电量(万千瓦时) 5672
27 供热量(吉焦) 5377
30 week_of_years 3692
31 c_SO2 2660
17 c_NO2 2447
8 flow 2336
24 c_smoke 2320
2 燃料类型_褐煤 387
6 压力参数_高压 321
9 num_workers 151
5 day_of_week_1 133
0 day_of_week_5 62
7 day_of_week_4 59
10 额定蒸发量 58
4 day_of_week_7 26
20 day_of_week_6 23
16 day_of_week_3 22
26 day_of_week_2 20
12 冷却方式_水冷-闭式循环 4
3 燃料类型_低挥发分烟煤 3
11 低位发热量GJ/t 2
19 压力参数_超临界 0
18 压力参数_超超临界 0
21 压力参数_亚临界 0
13 汽轮机类型_抽凝式 0
23 冷却方式_空冷-直接空冷 0
25 生产设备类型_煤粉锅炉 0
1 燃料类型_一般烟煤 0
15 燃料类型_中高挥发分烟煤 0
14 汽轮机类型_背压式 0
29 总容量 0
22 生产设备类型_高温高压循环流化床锅炉 0
In [29]: