737 lines
56 KiB
Plaintext
737 lines
56 KiB
Plaintext
|
{
|
||
|
"cells": [
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 1,
|
||
|
"outputs": [
|
||
|
{
|
||
|
"ename": "ImportError",
|
||
|
"evalue": "cannot import name 'get_config' from 'tensorflow.python.eager.context' (C:\\Users\\zhaojh\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorflow\\python\\eager\\context.py)",
|
||
|
"output_type": "error",
|
||
|
"traceback": [
|
||
|
"\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
|
||
|
"\u001B[1;31mImportError\u001B[0m Traceback (most recent call last)",
|
||
|
"\u001B[1;32m~\\AppData\\Local\\Temp\\ipykernel_7812\\4169542727.py\u001B[0m in \u001B[0;36m<module>\u001B[1;34m\u001B[0m\n\u001B[0;32m 1\u001B[0m \u001B[1;32mimport\u001B[0m \u001B[0mnumpy\u001B[0m \u001B[1;32mas\u001B[0m \u001B[0mnp\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 2\u001B[0m \u001B[1;32mimport\u001B[0m \u001B[0mpandas\u001B[0m \u001B[1;32mas\u001B[0m \u001B[0mpd\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m----> 3\u001B[1;33m \u001B[1;32mimport\u001B[0m \u001B[0mkeras\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 4\u001B[0m \u001B[1;32mfrom\u001B[0m \u001B[0mkeras\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mlayers\u001B[0m \u001B[1;32mimport\u001B[0m \u001B[0mDense\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mConv1D\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mInput\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mBidirectional\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mLSTM\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mMultiply\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mDropout\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mFlatten\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mSoftmax\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mLambda\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 5\u001B[0m \u001B[1;32mfrom\u001B[0m \u001B[0mkeras\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mmodels\u001B[0m \u001B[1;32mimport\u001B[0m \u001B[0mModel\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
|
||
|
"\u001B[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\keras\\__init__.py\u001B[0m in \u001B[0;36m<module>\u001B[1;34m\u001B[0m\n\u001B[0;32m 23\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 24\u001B[0m \u001B[1;31m# See b/110718070#comment18 for more details about this import.\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m---> 25\u001B[1;33m \u001B[1;32mfrom\u001B[0m \u001B[0mkeras\u001B[0m \u001B[1;32mimport\u001B[0m \u001B[0mmodels\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 26\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 27\u001B[0m \u001B[1;32mfrom\u001B[0m \u001B[0mkeras\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mengine\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0minput_layer\u001B[0m \u001B[1;32mimport\u001B[0m \u001B[0mInput\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
|
||
|
"\u001B[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\keras\\models.py\u001B[0m in \u001B[0;36m<module>\u001B[1;34m\u001B[0m\n\u001B[0;32m 17\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 18\u001B[0m \u001B[1;32mimport\u001B[0m \u001B[0mtensorflow\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mcompat\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mv2\u001B[0m \u001B[1;32mas\u001B[0m \u001B[0mtf\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m---> 19\u001B[1;33m \u001B[1;32mfrom\u001B[0m \u001B[0mkeras\u001B[0m \u001B[1;32mimport\u001B[0m \u001B[0mbackend\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 20\u001B[0m \u001B[1;32mfrom\u001B[0m \u001B[0mkeras\u001B[0m \u001B[1;32mimport\u001B[0m \u001B[0mmetrics\u001B[0m \u001B[1;32mas\u001B[0m \u001B[0mmetrics_module\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 21\u001B[0m \u001B[1;32mfrom\u001B[0m \u001B[0mkeras\u001B[0m \u001B[1;32mimport\u001B[0m \u001B[0moptimizer_v1\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
|
||
|
"\u001B[1;32m~\\AppData\\Roaming\\Python\\Python37\\site-packages\\keras\\backend.py\u001B[0m in \u001B[0;36m<module>\u001B[1;34m\u001B[0m\n\u001B[0;32m 35\u001B[0m \u001B[1;32mfrom\u001B[0m \u001B[0mtensorflow\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mpython\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mdistribute\u001B[0m \u001B[1;32mimport\u001B[0m \u001B[0mdistribute_coordinator\u001B[0m \u001B[1;32mas\u001B[0m \u001B[0mdc\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 36\u001B[0m \u001B[1;32mfrom\u001B[0m \u001B[0mtensorflow\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mpython\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mdistribute\u001B[0m \u001B[1;32mimport\u001B[0m \u001B[0mdistribute_coordinator_context\u001B[0m \u001B[1;32mas\u001B[0m \u001B[0mdc_context\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m---> 37\u001B[1;33m \u001B[1;32mfrom\u001B[0m \u001B[0mtensorflow\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mpython\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0meager\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mcontext\u001B[0m \u001B[1;32mimport\u001B[0m \u001B[0mget_config\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 38\u001B[0m \u001B[1;32mfrom\u001B[0m \u001B[0mtensorflow\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mpython\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mframework\u001B[0m \u001B[1;32mimport\u001B[0m \u001B[0mconfig\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 39\u001B[0m \u001B[1;32mfrom\u001B[0m \u001B[0mkeras\u001B[0m \u001B[1;32mimport\u001B[0m \u001B[0mbackend_config\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
|
||
|
"\u001B[1;31mImportError\u001B[0m: cannot import name 'get_config' from 'tensorflow.python.eager.context' (C:\\Users\\zhaojh\\AppData\\Roaming\\Python\\Python37\\site-packages\\tensorflow\\python\\eager\\context.py)"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"import numpy as np\n",
|
||
|
"import pandas as pd\n",
|
||
|
"import keras\n",
|
||
|
"from keras.layers import Dense, Conv1D, Input, Bidirectional, LSTM, Multiply, Dropout, Flatten, Softmax, Lambda\n",
|
||
|
"from keras.models import Model"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"data = pd.read_csv('./train_data_processed.csv')"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 3,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"obj_cols = data.columns[-32:]\n",
|
||
|
"num_cols = [x for x in data.columns if x not in obj_cols]"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 4,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"maxs = data[num_cols].max()\n",
|
||
|
"mins = data[num_cols].min()"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 5,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"for col in num_cols:\n",
|
||
|
" data[col] = (data[col] - mins[col]) / (maxs[col] - mins[col])"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 6,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"optim = keras.optimizers.Adam(learning_rate=5e-4)"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 7,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"def build_model(n_features, n_outs):\n",
|
||
|
" inputs = Input(shape=(1, n_features))\n",
|
||
|
" x = Conv1D(filters=64, kernel_size=1, activation='relu')(inputs)\n",
|
||
|
" x = Dropout(rate=0.1)(x)\n",
|
||
|
" lstm_out = Bidirectional(LSTM(units=128, return_sequences=True))(x)\n",
|
||
|
" attention_pre = Dense(1, name='attention_vec')(lstm_out)\n",
|
||
|
" attention_probs = Softmax()(attention_pre)\n",
|
||
|
" attention_mul = Multiply()([attention_probs, lstm_out])\n",
|
||
|
" attention_mul = Flatten()(attention_mul)\n",
|
||
|
" output = Dense(32, activation='relu')(attention_mul)\n",
|
||
|
" output = Dense(n_outs, activation='sigmoid')(output)\n",
|
||
|
" model = Model(inputs=[inputs], outputs=output)\n",
|
||
|
" model.summary()\n",
|
||
|
" model.compile(loss='mse', optimizer=optim,)\n",
|
||
|
" return model"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 8,
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"Model: \"model_1\"\n",
|
||
|
"__________________________________________________________________________________________________\n",
|
||
|
"Layer (type) Output Shape Param # Connected to \n",
|
||
|
"==================================================================================================\n",
|
||
|
"input_1 (InputLayer) (None, 1, 251) 0 \n",
|
||
|
"__________________________________________________________________________________________________\n",
|
||
|
"conv1d_1 (Conv1D) (None, 1, 64) 16128 input_1[0][0] \n",
|
||
|
"__________________________________________________________________________________________________\n",
|
||
|
"dropout_1 (Dropout) (None, 1, 64) 0 conv1d_1[0][0] \n",
|
||
|
"__________________________________________________________________________________________________\n",
|
||
|
"bidirectional_1 (Bidirectional) (None, 1, 256) 197632 dropout_1[0][0] \n",
|
||
|
"__________________________________________________________________________________________________\n",
|
||
|
"attention_vec (Dense) (None, 1, 1) 257 bidirectional_1[0][0] \n",
|
||
|
"__________________________________________________________________________________________________\n",
|
||
|
"softmax_1 (Softmax) (None, 1, 1) 0 attention_vec[0][0] \n",
|
||
|
"__________________________________________________________________________________________________\n",
|
||
|
"multiply_1 (Multiply) (None, 1, 256) 0 softmax_1[0][0] \n",
|
||
|
" bidirectional_1[0][0] \n",
|
||
|
"__________________________________________________________________________________________________\n",
|
||
|
"flatten_1 (Flatten) (None, 256) 0 multiply_1[0][0] \n",
|
||
|
"__________________________________________________________________________________________________\n",
|
||
|
"dense_1 (Dense) (None, 32) 8224 flatten_1[0][0] \n",
|
||
|
"__________________________________________________________________________________________________\n",
|
||
|
"dense_2 (Dense) (None, 1) 33 dense_1[0][0] \n",
|
||
|
"==================================================================================================\n",
|
||
|
"Total params: 222,274\n",
|
||
|
"Trainable params: 222,274\n",
|
||
|
"Non-trainable params: 0\n",
|
||
|
"__________________________________________________________________________________________________\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"model = build_model(len(data.columns) - 1, 1)"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 9,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"from tensorflow.python.keras.utils.vis_utils import plot_model"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 10,
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"image/png": "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
|
||
|
"text/plain": "<IPython.core.display.Image object>"
|
||
|
},
|
||
|
"execution_count": 10,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"plot_model(model, to_file='model.png')"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 18,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"from sklearn.model_selection import train_test_split"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 19,
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": "251"
|
||
|
},
|
||
|
"execution_count": 19,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"feature_cols = [x for x in data.columns if x != '燃料消耗量']\n",
|
||
|
"len(feature_cols)"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 20,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"train_data, valid = train_test_split(data, test_size=0.2, shuffle=True, random_state=666)\n",
|
||
|
"valid_data, test_data = train_test_split(valid, test_size=0.5, shuffle=True, random_state=666)"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 21,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"X_train, Y_train = train_data[feature_cols], train_data['燃料消耗量']\n",
|
||
|
"X_valid, Y_valid = valid_data[feature_cols], valid_data['燃料消耗量']\n",
|
||
|
"X_test, Y_test = test_data[feature_cols], test_data['燃料消耗量']"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 22,
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": "((922, 1, 251), (922, 1))"
|
||
|
},
|
||
|
"execution_count": 22,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"x_train = np.expand_dims(X_train.values, axis=1)\n",
|
||
|
"y_train = Y_train.values.reshape(-1, 1)\n",
|
||
|
"x_train.shape, y_train.shape"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 23,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"x_valid = np.expand_dims(X_valid.values, axis=1)\n",
|
||
|
"y_valid = Y_valid.values.reshape(-1, 1)"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 24,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"x_test = np.expand_dims(X_test.values, axis=1)\n",
|
||
|
"y_test = Y_test.values.reshape(-1, 1)"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 25,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"callbacks = [keras.callbacks.EarlyStopping(monitor='val_loss', patience=int(10)),\n",
|
||
|
" keras.callbacks.ModelCheckpoint('./best_model.h5', monitor='val_loss', verbose=0, save_best_only=False, save_weights_only=False, mode='auto', period=1)]"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 26,
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"Train on 922 samples, validate on 116 samples\n",
|
||
|
"Epoch 1/100\n",
|
||
|
"922/922 [==============================] - 1s 1ms/step - loss: 0.0396 - val_loss: 0.0128\n",
|
||
|
"Epoch 2/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0074 - val_loss: 0.0057\n",
|
||
|
"Epoch 3/100\n",
|
||
|
"922/922 [==============================] - 0s 78us/step - loss: 0.0048 - val_loss: 0.0040\n",
|
||
|
"Epoch 4/100\n",
|
||
|
"922/922 [==============================] - 0s 61us/step - loss: 0.0035 - val_loss: 0.0028\n",
|
||
|
"Epoch 5/100\n",
|
||
|
"922/922 [==============================] - 0s 77us/step - loss: 0.0030 - val_loss: 0.0023\n",
|
||
|
"Epoch 6/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0025 - val_loss: 0.0020\n",
|
||
|
"Epoch 7/100\n",
|
||
|
"922/922 [==============================] - 0s 86us/step - loss: 0.0023 - val_loss: 0.0020\n",
|
||
|
"Epoch 8/100\n",
|
||
|
"922/922 [==============================] - 0s 78us/step - loss: 0.0023 - val_loss: 0.0018\n",
|
||
|
"Epoch 9/100\n",
|
||
|
"922/922 [==============================] - 0s 67us/step - loss: 0.0022 - val_loss: 0.0017\n",
|
||
|
"Epoch 10/100\n",
|
||
|
"922/922 [==============================] - 0s 61us/step - loss: 0.0019 - val_loss: 0.0016\n",
|
||
|
"Epoch 11/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0019 - val_loss: 0.0016\n",
|
||
|
"Epoch 12/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0019 - val_loss: 0.0017\n",
|
||
|
"Epoch 13/100\n",
|
||
|
"922/922 [==============================] - 0s 52us/step - loss: 0.0019 - val_loss: 0.0017\n",
|
||
|
"Epoch 14/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0018 - val_loss: 0.0015\n",
|
||
|
"Epoch 15/100\n",
|
||
|
"922/922 [==============================] - 0s 87us/step - loss: 0.0018 - val_loss: 0.0015\n",
|
||
|
"Epoch 16/100\n",
|
||
|
"922/922 [==============================] - 0s 52us/step - loss: 0.0016 - val_loss: 0.0013\n",
|
||
|
"Epoch 17/100\n",
|
||
|
"922/922 [==============================] - 0s 68us/step - loss: 0.0015 - val_loss: 0.0014\n",
|
||
|
"Epoch 18/100\n",
|
||
|
"922/922 [==============================] - 0s 73us/step - loss: 0.0014 - val_loss: 0.0013\n",
|
||
|
"Epoch 19/100\n",
|
||
|
"922/922 [==============================] - 0s 52us/step - loss: 0.0017 - val_loss: 0.0014\n",
|
||
|
"Epoch 20/100\n",
|
||
|
"922/922 [==============================] - 0s 70us/step - loss: 0.0017 - val_loss: 0.0013\n",
|
||
|
"Epoch 21/100\n",
|
||
|
"922/922 [==============================] - 0s 73us/step - loss: 0.0015 - val_loss: 0.0013\n",
|
||
|
"Epoch 22/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0014 - val_loss: 0.0013\n",
|
||
|
"Epoch 23/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0014 - val_loss: 0.0012\n",
|
||
|
"Epoch 24/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0013 - val_loss: 0.0014\n",
|
||
|
"Epoch 25/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0013 - val_loss: 0.0012\n",
|
||
|
"Epoch 26/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0013 - val_loss: 0.0011\n",
|
||
|
"Epoch 27/100\n",
|
||
|
"922/922 [==============================] - 0s 65us/step - loss: 0.0013 - val_loss: 0.0012\n",
|
||
|
"Epoch 28/100\n",
|
||
|
"922/922 [==============================] - 0s 89us/step - loss: 0.0013 - val_loss: 0.0013\n",
|
||
|
"Epoch 29/100\n",
|
||
|
"922/922 [==============================] - 0s 52us/step - loss: 0.0013 - val_loss: 0.0011\n",
|
||
|
"Epoch 30/100\n",
|
||
|
"922/922 [==============================] - 0s 70us/step - loss: 0.0013 - val_loss: 0.0012\n",
|
||
|
"Epoch 31/100\n",
|
||
|
"922/922 [==============================] - 0s 60us/step - loss: 0.0014 - val_loss: 0.0013\n",
|
||
|
"Epoch 32/100\n",
|
||
|
"922/922 [==============================] - 0s 70us/step - loss: 0.0012 - val_loss: 0.0012\n",
|
||
|
"Epoch 33/100\n",
|
||
|
"922/922 [==============================] - 0s 51us/step - loss: 0.0013 - val_loss: 0.0012\n",
|
||
|
"Epoch 34/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0012 - val_loss: 0.0012\n",
|
||
|
"Epoch 35/100\n",
|
||
|
"922/922 [==============================] - 0s 60us/step - loss: 0.0013 - val_loss: 0.0014\n",
|
||
|
"Epoch 36/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0012 - val_loss: 0.0011\n",
|
||
|
"Epoch 37/100\n",
|
||
|
"922/922 [==============================] - 0s 62us/step - loss: 0.0011 - val_loss: 0.0011\n",
|
||
|
"Epoch 38/100\n",
|
||
|
"922/922 [==============================] - 0s 77us/step - loss: 0.0012 - val_loss: 0.0012\n",
|
||
|
"Epoch 39/100\n",
|
||
|
"922/922 [==============================] - 0s 60us/step - loss: 0.0013 - val_loss: 0.0011\n",
|
||
|
"Epoch 40/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0012 - val_loss: 0.0011\n",
|
||
|
"Epoch 41/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0012 - val_loss: 0.0014\n",
|
||
|
"Epoch 42/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0013 - val_loss: 0.0014\n",
|
||
|
"Epoch 43/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0013 - val_loss: 0.0011\n",
|
||
|
"Epoch 44/100\n",
|
||
|
"922/922 [==============================] - 0s 51us/step - loss: 0.0012 - val_loss: 0.0011\n",
|
||
|
"Epoch 45/100\n",
|
||
|
"922/922 [==============================] - 0s 95us/step - loss: 0.0011 - val_loss: 0.0011\n",
|
||
|
"Epoch 46/100\n",
|
||
|
"922/922 [==============================] - 0s 68us/step - loss: 0.0011 - val_loss: 0.0011\n",
|
||
|
"Epoch 47/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0011 - val_loss: 0.0012\n",
|
||
|
"Epoch 48/100\n",
|
||
|
"922/922 [==============================] - 0s 66us/step - loss: 0.0011 - val_loss: 0.0010\n",
|
||
|
"Epoch 49/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 9.9569e-04 - val_loss: 9.4151e-04\n",
|
||
|
"Epoch 50/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0010 - val_loss: 0.0011\n",
|
||
|
"Epoch 51/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0010 - val_loss: 0.0011\n",
|
||
|
"Epoch 52/100\n",
|
||
|
"922/922 [==============================] - 0s 77us/step - loss: 0.0010 - val_loss: 9.9602e-04\n",
|
||
|
"Epoch 53/100\n",
|
||
|
"922/922 [==============================] - 0s 52us/step - loss: 9.3358e-04 - val_loss: 0.0012\n",
|
||
|
"Epoch 54/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0010 - val_loss: 9.6337e-04\n",
|
||
|
"Epoch 55/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 9.9897e-04 - val_loss: 9.9428e-04\n",
|
||
|
"Epoch 56/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0010 - val_loss: 9.1976e-04\n",
|
||
|
"Epoch 57/100\n",
|
||
|
"922/922 [==============================] - 0s 60us/step - loss: 9.8333e-04 - val_loss: 0.0011\n",
|
||
|
"Epoch 58/100\n",
|
||
|
"922/922 [==============================] - 0s 86us/step - loss: 0.0011 - val_loss: 0.0010\n",
|
||
|
"Epoch 59/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 0.0010 - val_loss: 0.0010\n",
|
||
|
"Epoch 60/100\n",
|
||
|
"922/922 [==============================] - 0s 51us/step - loss: 9.6106e-04 - val_loss: 9.5494e-04\n",
|
||
|
"Epoch 61/100\n",
|
||
|
"922/922 [==============================] - 0s 87us/step - loss: 9.1071e-04 - val_loss: 8.9771e-04\n",
|
||
|
"Epoch 62/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 9.1379e-04 - val_loss: 9.4967e-04\n",
|
||
|
"Epoch 63/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 9.3075e-04 - val_loss: 9.1627e-04\n",
|
||
|
"Epoch 64/100\n",
|
||
|
"922/922 [==============================] - 0s 78us/step - loss: 8.8605e-04 - val_loss: 9.3663e-04\n",
|
||
|
"Epoch 65/100\n",
|
||
|
"922/922 [==============================] - 0s 69us/step - loss: 9.5708e-04 - val_loss: 0.0011\n",
|
||
|
"Epoch 66/100\n",
|
||
|
"922/922 [==============================] - 0s 68us/step - loss: 9.5701e-04 - val_loss: 8.9826e-04\n",
|
||
|
"Epoch 67/100\n",
|
||
|
"922/922 [==============================] - 0s 60us/step - loss: 9.4454e-04 - val_loss: 0.0011\n",
|
||
|
"Epoch 68/100\n",
|
||
|
"922/922 [==============================] - 0s 74us/step - loss: 9.5393e-04 - val_loss: 9.7981e-04\n",
|
||
|
"Epoch 69/100\n",
|
||
|
"922/922 [==============================] - 0s 104us/step - loss: 9.5125e-04 - val_loss: 0.0010\n",
|
||
|
"Epoch 70/100\n",
|
||
|
"922/922 [==============================] - 0s 78us/step - loss: 9.5720e-04 - val_loss: 9.7615e-04\n",
|
||
|
"Epoch 71/100\n",
|
||
|
"922/922 [==============================] - 0s 64us/step - loss: 9.2241e-04 - val_loss: 0.0010\n"
|
||
|
]
|
||
|
},
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": "<keras.callbacks.callbacks.History at 0x2a12af4d9c8>"
|
||
|
},
|
||
|
"execution_count": 26,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"model.fit(x_train, y_train, epochs=100, batch_size=32, validation_data=(x_test, y_test), shuffle=True,\n",
|
||
|
" callbacks=callbacks)"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 27,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"y_pred = model.predict(x_test)"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 28,
|
||
|
"outputs": [
|
||
|
{
|
||
|
"data": {
|
||
|
"text/plain": "array([0.30161506, 0.12067786, 0.43900865, 0.4143401 , 0.11434203,\n 0.87028706, 0.15387392, 0.86223227, 0.8570186 , 0.4433931 ,\n 0.7649788 , 0.36369222, 0.33063045, 0.7437426 , 0.3493362 ,\n 0.7671248 , 0.7743846 , 0.12363896, 0.4528606 , 0.75037146,\n 0.45131576, 0.34990048, 0.7552419 , 0.7508755 , 0.7558205 ,\n 0.3391131 , 0.76618046, 0.38217723, 0.30887872, 0.36930698,\n 0.3591324 , 0.83817935, 0.9321221 , 0.35430533, 0.11836711,\n 0.764429 , 0.7478696 , 0.74976325, 0.3656214 , 0.3482211 ,\n 0.3658831 , 0.35415024, 0.29030812, 0.7965492 , 0.9372817 ,\n 0.11179626, 0.33758143, 0.305908 , 0.12149343, 0.41378874,\n 0.09611899, 0.36266702, 0.76215094, 0.41939664, 0.7642038 ,\n 0.36630815, 0.36369124, 0.775969 , 0.7431689 , 0.49149197,\n 0.35072863, 0.7608663 , 0.88904417, 0.11546668, 0.32508087,\n 0.78478754, 0.2949888 , 0.9328996 , 0.26087016, 0.15387377,\n 0.7867287 , 0.35840425, 0.8485855 , 0.36474293, 0.86086893,\n 0.85082245, 0.37929475, 0.88898706, 0.44798538, 0.74498856,\n 0.7642088 , 0.9374167 , 0.24628928, 0.1150094 , 0.35409844,\n 0.34573317, 0.1182591 , 0.35334843, 0.8806509 , 0.3744196 ,\n 0.12240422, 0.7410463 , 0.3571657 , 0.44970232, 0.8927134 ,\n 0.76465344, 0.7640152 , 0.33744502, 0.7715051 , 0.44094718,\n 0.33831298, 0.93699497, 0.30656263, 0.10126469, 0.8242742 ,\n 0.85100025, 0.42451733, 0.362445 , 0.77677643, 0.40487826,\n 0.78558755, 0.339495 , 0.8240729 , 0.7534524 , 0.93057597,\n 0.3128613 ], dtype=float32)"
|
||
|
},
|
||
|
"execution_count": 28,
|
||
|
"metadata": {},
|
||
|
"output_type": "execute_result"
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"y_pred = np.squeeze(y_pred)\n",
|
||
|
"y_pred"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 29,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"from sklearn.metrics import mean_absolute_error, mean_squared_error, mean_absolute_percentage_error, r2_score"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 30,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"y_true = np.squeeze(y_test)"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 31,
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"MSE: 1.02E-03\n",
|
||
|
"RMSE: 0.032\n",
|
||
|
"MAE: 0.0236\n",
|
||
|
"MAPE: 7.07%\n",
|
||
|
"R_2: 0.9858\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"MSE = mean_squared_error(y_true, y_pred)\n",
|
||
|
"RMSE = np.sqrt(mean_squared_error(y_true, y_pred))\n",
|
||
|
"MAE = mean_absolute_error(y_true, y_pred)\n",
|
||
|
"MAPE = mean_absolute_percentage_error(y_true, y_pred)\n",
|
||
|
"R_2 = r2_score(y_true, y_pred)\n",
|
||
|
"print(f\"MSE: {format(MSE, '.2E')}\")\n",
|
||
|
"print(f'RMSE: {round(RMSE, 4)}')\n",
|
||
|
"print(f'MAE: {round(MAE, 4)}')\n",
|
||
|
"print(f'MAPE: {round(MAPE * 100, 2)}%')\n",
|
||
|
"print(f'R_2: {round(R_2, 4)}')"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 32,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"def recover(x, col='燃料消耗量'):\n",
|
||
|
" return np.expm1(x * (maxs[col] - mins[col]) + mins[col])"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 33,
|
||
|
"outputs": [],
|
||
|
"source": [
|
||
|
"y_true_recover = recover(y_true)\n",
|
||
|
"y_pred_recover = recover(y_pred)"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": 34,
|
||
|
"outputs": [
|
||
|
{
|
||
|
"name": "stdout",
|
||
|
"output_type": "stream",
|
||
|
"text": [
|
||
|
"MSE: 7.76E+04\n",
|
||
|
"RMSE: 278.5442\n",
|
||
|
"MAE: 166.5543\n",
|
||
|
"MAPE: 9.54%\n",
|
||
|
"R_2: 0.9717\n"
|
||
|
]
|
||
|
}
|
||
|
],
|
||
|
"source": [
|
||
|
"MSE = mean_squared_error(y_true_recover, y_pred_recover)\n",
|
||
|
"RMSE = np.sqrt(mean_squared_error(y_true_recover, y_pred_recover))\n",
|
||
|
"MAE = mean_absolute_error(y_true_recover, y_pred_recover)\n",
|
||
|
"MAPE = mean_absolute_percentage_error(y_true_recover, y_pred_recover)\n",
|
||
|
"R_2 = r2_score(y_true_recover, y_pred_recover)\n",
|
||
|
"print(f\"MSE: {format(MSE, '.2E')}\")\n",
|
||
|
"print(f'RMSE: {round(RMSE, 4)}')\n",
|
||
|
"print(f'MAE: {round(MAE, 4)}')\n",
|
||
|
"print(f'MAPE: {round(MAPE * 100, 2)}%')\n",
|
||
|
"print(f'R_2: {round(R_2, 4)}')"
|
||
|
],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
},
|
||
|
{
|
||
|
"cell_type": "code",
|
||
|
"execution_count": null,
|
||
|
"outputs": [],
|
||
|
"source": [],
|
||
|
"metadata": {
|
||
|
"collapsed": false,
|
||
|
"pycharm": {
|
||
|
"name": "#%%\n"
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
],
|
||
|
"metadata": {
|
||
|
"kernelspec": {
|
||
|
"display_name": "Python 3",
|
||
|
"language": "python",
|
||
|
"name": "python3"
|
||
|
},
|
||
|
"language_info": {
|
||
|
"codemirror_mode": {
|
||
|
"name": "ipython",
|
||
|
"version": 2
|
||
|
},
|
||
|
"file_extension": ".py",
|
||
|
"mimetype": "text/x-python",
|
||
|
"name": "python",
|
||
|
"nbconvert_exporter": "python",
|
||
|
"pygments_lexer": "ipython2",
|
||
|
"version": "2.7.6"
|
||
|
}
|
||
|
},
|
||
|
"nbformat": 4,
|
||
|
"nbformat_minor": 0
|
||
|
}
|