893 KiB
893 KiB
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')
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')
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')
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')
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]: