diff --git a/Untitled.ipynb b/Untitled.ipynb deleted file mode 100644 index 6121978..0000000 --- a/Untitled.ipynb +++ /dev/null @@ -1,165 +0,0 @@ -{ - "cells": [ - { - "cell_type": "code", - "execution_count": 1, - "metadata": {}, - "outputs": [], - "source": [ - "import pandas as pd\n", - "from sklearn.preprocessing import StandardScaler\n", - "from models import *\n", - "from sklearn.metrics import r2_score, mean_squared_error\n", - "import matplotlib.pyplot as plt\n", - "import numpy as np\n", - "\n", - "ss_X_dep = StandardScaler()\n", - "ss_y_dep = StandardScaler()\n", - "\n", - "\n", - "\n", - "def rmse(y1, y2):\n", - " return np.sqrt(mean_squared_error(y1, y2))\n" - ] - }, - { - "cell_type": "code", - "execution_count": 2, - "metadata": {}, - "outputs": [], - "source": [ - "def LSTM_FC_pred_dep(X, Y, X_test=None, iters=20000, learning_rate=1e-4, dropout_prob=0.5):\n", - " print(\"lr:\", learning_rate)\n", - " print(\"dropout:\", dropout_prob)\n", - " print(\"iterations:\", iters)\n", - " num_count = Y.shape[0]\n", - " input_shape = X.shape[1]\n", - " print('num_count:', num_count)\n", - " print('input_size:', input_shape)\n", - " model = LSTM_FC_Model(num_input=input_shape, num_hidden=[40], num_output=1)\n", - "\n", - " Loss = []\n", - " for iter in range(iters + 1):\n", - " loss = model.fit(X, Y, learning_rate, dropout_prob)\n", - " Loss.append(loss)\n", - " if iter % 1000 == 0:\n", - " print(\"iteration: %s, loss: %s\" % (iter, loss))\n", - "\n", - " if iter % 5000 == 0:\n", - " model.save_model_params('checkpoints/LSTM_FC_CKPT_{}'.format(str(iter)))\n", - "\n", - " print('starting predicting......')\n", - " Y_test = model.predict(X_test)\n", - " print('predicting done!')\n", - " return Y_test" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "X_train_dep shape (144, 6)\n", - "y_train_dep shape (144, 1)\n", - "X_test_dep shape (24, 6)\n", - "X_train_dep_std shape (144, 6)\n", - "y_train_dep_std shape (144, 1)\n", - "X_test_dep_std shape (168, 6)\n", - "lr: 5e-05\n", - "dropout: 0.5\n", - "iterations: 20000\n", - "num_count: 144\n", - "input_size: 6\n", - "iteration: 0, loss: 193.41330849699904\n", - "iteration: 1000, loss: 192.97147028511569\n", - "iteration: 2000, loss: 198.33641366985495\n", - "iteration: 3000, loss: 201.77612104390957\n", - "iteration: 4000, loss: 202.14137950489283\n", - "iteration: 5000, loss: 204.98135106578914\n", - "iteration: 6000, loss: 198.8643236771483\n", - "iteration: 7000, loss: 202.7235269540965\n", - "iteration: 8000, loss: 197.01437964344197\n", - "iteration: 9000, loss: 203.2671294188254\n", - "iteration: 10000, loss: 201.20394753429755\n", - "iteration: 11000, loss: 205.40613601246747\n", - "iteration: 12000, loss: 200.91678950695456\n" - ] - } - ], - "source": [ - "data = pd.read_csv('data_yigan.csv')\n", - "Inputs = data.drop('Year', axis=1).drop('Depth', axis=1).drop('Water_Discharge', axis=1)\n", - "Outputs = data['Depth']\n", - "\n", - "Inputs = Inputs.as_matrix()\n", - "Outputs = Outputs.as_matrix().reshape(-1, 1)\n", - "\n", - "# First 12 years of data\n", - "X_train_dep = Inputs[0:144]\n", - "y_train_dep = Outputs[0:144]\n", - "\n", - "# Last 2 years of data\n", - "X_test_dep = data.as_matrix()[144:,1:7]\n", - "\n", - "print(\"X_train_dep shape\", X_train_dep.shape)\n", - "print(\"y_train_dep shape\", y_train_dep.shape)\n", - "print(\"X_test_dep shape\", X_test_dep.shape)\n", - "\n", - "X = np.concatenate([X_train_dep, X_test_dep], axis=0)\n", - "\n", - "# Standardization\n", - "X = ss_X_dep.fit_transform(X)\n", - "\n", - "# First 12 years of data\n", - "X_train_dep_std = X[0:144]\n", - "y_train_dep_std = ss_y_dep.fit_transform(y_train_dep)\n", - "\n", - "# All 14 years of data\n", - "X_test_dep_std = X\n", - "\n", - "\n", - "print(\"X_train_dep_std shape\", X_train_dep_std.shape)\n", - "print(\"y_train_dep_std shape\", y_train_dep_std.shape)\n", - "print(\"X_test_dep_std shape\", X_test_dep_std.shape)\n", - "\n", - "\n", - "\n", - "y_pred_dep = LSTM_FC_pred_dep(X_train_dep_std, y_train_dep_std, X_test_dep_std, iters=20000, learning_rate=5e-5)\n", - "\n", - "y_pred_dep = ss_y_dep.inverse_transform(y_pred_dep[144:])\n" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [] - } - ], - "metadata": { - "kernelspec": { - "display_name": "Python 3", - "language": "python", - "name": "python3" - }, - "language_info": { - "codemirror_mode": { - "name": "ipython", - "version": 3 - }, - "file_extension": ".py", - "mimetype": "text/x-python", - "name": "python", - "nbconvert_exporter": "python", - "pygments_lexer": "ipython3", - "version": "3.5.2" - } - }, - "nbformat": 4, - "nbformat_minor": 2 -} diff --git a/data_yigan.csv b/data_yigan.csv deleted file mode 100755 index 14b9864..0000000 --- a/data_yigan.csv +++ /dev/null @@ -1,169 +0,0 @@ -Id,Year,Month,Irrigation,Rainfall,Tem,Evaporation,Water_Discharge,Depth -1,2000,1,0,360.265,-2.975,3291.682,0,2.033 -1,2000,2,0,0,-10,6232.959,0,2.278 -1,2000,3,0,0,-9.45,20015.548,14.615,2.333 -1,2000,4,6477.062,37.923,-3.625,34159.161,89.931,2.094 -1,2000,5,11008.138,170.652,5.325,47994.843,414.868,1.436 -1,2000,6,8991.13,4455.906,15.8,36367.773,400.49,1.337 -1,2000,7,8564.918,3678.492,22.225,46423.33,379.803,1.505 -1,2000,8,5522.083,7300.101,27.1,32725.687,238.312,1.798 -1,2000,9,4364.323,5214.358,25.95,25006.162,198.311,2.038 -1,2000,10,15192.317,663.646,21.2,16575.21,570.496,1.682 -1,2000,11,0,37.923,15.025,9184.854,491.49,1.251 -1,2000,12,0,0,3.025,6976.241,69.096,1.705 -1,2001,1,0,0,-3.15,5415.347,0,2.082 -1,2001,2,0,0,-8.5,9375.984,0,2.3 -1,2001,3,0,0,-9.975,23965.566,13.555,2.317 -1,2001,4,7116.336,265.458,-1.225,31897.457,83.412,2.063 -1,2001,5,11125.814,1497.943,8.125,49353.989,384.796,1.505 -1,2001,6,9346.752,360.265,16.9,47410.835,371.46,1.472 -1,2001,7,9006.336,1877.169,19.825,48695.652,352.272,1.782 -1,2001,8,7294.925,6996.72,22.75,39202.867,221.038,1.903 -1,2001,9,3341.088,10258.063,23.825,20663.266,183.936,1.973 -1,2001,10,15512.256,9101.424,19.65,15715.125,529.143,1.755 -1,2001,11,0,132.729,12.25,8069.929,455.864,1.173 -1,2001,12,0,94.807,4.525,4215.476,64.087,1.681 -1,2002,1,0,0,-4.05,6137.394,0,2.069 -1,2002,2,0,379.226,-6.225,9259.182,0,2.233 -1,2002,3,0,815.336,-0.45,21077.381,14.975,2.172 -1,2002,4,6723.648,2825.234,2.7,30633.876,92.148,1.917 -1,2002,5,9428.314,6105.539,4.925,32778.779,425.098,1.327 -1,2002,6,9965.117,13159.142,10.275,39245.34,410.366,1.275 -1,2002,7,11003.904,3924.989,22.425,35465.216,389.169,1.398 -1,2002,8,6563.549,891.181,26.975,35921.804,244.189,1.792 -1,2002,9,3529.267,1573.788,25.4,23073.627,203.202,2.064 -1,2002,10,15213.658,56.884,21.875,19612.052,584.565,1.92 -1,2002,11,152.928,0,16.75,9429.075,503.61,1.274 -1,2002,12,0,549.878,7.225,3387.247,70.799,1.745 -1,2003,1,0,94.807,-3.1,3259.827,0,2.133 -1,2003,2,0,170.652,-5.725,8314.151,0,2.301 -1,2003,3,0,568.839,-7.675,15863.782,11.009,2.307 -1,2003,4,3473.28,1441.059,-0.675,33352.168,67.741,2 -1,2003,5,8976.269,2142.627,9.675,40784.998,312.501,1.588 -1,2003,6,5217.091,682.607,16.85,41188.494,301.671,1.647 -1,2003,7,9446.976,10201.179,20.6,34902.444,286.088,1.771 -1,2003,8,4222.195,2711.466,24.55,34127.306,179.51,2.005 -1,2003,9,2108.506,17823.622,23.3,27374.05,149.379,2.219 -1,2003,10,14135.731,834.297,20.95,17562.715,429.729,1.903 -1,2003,11,146.88,75.845,12.55,8388.479,370.217,1.414 -1,2003,12,0,0,1.375,5287.927,52.047,1.875 -1,2004,1,0,0,-4.05,6137.394,0,2.069 -1,2004,2,0,379.226,-6.225,9259.182,0,2.233 -1,2004,3,0,815.336,-0.45,21077.381,14.975,2.172 -1,2004,4,6723.648,2825.234,2.7,30633.876,92.148,1.917 -1,2004,5,9428.314,6105.539,4.925,32778.779,425.098,1.327 -1,2004,6,9965.117,13159.142,10.275,39245.34,410.366,1.275 -1,2004,7,11003.904,3924.989,22.425,35465.216,389.169,1.398 -1,2004,8,6563.549,891.181,26.975,35921.804,244.189,1.792 -1,2004,9,3529.267,1573.788,25.4,23073.627,203.202,2.064 -1,2004,10,15213.658,56.884,21.875,19612.052,584.565,1.92 -1,2004,11,152.928,0,16.75,9429.075,503.61,1.274 -1,2004,12,0,549.878,7.225,3387.247,70.799,1.745 -1,2005,1,0,0,-3.15,5415.347,0,2.082 -1,2005,2,0,0,-8.5,9375.984,0,2.3 -1,2005,3,0,0,-9.975,23965.566,13.555,2.317 -1,2005,4,7116.336,265.458,-1.225,31897.457,83.412,2.063 -1,2005,5,11125.814,1497.943,8.125,49353.989,384.796,1.505 -1,2005,6,9346.752,360.265,16.9,47410.835,371.46,1.472 -1,2005,7,9006.336,1877.169,19.825,48695.652,352.272,1.782 -1,2005,8,7294.925,6996.72,22.75,39202.867,221.038,1.903 -1,2005,9,3341.088,10258.063,23.825,20663.266,183.936,1.973 -1,2005,10,15512.256,9101.424,19.65,15715.125,529.143,1.755 -1,2005,11,0,132.729,12.25,8069.929,455.864,1.173 -1,2005,12,0,94.807,4.525,4215.476,64.087,1.681 -1,2006,1,0,360.265,-4.975,3259.827,0,2.246 -1,2006,2,0,398.187,-8.375,7528.395,0,2.43 -1,2006,3,0,0,-1.825,18932.479,33.11,2.419 -1,2006,4,5205.489,132.729,-0.125,36845.598,48.31,2.199 -1,2006,5,11471.54,4474.867,5.925,44055.443,257.89,1.677 -1,2006,6,8881.552,303.381,16.025,44968.619,255.85,1.536 -1,2006,7,10002.398,5100.59,24.175,37196.003,214,1.638 -1,2006,8,4900.085,4417.983,26.5,28977.417,178.1,1.859 -1,2006,9,4365.517,2464.969,24.425,24273.498,149.13,2.159 -1,2006,10,15953.328,56.884,22.7,23073.627,306.27,1.956 -1,2006,11,549.092,1004.949,16.275,10512.145,301.16,1.294 -1,2006,12,0,0,5.925,4236.713,25.31,1.717 -1,2007,1,0,0,-1.875,4640.209,0,2.138 -1,2007,2,0,1478.981,-9.275,7868.181,0,2.289 -1,2007,3,0,3735.376,-5.4,14504.636,0,2.167 -1,2007,4,5590.303,1460.02,-1.675,30697.586,32.58,1.96 -1,2007,5,12232.616,246.497,4.625,49385.844,183.24,1.647 -1,2007,6,9475.176,15624.111,12.65,37142.911,252.52,1.438 -1,2007,7,10674.946,5972.81,19.425,34360.909,235.89,1.42 -1,2007,8,5240.922,4417.983,23.475,33649.481,126.74,1.69 -1,2007,9,4647.051,2142.627,26.7,24549.574,158.78,1.97 -1,2007,10,17009.896,3223.421,23.025,15470.904,391.23,1.73 -1,2007,11,589.091,0,14.375,10533.381,304.48,1.133 -1,2007,12,0,284.42,3.5,4969.378,44.43,1.594 -1,2008,1,0,663.646,-4.2,3535.903,0,2.011 -1,2008,2,0,0,-7.525,6572.745,0,2.275 -1,2008,3,0,208.574,-11.575,20652.648,10.38,2.25 -1,2008,4,5005.785,1137.678,-3.475,28956.18,66.74,1.951 -1,2008,5,11216.014,967.026,11.125,42770.625,177.25,1.469 -1,2008,6,8674.42,8115.436,18.55,41464.571,259.69,1.484 -1,2008,7,9760.616,12305.884,20.625,39340.905,176.58,1.647 -1,2008,8,4757.523,11661.2,22.375,34286.581,132.42,1.696 -1,2008,9,4285.459,2616.659,21.325,24931.834,164.35,1.99 -1,2008,10,15601.899,379.226,20.725,20535.846,395.03,1.846 -1,2008,11,529.285,341.303,18,11616.451,294.26,1.225 -1,2008,12,0,0,7.025,7199.226,22.54,1.608 -1,2009,1,0,94.807,-0.85,5744.515,0,2.049 -1,2009,2,0,0,-9.625,8239.823,0,2.178 -1,2009,3,0,701.568,-6.325,17244.165,0,2.141 -1,2009,4,5555.763,644.684,0.75,32014.259,127.5,1.903 -1,2009,5,12194.702,2389.124,10.25,44830.581,301.14,1.41 -1,2009,6,9443.897,113.768,16.45,51987.334,270.19,1.468 -1,2009,7,10637.958,4399.022,21.55,44607.596,164.18,1.684 -1,2009,8,5217.81,7338.023,25.95,35603.254,125.31,1.841 -1,2009,9,4636.179,6996.72,22.75,25547.697,136.69,1.976 -1,2009,10,16957.982,0,21.275,25165.437,336.57,1.823 -1,2009,11,585.708,1061.833,15.775,8420.334,242.6,1.197 -1,2009,12,0,303.381,-1.15,4257.95,23.53,1.568 -1,2010,1,0,0,-10.25,4746.393,0,2.003 -1,2010,2,0,170.652,-14.05,7815.089,0,2.203 -1,2010,3,0,606.762,-10.925,16108.004,13.02,2.125 -1,2010,4,4913.404,436.11,-7.6,25091.109,78.15,1.939 -1,2010,5,10966.527,8305.049,4.45,41825.594,347.73,1.424 -1,2010,6,8483.573,1971.975,12.325,47984.224,252.88,1.385 -1,2010,7,9547.801,1460.02,18.55,49492.027,282.55,1.551 -1,2010,8,4659.264,436.11,24.825,37790.629,120.69,1.845 -1,2010,9,4186.243,10371.831,25.05,22319.725,135.08,2.024 -1,2010,10,15253.963,246.497,20.775,18252.906,279.55,1.967 -1,2010,11,519.227,0,13.575,13368.475,197.14,1.32 -1,2010,12,0,56.884,3.225,8749.502,46.36,1.701 -1,2011,1,0,246.497,-4.45,3525.285,0,2.154 -1,2011,2,0,37.923,-8.175,7517.776,0,2.351 -1,2011,3,0,0,-11.325,14886.896,0,2.344 -1,2011,4,5110.118,0,-5.175,35794.384,35.33,2.148 -1,2011,5,11182.478,132.729,6.925,44639.451,234.68,1.516 -1,2011,6,8661.726,1896.13,17.025,46996.72,200.76,1.517 -1,2011,7,9758.468,3223.421,24.45,48430.194,192.67,1.61 -1,2011,8,4790.894,3280.305,27.275,40264.7,115.27,1.861 -1,2011,9,4248.17,663.646,23.525,27851.874,90.36,2.18 -1,2011,10,15549.653,1194.562,17.2,20323.48,233.91,2.126 -1,2011,11,538.495,18.961,11.95,8951.251,378.08,1.356 -1,2011,12,0,0,6.75,4502.171,125.6,1.62 -1,2012,1,0,0,-4.525,4820.721,0,2.094 -1,2012,2,0,0,-11.6,7029.333,0,2.313 -1,2012,3,0,75.845,-9.05,17106.126,0,2.328 -1,2012,4,5088.986,0,-1.575,38714.424,36.69,2.065 -1,2012,5,11023.411,3773.299,9.75,46359.62,244.62,1.525 -1,2012,6,8544.239,7603.481,14.9,41645.082,238.97,1.472 -1,2012,7,9631.341,18676.881,20.9,40477.066,232.55,1.535 -1,2012,8,4743.314,7489.714,24.025,36845.598,159.32,1.57 -1,2012,9,4177.163,3830.183,22.2,25929.957,62.61,1.92 -1,2012,10,15326.046,132.729,18.925,23285.993,371.83,1.921 -1,2012,11,535.499,37.923,11.45,9110.525,263.23,1.252 -1,2012,12,0,0,1.65,4873.813,30.26,1.628 -1,2013,1,0,0,-2.425,6286.05,0,2.035 -1,2013,2,0,0,-9.75,8749.502,0,2.182 -1,2013,3,0,0,-6.4,21268.511,18.06,2.143 -1,2013,4,5507.286,0,0.85,32927.435,5.832,1.869 -1,2013,5,11900.272,985.988,13.6,46710.025,283.06,1.397 -1,2013,6,9225.392,5347.087,15.975,39818.73,217.48,1.467 -1,2013,7,10400.528,8741.159,19.075,37780.011,382.42,1.542 -1,2013,8,5126.007,530.916,23.8,37503.934,217.73,1.707 -1,2013,9,4506.669,3659.531,24.5,25770.682,63.35,2.057 -1,2013,10,16544.53,0,21.8,18974.952,494.42,2.042 -1,2013,11,579.316,75.845,13.975,8473.426,430.42,1.251 -1,2013,12,0,0,5,2495.307,6,1.66 diff --git a/demo.csv b/demo.csv index 4405ec2..a87a940 100644 --- a/demo.csv +++ b/demo.csv @@ -1,169 +1,169 @@ -,Year,Month,Irrigation,Rainfall,Tem,Evaporation,Depth -0,2000.0,1.0,646.2114335336834,1869.500119954397,-6.8605494164896195,12920.32763281926,7.463375547273564 -1,2000.0,2.0,2065.7533033259024,297.2611595021047,-38.89320267207219,32643.860626080514,9.65504546492086 -2,2000.0,3.0,712.9555940461354,-2251.1636518617615,-35.88293094559644,79504.58605519297,9.482484425559866 -3,2000.0,4.0,29193.06496065423,-914.767184357554,-3.768944958568552,139495.57953440933,8.949170469851545 -4,2000.0,5.0,43427.91472050743,1073.571566403268,16.62994713169807,188335.0172951812,6.220478511714758 -5,2000.0,6.0,34689.76299326568,18003.09360432067,66.74241535503475,146394.9946514262,5.239521763614414 -6,2000.0,7.0,30418.35288088608,15331.53338645691,88.27218874888477,184136.48644916984,6.487399762432153 -7,2000.0,8.0,23542.039986155167,30940.40106709474,112.76775643590393,130667.4073620062,8.408120311821538 -8,2000.0,9.0,16967.950740988308,20156.236131311973,105.0227320523402,102083.71594611151,7.362471070007879 -9,2000.0,10.0,58096.05676835292,2720.24980376721,84.87050035452378,51901.56682916464,7.450708020807671 -10,2000.0,11.0,-2202.032422033983,294.8416697645107,61.85753645143327,34343.64296655812,6.633785117647569 -11,2000.0,12.0,-1260.6843267803868,-1466.4287372849953,20.934289227066436,25495.21802766207,5.002947802489061 -12,2001.0,1.0,2962.09653903474,-1406.8291641415683,-15.197841503373288,36949.40876940548,8.902693657746788 -13,2001.0,2.0,978.7251522239643,325.6555475465601,-31.321620955994177,28661.136341670728,9.760636287721617 -14,2001.0,3.0,1924.8370792518374,-973.4435007728864,-43.436100135088736,80537.8653340086,8.804102632530663 -15,2001.0,4.0,28757.622050497965,1934.2589675303693,-1.9423039933695678,123526.23267625361,8.931988782489807 -16,2001.0,5.0,44554.49450680669,6652.469034761335,34.75952153691184,214128.04874465615,7.465429429123889 -17,2001.0,6.0,33432.44918319163,896.8369071862824,70.78550814949308,197302.9049714671,6.057927573872254 -18,2001.0,7.0,36961.1451529752,9457.21500080005,76.36324040914167,196696.35035278805,7.637038290671558 -19,2001.0,8.0,32165.014877347792,29292.27434491682,91.96363880688995,151258.46650382195,8.570760586891247 -20,2001.0,9.0,12540.091665323756,40774.359134654725,99.44667347082664,83132.77211498687,8.117627952521277 -21,2001.0,10.0,60721.20635632121,36428.48647877735,75.80426623658052,58429.14575224964,7.651456619297526 -22,2001.0,11.0,2726.2286132763156,-586.0423105890002,47.89437823010887,31436.006413770792,5.192887275663934 -23,2001.0,12.0,1375.7687189350595,241.2318039177609,17.100200119844892,23078.7192974455,7.733602562059434 -24,2002.0,1.0,349.41601293697454,-1093.8232570023356,-18.30315669185365,20267.623394478,9.01419314946133 -25,2002.0,2.0,2260.3644860205086,1502.9021213326341,-25.88625302485677,30394.711369430366,8.909827591886918 -26,2002.0,3.0,-1162.5126668141327,3945.8983217258333,-0.628619614955739,66977.84259417046,8.742148746640968 -27,2002.0,4.0,26048.49328818631,10902.062136315864,8.145155882607188,119780.82351626785,7.866731614936693 -28,2002.0,5.0,34904.5236151908,22795.34452924787,23.092703867309584,114862.2552554711,5.975428224748334 -29,2002.0,6.0,43015.13324421334,53331.00400302005,45.92932769797728,157300.34320551236,5.753524159354155 -30,2002.0,7.0,42902.65595395116,16033.384970966323,99.10652801546041,145243.15361264086,4.73179512288987 -31,2002.0,8.0,26863.51511252652,3031.092453884112,107.87291044670204,155854.18706926302,8.390054062576684 -32,2002.0,9.0,13887.787659472075,6919.9729495017,104.86881768788344,80341.96136919671,8.2402658114876 -33,2002.0,10.0,60396.205649719755,891.2266220898988,81.67193809926648,90704.45900719747,8.570297213668294 -34,2002.0,11.0,-1900.490347327117,-301.7682802840384,69.68948960777891,29778.954677402653,4.690994616330159 -35,2002.0,12.0,2052.047216635499,3213.701550102301,29.804936874683303,-7853.37458579395,8.135450270474124 -36,2003.0,1.0,1120.0520353912227,-124.16498671449142,-19.15464442488139,27486.9851194687,8.629513181102567 -37,2003.0,2.0,352.8446880167606,-710.5523418446325,-23.537780449685833,15484.317981179269,9.046389385050906 -38,2003.0,3.0,-2797.118714761694,750.4262999043608,-30.944502050132883,60056.37760479504,11.389656064312838 -39,2003.0,4.0,16587.81628757209,4229.119624802382,0.8629867012853674,140560.17996800953,8.761734772497157 -40,2003.0,5.0,33711.64464307125,8577.763687572145,36.8106078955074,174789.87261246223,7.6618008052909214 -41,2003.0,6.0,18508.391621460007,1922.6320955563815,65.7136732064987,170081.46249219996,6.245959453829091 -42,2003.0,7.0,36157.33493634191,41649.652053150116,81.49371908249726,136059.70172656816,6.373187211918995 -43,2003.0,8.0,17574.9583796942,11678.246971514473,93.47624987805402,136263.36546289094,8.589689340947787 -44,2003.0,9.0,11072.747400570071,70422.88108902339,97.48167362202231,107121.4740416448,8.466497857807294 -45,2003.0,10.0,57067.31228397829,3322.5176553929987,81.5340233438672,64680.01834992005,6.9121281341308025 -46,2003.0,11.0,1462.0677341597705,187.8832056329794,57.091079079883535,24117.918505752416,4.801034345820547 -47,2003.0,12.0,526.1878863232267,-202.7180811619501,8.033533783590034,19565.226053699138,8.358429142360047 -48,2004.0,1.0,102.47577711141051,-2450.2422970098237,-15.538989379913192,29827.70470267134,7.411110563415862 -49,2004.0,2.0,1748.0835373305592,1305.8342369985694,-25.420051893277826,27286.4219835579,9.126533728333422 -50,2004.0,3.0,2921.7196058913923,4751.1204339231845,-2.539480110463103,95256.47267129329,8.726390772996782 -51,2004.0,4.0,29215.38711445153,11767.658759735157,12.062218841763796,128022.23070770386,7.464601675186829 -52,2004.0,5.0,38474.923761451326,24125.445535717354,22.6141212249737,122600.20392035577,5.522265397983174 -53,2004.0,6.0,38939.09251994427,53331.33787558657,40.775538743139755,141409.28896838747,4.835621090927407 -54,2004.0,7.0,46310.447089421206,15597.210954237553,84.86600099447112,135132.61811891836,5.483055224349093 -55,2004.0,8.0,27052.498508341927,3092.8921605589653,108.2114812048404,161991.62287918228,7.406521340049493 -56,2004.0,9.0,12147.51668472808,5644.8624678749775,102.05270734722872,70422.82319767919,7.919589689465275 -57,2004.0,10.0,62856.82817332221,177.43113637729812,83.99133279864397,75064.54471329555,8.753325870277257 -58,2004.0,11.0,2694.8255357290554,507.5872239804327,67.38479789528269,39940.50344501171,6.594788426996021 -59,2004.0,12.0,-1837.4272506179202,965.8900597980883,23.46909620799743,19949.80053418316,6.5940802815855815 -60,2005.0,1.0,1188.4168551732992,-193.2747216087103,-12.77247862897819,8154.464095578982,8.519614220804547 -61,2005.0,2.0,2567.6010699244885,1166.3045898787543,-34.89484703946587,25950.30984730929,9.288611721909449 -62,2005.0,3.0,-2311.663070159515,854.3023415048939,-39.0753407932502,95618.68451960932,10.0715742492485 -63,2005.0,4.0,29747.09413285207,252.28105734294604,-3.7396986216365855,126236.02746411851,5.913517064586767 -64,2005.0,5.0,44227.53205959769,6213.1158892959975,33.831151639497556,198380.80631193318,4.730283224466011 -65,2005.0,6.0,38697.70889745261,1846.4695750425778,71.38975243989992,188472.26852053835,6.135036173070745 -66,2005.0,7.0,35973.1227275528,5883.630527928639,79.00663511202059,205291.8071280922,7.790067742428966 -67,2005.0,8.0,29996.9539587417,26195.945028982314,90.67145002060995,147176.1848854277,8.175805009220179 -68,2005.0,9.0,13591.605271839846,41612.40850473672,94.21708851444727,50856.99722254962,7.041500386930483 -69,2005.0,10.0,59994.112939405575,36611.182514800945,79.85365641432426,60677.4026445458,6.4097095853524975 -70,2005.0,11.0,333.8498586340526,945.2966865657197,50.76660911752175,30583.87155903402,5.042557492611612 -71,2005.0,12.0,-2428.4161892297243,-1601.6660667873891,22.631063943929764,-5375.389526544714,6.862295111753812 -72,2006.0,1.0,-4241.962191672634,1988.9714230737295,-23.89613016012517,4111.257027055666,7.61229161626785 -73,2006.0,2.0,-1086.9280938367074,1895.8123349118168,-37.230425352911546,30484.661100599482,9.6618433746372 -74,2006.0,3.0,-1949.0958017472128,34.64274830670158,-14.258022260089007,71109.46992600738,9.843040625582985 -75,2006.0,4.0,21933.523858135635,389.17868946535555,-2.876324061582375,146706.61776025017,8.982236954077948 -76,2006.0,5.0,44413.34567715023,20114.70888358711,26.27801531465632,170154.66780193633,7.2064401716683655 -77,2006.0,6.0,36150.29442247974,1333.6304932035032,69.48318667934002,189408.2999015395,6.59023651213693 -78,2006.0,7.0,41031.63705271021,19413.93454840769,100.09789667013004,152553.6037879404,6.684138923436845 -79,2006.0,8.0,18509.32466447001,17456.270895900027,104.31814973090664,102268.60246202901,8.842035532739517 -80,2006.0,9.0,16680.88252448194,9894.543246865373,98.9741829857796,103968.21783508343,8.450248504571986 -81,2006.0,10.0,66241.44110002105,1597.4785723278753,88.7123302037177,88318.01320780115,8.101950908635851 -82,2006.0,11.0,1888.7279532639727,3562.6934788456115,63.59151669925949,32374.64195919817,6.027031436572596 -83,2006.0,12.0,2438.768812699071,-723.0750302420495,23.178369198433135,19464.719824683496,7.048047819241493 -84,2007.0,1.0,5286.80317842756,-1250.765655617463,-5.143750960968401,28386.613418522375,9.043457676550494 -85,2007.0,2.0,-2634.0757570605792,6981.921798840016,-36.518751782421,20767.142191170635,9.129920800624875 -86,2007.0,3.0,-778.2969169360591,14072.252814487576,-25.540177347031758,63114.45008401891,8.472129672747544 -87,2007.0,4.0,24175.35888523235,6917.0443175578475,-5.848898091806185,111397.01728577046,8.509213254491387 -88,2007.0,5.0,48507.69807158675,2419.1554979551534,17.40607132315951,196653.2677257556,6.677624098976556 -89,2007.0,6.0,39002.113505178524,61912.113929418,57.757563890243375,155132.34527764132,6.499690216328983 -90,2007.0,7.0,43386.22798082132,22915.777461155514,72.48153979809969,140641.8469447172,7.037589397440038 -91,2007.0,8.0,18505.705940808843,18032.345085535813,92.3862022373718,119936.16677380874,5.964429353258431 -92,2007.0,9.0,18626.59775992106,7393.555304767568,106.60888226780719,112765.37575450233,8.292196004292466 -93,2007.0,10.0,69250.2740391088,11589.257369704515,94.06039532841793,63793.81553459124,6.790905179242136 -94,2007.0,11.0,2126.5089316724616,774.6833091358467,50.2801071162236,49703.990023369566,4.735120648874786 -95,2007.0,12.0,2624.5929655388577,1363.053164378343,9.297418002981779,5712.357113451986,6.437817723286343 -96,2008.0,1.0,-1085.627433125711,1282.5562542297628,-13.057332169695282,13648.458797360994,7.72249025627024 -97,2008.0,2.0,11.310804390573226,-668.2756909523197,-33.77939252737689,18550.77691796741,9.637818089205757 -98,2008.0,3.0,-5680.777944628116,1073.5662967173464,-47.2507690268659,95116.5437787386,9.859153696774962 -99,2008.0,4.0,19130.19244236173,5166.719682669117,-13.534469535046421,97974.8222556836,5.9496537136487655 -100,2008.0,5.0,44819.48241255179,4044.571324357239,44.97925467257457,154944.24136178935,6.472687690516723 -101,2008.0,6.0,35428.455801782235,32497.022729088243,72.43905055980267,151322.36657912334,4.530277486444255 -102,2008.0,7.0,40974.46336874684,49363.65814270641,87.74051678914594,146785.89303804762,8.27370512672119 -103,2008.0,8.0,16411.223385378442,46637.25774008037,92.73407146476231,145682.06086976788,7.8878480284230434 -104,2008.0,9.0,19481.264495519732,10470.056689327728,84.70683526607753,112176.68806436479,8.39833549216765 -105,2008.0,10.0,62333.39349721516,2261.700426227582,75.8672122944394,74254.90862144224,7.224207277861213 -106,2008.0,11.0,-353.5209701087442,2208.610406742032,68.45159253533372,37262.198159861335,6.361772457431419 -107,2008.0,12.0,966.6856431182724,-1620.2914003767658,27.255008917988654,37869.69104007152,6.277397461159213 -108,2009.0,1.0,-655.3639106487572,780.6565008230975,-4.835925279202606,12507.463481194107,8.743254027584157 -109,2009.0,2.0,1369.8224590394357,1614.9212448886774,-40.7329958602215,28834.734022625213,7.889937479993307 -110,2009.0,3.0,-1486.472999306016,2732.6706763088646,-32.73318265624413,74887.18092232785,8.901247524850215 -111,2009.0,4.0,21470.89782175115,4344.190557521304,2.315369012801655,136379.23992991654,8.318971724064033 -112,2009.0,5.0,47715.2366651578,10012.45262417666,39.86682887020931,188489.7289213093,6.076914415057295 -113,2009.0,6.0,37296.40130544444,-1054.210628149947,69.36807998062565,205430.11125041565,5.298112450497163 -114,2009.0,7.0,44368.53334824093,18204.55287806804,87.85972504794132,181242.4893472964,5.765321210676283 -115,2009.0,8.0,21776.22666815891,29526.238528546917,102.82211854048221,143943.2162135526,8.61879705029429 -116,2009.0,9.0,16518.656962537465,27909.546480589284,98.59994465712286,103161.24886232252,8.312661481352656 -117,2009.0,10.0,68030.67642410718,1201.3658749240503,82.58643222974953,123972.96818869571,6.32589742763981 -118,2009.0,11.0,3249.272285347455,3018.673413934741,58.76511091316738,28904.424934997536,4.3701556392022205 -119,2009.0,12.0,-1008.1730505555632,1213.5550186456435,-2.917951133717521,14370.428668641951,6.303434855998864 -120,2010.0,1.0,-1877.1303316496876,-68.80599257813007,-38.567907943992495,4252.970622204102,7.518031394919713 -121,2010.0,2.0,-289.23845387735895,127.36122063830487,-53.11066326283798,30528.726278003676,9.717620965363217 -122,2010.0,3.0,47.233330125484905,1851.5923363389295,-49.14773893701886,64652.67513143492,8.565411433403302 -123,2010.0,4.0,16508.02305949704,2872.221393487277,-35.534951828968396,95470.96865836064,8.440161221310833 -124,2010.0,5.0,44383.649832123425,33379.20727109889,21.556445963607324,178783.36703438056,7.673115647067086 -125,2010.0,6.0,32671.925290229112,8115.260231012694,46.821036210231185,200169.2574306471,4.764505404142189 -126,2010.0,7.0,35518.83712624898,4333.380791113299,69.00708591419983,210247.51013260792,4.75709429534774 -127,2010.0,8.0,19820.142394608527,2469.616767342318,100.78171684797967,154095.57544798532,7.093452422639618 -128,2010.0,9.0,18230.03719830332,42738.942856190646,98.346559028373,66747.29465349037,8.547289603261051 -129,2010.0,10.0,63557.518388148615,610.661944084123,77.67868617597755,77287.1689394028,8.452169041296592 -130,2010.0,11.0,2590.2962155589526,-832.6704901275779,56.31660775020848,50080.2872436964,6.160406444378711 -131,2010.0,12.0,-3498.0775339449497,410.2621652100487,14.94350348869481,43429.8734653619,6.569295121108694 -132,2011.0,1.0,-1501.8648014613261,1032.2416027347854,-15.956064879932322,17957.647510815208,9.17904455782119 -133,2011.0,2.0,2348.8581771109425,337.05662691646233,-35.269112686796944,51731.900916434766,9.254427411607566 -134,2011.0,3.0,-939.3468170978897,-772.6078885507455,-41.73241558697452,57922.67239781304,9.816155235523718 -135,2011.0,4.0,19927.218233963817,-2091.1144661245417,-17.92181257434094,140178.330796648,7.4973263978924045 -136,2011.0,5.0,43503.34396678912,828.5930643600316,32.80795087175214,187088.05126243414,6.514878877869967 -137,2011.0,6.0,34512.8495879224,7589.479188185907,54.71749355520963,186112.50751332738,5.6746406365859094 -138,2011.0,7.0,40271.85338684304,13024.589573095858,97.403246972767,188028.08512243975,6.927351611418518 -139,2011.0,8.0,19487.091059917675,15211.56897752872,115.98835531305701,165327.82230796816,8.436423454932454 -140,2011.0,9.0,16622.280740595907,3693.1996220511537,97.53307266697877,109713.56395205963,9.83772503353134 -141,2011.0,10.0,64582.20810684322,4828.738058576011,71.92752470547615,69752.30234630927,9.053703069179802 -142,2011.0,11.0,1097.4450392627907,129.1969553968262,46.145019018195036,51135.73463546232,4.898064303032206 -143,2011.0,12.0,-3788.033745162288,1134.6497074646368,27.74534499323534,10001.192092883994,5.968282123570321 -144,2012.0,1.0,733.1669847270159,87.90838348719294,-17.44991732293061,20204.10819276398,7.308532638981085 -145,2012.0,2.0,2146.5671490167315,35.5987811719403,-38.98669362783654,39810.9559599614,11.10344027730044 -146,2012.0,3.0,3702.8416118888167,-272.62584585064326,-28.58109700021929,52052.50515761066,8.488172438553056 -147,2012.0,4.0,20507.060940477277,1230.732648330313,-9.705483438938876,153707.5640660956,8.785601037290409 -148,2012.0,5.0,43884.76048726483,14900.208091036542,33.310977667799435,191081.80202363466,7.1940469640393765 -149,2012.0,6.0,35108.13881873079,30601.8663155818,52.438855171184095,164521.091413936,5.424823696551005 -150,2012.0,7.0,40221.45453916907,73617.6902113285,77.42722233047077,164946.66385776142,6.998278356202916 -151,2012.0,8.0,15880.42636740758,29198.706110531475,99.20768235857462,140763.4324750516,6.938873102182011 -152,2012.0,9.0,16717.848793592046,15307.50724607987,83.72380518672787,112948.23771030935,6.640295215749015 -153,2012.0,10.0,62563.007914927526,1367.2082193695178,84.19895628493717,85021.37534078487,8.294988250785101 -154,2012.0,11.0,-364.95803877053686,2315.814756657346,51.10990617251995,41377.28106614519,5.280218477860024 -155,2012.0,12.0,-1748.668090070713,-2.6903159931899396,10.007382636638058,31511.679737666276,6.467215750853944 -156,2013.0,1.0,-490.8592582732726,-1171.8918739419605,-15.327220770380737,26696.547739282796,8.602301354433774 -157,2013.0,2.0,-353.7886866949736,-636.9870229249268,-37.59918730781301,21469.040783649456,9.375284727077801 -158,2013.0,3.0,1921.1092964451693,509.2549029193324,-31.49233966606935,94495.7532813493,8.25650905062599 -159,2013.0,4.0,20416.841284215363,285.86256978343397,-3.057805412870278,148632.3574955669,7.415512709291966 -160,2013.0,5.0,49082.49226627464,2148.5511364202534,54.74383134744955,191524.76511707317,5.448752163960278 -161,2013.0,6.0,40676.75574307476,19701.88147395351,63.51534230804749,147607.81678283843,5.063722733588346 -162,2013.0,7.0,37959.38783902868,34047.23286840756,71.84491087562141,147871.8164192226,5.741662942185496 -163,2013.0,8.0,22202.03080639127,2772.5605739958255,97.74957136445936,132843.0165650086,6.005546443510531 -164,2013.0,9.0,17009.523258680198,14434.268878731551,96.85476855075204,101390.24476343615,7.77295594017048 -165,2013.0,10.0,67439.3670814709,-2128.4903732998305,85.05510259890491,84001.00949620719,6.875603032630593 -166,2013.0,11.0,2041.1411849819679,-109.58002675564467,56.55638014377832,37757.080908136675,4.7499543826277755 -167,2013.0,12.0,1205.0893084816753,-950.0968910682695,22.238829409099196,-14047.789214458304,6.425846762648353 +Year,Month,Irrigation,Rainfall,Tem,Evaporation,Depth +2000,1,1992.5083196719,314.1957169733,-19.295407758,12040.4476394335,8.972728964 +2000,2,-2042.2517088609,-1633.7667748126,-38.4498364209,18045.5168256601,8.8372379517 +2000,3,-1374.45069054,868.2637115245,-36.9623765139,90248.5986880446,10.7168385148 +2000,4,29951.3265990933,309.8571424647,-13.1656454124,141672.950996956,8.904409599 +2000,5,43748.3711548337,-291.3250047579,19.6021026569,188789.213347986,6.8581773986 +2000,6,34502.6486603004,17799.0968336829,57.7370337131,149223.642080642,5.2845146329 +2000,7,30296.9873863791,14179.7310546686,91.1360627559,173045.99634606,6.0969095283 +2000,8,19459.0051582282,29671.9912945174,106.0619435675,125595.394087347,7.8860077628 +2000,9,17758.6975818984,21215.1823079736,110.7978477205,93648.5653302581,7.9172426387 +2000,10,62539.8414178833,4294.4213316051,86.9145269101,55423.3544036544,7.5450815888 +2000,11,235.967332703,529.2638159455,59.7571213723,32169.4952479278,4.4325341631 +2000,12,2605.7856577036,738.6209819721,14.319977756,20927.4646969387,7.3245968878 +2001,1,-1446.3754864288,457.590908923,-11.6944352737,16903.9008100765,7.5467988992 +2001,2,1994.960901874,78.495377589,-32.9582290949,43792.8401055522,8.8359511074 +2001,3,-267.3643645519,-577.8149148489,-44.3692361598,83874.316059848,10.2077398958 +2001,4,26117.1536851372,156.3112109546,-5.7425824914,131993.693718587,8.4048502044 +2001,5,44438.8272441019,7482.3624327083,34.8285539136,187135.718846405,6.6102531838 +2001,6,40444.5063014989,1747.6364483683,68.8225044018,184055.273477082,6.0819109676 +2001,7,40209.0405479997,8124.129399824,78.5143052622,188270.500152369,7.3103318927 +2001,8,23856.4602065489,26413.0362767538,100.759263918,158303.293193421,6.9534469533 +2001,9,15448.5993112436,41288.3846495247,90.3775469511,90812.4456162747,7.2820627349 +2001,10,64213.7344128649,36381.0620477837,77.8568838742,65292.5713181995,7.7141083027 +2001,11,-1613.0641490158,382.1082475746,48.0512566729,41973.584633257,7.3394374677 +2001,12,-600.5262692763,165.7094367505,19.7482066789,9449.1667292834,7.2133820599 +2002,1,1014.7620170268,-214.1443198758,-15.5832115562,38770.3662096595,8.7714648667 +2002,2,-756.8050526192,769.3649758967,-24.0603398165,38865.7208288432,9.0372763717 +2002,3,-2182.7253705371,3454.3186301167,-2.0376116995,80372.9199556001,9.3197329858 +2002,4,25396.1458187972,11157.5283660833,14.6646376991,136223.773754898,6.0079325001 +2002,5,37102.9616992109,24694.2961065592,13.4495850367,131044.917270516,4.2630808858 +2002,6,40234.9691689304,53415.0948522383,38.3047052931,142136.464950778,4.6419067361 +2002,7,42739.5324691317,16110.2434594719,95.6419438562,140852.810807609,5.0832563496 +2002,8,24747.4193208903,3222.8981484282,102.8578298589,144341.865884577,6.0206484119 +2002,9,14298.2763540136,6217.5868866187,98.773476424,93394.0088531071,8.4178573982 +2002,10,61894.0851518047,-190.0557246785,91.4465661896,70301.2762720597,6.7635269011 +2002,11,-865.5967647891,-1050.5053853096,67.8969387849,29663.145500379,5.868084999 +2002,12,3380.2264775865,2024.1566560343,26.4162820183,10924.8154850659,6.5219879718 +2003,1,-386.4503653792,896.1226862132,-12.3658294534,24884.9389507601,9.100252177 +2003,2,1557.7950405133,241.0719972437,-29.0865412199,30745.2287503802,9.1648896612 +2003,3,650.3164758386,2658.4287558479,-28.8135959502,55239.448750046,9.718686127 +2003,4,13394.0070559086,7004.2807028833,0.5013660454,137237.861044995,7.203485342 +2003,5,33911.9167946654,10094.1076700016,43.8572289702,169825.01753652,6.3415744691 +2003,6,21533.3530476802,1801.0880057285,72.3854747144,157660.469586514,6.1825390601 +2003,7,37725.0376329477,41187.2889160595,84.1265373016,143046.516829244,7.5462799977 +2003,8,13699.7352306785,10833.4909793159,89.5893857661,141965.598874551,8.2421210066 +2003,9,9978.0099721629,71274.7476319909,93.952103771,107087.085814857,9.91492158 +2003,10,57565.7322977106,2245.7232658376,84.7504765573,73721.7175061161,6.8986012184 +2003,11,2104.3251052962,-688.0205005814,47.4993730858,42009.9453231635,6.1908231216 +2003,12,-3800.045422625,-675.1317978651,3.8680187888,22007.6853877412,6.7358412773 +2004,1,2086.2142577479,1014.0117373894,-18.9368128305,40137.6946586243,9.0026294949 +2004,2,2602.0320557557,64.2927011031,-28.6506700652,45511.5986683673,8.9124447037 +2004,3,2607.4575419277,2920.8152751269,4.3002725762,86881.0671414217,8.3773358986 +2004,4,30247.7097798502,11588.2504945039,5.1650030987,126272.358305815,7.5391370342 +2004,5,36500.2164145915,24567.0820912928,17.523411113,137497.901388769,5.5749822377 +2004,6,40216.9582150654,53622.3914122528,31.8578154274,159777.477389197,4.7412483249 +2004,7,44234.0442499885,16017.7407660594,87.9881978603,142250.302255822,5.7880415424 +2004,8,26429.4837362526,3032.1676788145,109.5552108576,150812.144558594,5.6830398478 +2004,9,17653.4709589239,7921.8204937788,95.1165548783,88714.1885122467,8.4739868368 +2004,10,61542.4921065865,-1956.0525356638,83.2737058279,69006.5725073486,7.4165250571 +2004,11,36.6134202471,375.9965101976,70.5831069354,50624.7207739744,4.8386637862 +2004,12,566.8345209991,2295.0177818814,24.7191836218,25473.7540558068,7.2194637112 +2005,1,-3822.7516415472,-269.118333342,-11.1668030912,34991.0142469635,10.0489238052 +2005,2,-478.5741823872,-740.4862052638,-41.8258276737,36191.346610205,9.1174074249 +2005,3,2799.0550332015,476.4050785832,-44.2945982171,94786.7810525021,9.4844878526 +2005,4,29287.1921667186,1585.6983177999,-6.1786769353,144571.282654031,8.9805315125 +2005,5,43635.8172255169,5385.6761171638,27.4260701646,179526.719378807,4.9065506861 +2005,6,38767.9532063676,3074.1477008705,67.4911123598,200064.14810238,5.7893406162 +2005,7,36898.2934518845,7315.0385396565,75.3836548388,183654.375943701,7.2543564682 +2005,8,27775.4765135801,27297.3044460976,89.5734226638,151187.565655289,8.9121817993 +2005,9,14098.3139874008,40482.8112304931,96.8313331372,85210.057303944,7.3927618458 +2005,10,58558.6405662779,36067.9426784126,77.5209698405,55957.1688862193,7.396345879 +2005,11,-1526.4067351494,-500.7574263379,47.9846285858,27459.3562322097,4.8347087281 +2005,12,-2384.5975872833,-955.6499553698,16.434862517,5253.6811570786,7.265792525 +2006,1,1567.0140135536,1151.0120327973,-20.7764078078,15208.9585318538,9.213940087 +2006,2,2913.6113992749,2237.2749740479,-34.8211671529,41474.5565895835,9.4822795584 +2006,3,1364.2481336267,-539.7593045133,-4.7837468176,70721.6145288348,10.4681292384 +2006,4,19901.1900571259,401.7360131679,-7.4301816306,134583.034034957,8.7084561594 +2006,5,47418.4063191555,17712.058979923,16.8583771074,178743.129218957,5.8765688575 +2006,6,35118.3770144947,581.5465176179,71.890703121,166218.51424835,5.4374069985 +2006,7,38639.1467694101,21044.8809130651,96.1165280213,147054.737379063,6.2034790388 +2006,8,20824.3935742376,17345.5866955182,106.6081167304,118437.967687395,6.5392017222 +2006,9,16592.3708190747,9395.8290645353,103.4509679917,100884.217353987,9.1829937693 +2006,10,59893.6372421636,1075.9417619642,85.0284281428,88809.9542884777,8.1613393083 +2006,11,450.6792621476,3993.0308642043,64.6761010142,54368.3063440379,4.5093902331 +2006,12,1636.6951413217,-269.1058091842,21.7779008449,9427.0795085631,6.3615198295 +2007,1,-1949.3823617708,-613.7695950016,-9.9274563559,11037.3165455179,9.7072859282 +2007,2,-1102.7275340532,6915.6950115401,-41.5785918665,38921.433102614,9.3888818492 +2007,3,-1328.6199157601,15140.5571259182,-26.1639986773,58800.46085095,8.7392711075 +2007,4,22066.1764420817,4611.0302377563,-6.8326942472,131650.151883966,7.8428531611 +2007,5,48294.8972788041,557.6491793652,14.0424328046,192546.753305473,7.6120575187 +2007,6,38201.0941112011,61360.2621782378,54.4707773583,159112.097351731,6.5865266032 +2007,7,43577.9169831785,23377.9328093385,79.0143582462,135487.718649246,5.4125839723 +2007,8,22387.8184977697,17639.4606527731,95.2976035666,138453.329881849,8.0884594137 +2007,9,16455.9120262078,8327.9144964874,103.6746016514,100811.637258969,7.2745707204 +2007,10,69045.5356580916,12600.584343208,93.5948080771,71999.6992130972,6.7300876177 +2007,11,1764.920909494,1407.5788180452,60.1161104802,39895.8722576806,3.9499619889 +2007,12,-1328.6644638271,-210.5224779435,3.1001191414,30203.3060668208,6.2708627671 +2008,1,-1350.0320982345,3249.250766653,-9.5890238558,21.3084869433,7.3096706004 +2008,2,-1786.7360085808,273.5099143006,-32.9446339333,17702.7933414733,8.2673016384 +2008,3,620.9043586546,-270.7739529231,-39.6899915103,73607.5905421309,9.5670900484 +2008,4,20856.1771359163,3146.4328390487,-11.1111667718,115815.870531152,8.5797313863 +2008,5,48507.6564602097,4603.5040817133,38.2975783097,184503.383801004,5.4766284548 +2008,6,32320.2718047226,31213.3180879014,66.7717880508,151502.754940086,5.273589638 +2008,7,37320.3390553108,50614.6737924457,85.0058001322,144649.351474712,6.95911323 +2008,8,18199.504489151,48386.5761062642,90.8480076578,129316.651920114,6.708450655 +2008,9,20391.6375385559,10580.62437324,92.1797829335,108635.638152625,7.3945263069 +2008,10,58444.2146693381,2099.3563299519,78.6830414204,94122.764504983,6.8888233428 +2008,11,3185.2189538728,1121.2413835035,78.3066422298,60397.5914525808,5.6778711418 +2008,12,1817.7912010928,-305.9038928113,34.4921687043,33321.8397371101,6.8578472569 +2009,1,-1239.4607399782,447.1989880709,-4.2538746605,12771.0282184424,7.9649197838 +2009,2,1384.5773495339,2285.6514062288,-35.3629320795,35150.6137938001,8.5362422017 +2009,3,-3694.4681882967,3538.3493277784,-23.9588452957,52207.7113327517,8.3072500889 +2009,4,20362.1631904287,3023.1583772773,1.6637355677,117521.497351571,7.0187079798 +2009,5,50593.6620445755,10397.6296840017,44.4562936861,178431.410097219,4.5029332386 +2009,6,39496.6966297038,1103.6091603384,68.4440664534,199772.892337299,6.2849465083 +2009,7,43063.2203963758,16971.7448318511,89.502913534,188137.937088275,6.9081535976 +2009,8,22179.077838634,28799.5500957659,108.6809709063,156495.206904778,6.5459771819 +2009,9,20277.105811496,29843.8851236642,89.2721959082,100934.093582542,7.8622919891 +2009,10,67470.522894461,554.6146432594,84.5529362875,117297.542083953,7.6988466176 +2009,11,5358.255415246,5440.5919569377,69.1393389741,23380.7116971716,5.1541271415 +2009,12,-210.6269713507,-360.3685495956,-4.8166265881,24665.9656176214,6.5616755275 +2010,1,-3342.697254843,1284.8149484832,-37.4415721765,30241.1465269572,8.2024262882 +2010,2,-452.764277594,744.177282546,-57.7914762143,49211.2689722823,9.4745240103 +2010,3,909.9920247126,3338.1093007488,-43.4529371602,66084.8092526247,8.7060000246 +2010,4,17889.3688406509,1543.3575281812,-33.6275363251,83724.4603660708,8.0760718308 +2010,5,45018.9569561923,34561.0464100109,21.8435753334,163531.079424784,4.6677119702 +2010,6,29744.5416891046,9370.3123240047,49.9679099832,196893.20739719,4.7737786968 +2010,7,37866.7682664827,6363.628313858,70.7218208922,190326.285888571,7.0881596334 +2010,8,14851.0026421879,2103.2241861837,97.4570630129,150863.734618918,8.3356989488 +2010,9,14391.0277938624,40134.8679810422,102.4820452202,89967.6839468569,8.8852705717 +2010,10,62627.9895315413,1867.1358941553,83.3924029748,60433.5690272789,8.7453597732 +2010,11,1415.8603595977,339.5991879025,54.6712121297,47464.8595064449,5.319094786 +2010,12,-696.4824898257,-1566.5294139293,9.8216238936,36627.2931313552,6.308273918 +2011,1,-983.416942065,2492.0253975684,-17.7596422889,14397.6728898769,7.6475898738 +2011,2,-2008.67431919,526.2270719924,-24.4021423157,15744.9403465722,9.1615206376 +2011,3,-2315.468761431,-705.1343620344,-52.9468240718,52551.880586609,10.0513610431 +2011,4,16535.2059893341,387.8472438606,-15.3226199683,137014.759041677,7.8917952873 +2011,5,46778.498956385,2735.0318816074,18.1755182623,189061.38480658,7.202117884 +2011,6,33916.0645445093,9109.9666718717,68.5778968532,191397.405111407,7.3181654511 +2011,7,40324.6320967434,12553.1054928233,94.705649525,195249.234866651,6.473298021 +2011,8,15886.3752995587,12229.2728686363,108.2367538651,169191.907487504,7.3519418885 +2011,9,17289.7121073133,3350.8047659506,92.9929231079,121092.696797974,7.7416124147 +2011,10,64553.8805496607,5184.2156795966,73.9472321028,74807.3549096308,8.2582967962 +2011,11,3099.6128648317,-693.7528249307,56.336108519,47013.9946411057,3.9749151445 +2011,12,-1482.5665107684,-1490.6920639721,27.298843012,18434.8071640145,6.2398553094 +2012,1,2648.9282565448,977.2033118444,-14.9177599049,10557.8926792309,9.1600318335 +2012,2,-1395.3402643954,-14.47669025,-48.1206666417,32169.1793952093,8.1842023323 +2012,3,744.8559974669,86.2927021337,-36.4061958197,73041.489636775,9.7357233547 +2012,4,20946.7633883001,-512.8763798724,-1.7524697111,152460.562126691,8.0061040867 +2012,5,44585.2222314331,15626.91276034,41.2707165624,173275.839222574,5.589704837 +2012,6,33854.5303935094,30466.5672038557,60.4637337002,178672.678043996,4.6394531333 +2012,7,40119.822845255,74516.3708826216,77.479703859,164117.527661127,5.7473437607 +2012,8,23447.5727963349,29570.8960473694,90.6072636124,145542.540005518,6.4308159126 +2012,9,15075.6051431687,14204.7957822182,88.7135554338,88696.293001768,8.7294292494 +2012,10,62843.3572745977,-404.3974302493,80.6597494508,98133.7890383517,7.9329949439 +2012,11,1214.3119584021,-446.4124345215,39.9731689583,40253.0140927485,5.793181429 +2012,12,891.0915264901,-374.2199526424,3.2885555308,15117.6546529998,5.420527625 +2013,1,-2342.067247293,-407.3789982866,-6.6294774919,14439.2247424584,8.2856885456 +2013,2,-1218.9978343601,-889.7145877889,-44.1710267156,26722.278465606,9.032417103 +2013,3,-1183.3063329005,479.3456347608,-29.0699469078,79055.2834668528,9.1947298699 +2013,4,27964.0020483829,1246.1037720473,-0.9600276419,118632.937151314,8.9618038092 +2013,5,48357.5892469551,3891.6885537972,56.2357845017,205855.274427051,5.1941795566 +2013,6,37359.7170253037,22072.5297461547,69.3827486111,152549.568057488,6.7913924531 +2013,7,41337.5757739085,32804.2742369428,72.5544526249,161613.873657892,6.8242571638 +2013,8,19170.8498326554,1711.2395646448,92.1502631409,133324.710105294,5.3346744476 +2013,9,17390.1471218854,14636.8455336336,96.1909503257,99089.0072254957,8.9661012989 +2013,10,68788.714885654,-251.937762411,87.4205022764,81966.0912259647,8.8800850284 +2013,11,-1052.8417731971,-243.5652595827,58.5260443976,31874.8378428709,4.6790693867 +2013,12,510.8054866447,1294.5554983925,18.4621176651,11562.8268159789,5.9895643152 diff --git a/demo.py b/demo.py deleted file mode 100644 index 6ec8e28..0000000 --- a/demo.py +++ /dev/null @@ -1,14 +0,0 @@ -from models import LSTM_FC_Model - - -X_test = None -model = LSTM_FC_Model - -print('Loading model......') -model.load_model_params('checkpoints/LSTM_FC_10000') - -print('Predicting......') -Y_output = model.predict(X_test) - -print('Done!') - diff --git a/layers.py b/layers.py index d7af593..2f6bc73 100755 --- a/layers.py +++ b/layers.py @@ -9,6 +9,7 @@ class NNLayer(object): + def __init__(self): self.params = [] @@ -186,6 +187,5 @@ def _dropout(self, X, dropout_prob=0.0): retain_prob = 1 - dropout_prob srng = RandomStreams(seed=1234) X *= srng.binomial(X.shape, p=retain_prob, dtype=theano.config.floatX) - if dropout_prob != 0.0: - X *= retain_prob + X /= retain_prob return X diff --git a/models.py b/models.py index faffa9a..2dc4e48 100755 --- a/models.py +++ b/models.py @@ -26,6 +26,8 @@ def __init__(self, num_input=5, num_hidden=[64, 64], num_output=1, clip_at=0.0, Returns: output (water table depth in this study) """ + print('Build LSTM_FC Model......') + X = T.fmatrix() Y = T.fmatrix() learning_rate = T.fscalar() @@ -42,34 +44,26 @@ def __init__(self, num_input=5, num_hidden=[64, 64], num_output=1, clip_at=0.0, prev_layer = inputs self.layers = [inputs] - # one hidden lstm layer - if isinstance(num_hidden, int): - lstm = LSTMLayer(num_prev, num_hidden, input_layers=[prev_layer], name="lstm") - num_prev = num_hidden + + for i, num_curr in enumerate(num_hidden): + lstm = LSTMLayer(num_prev, num_curr, input_layers=[prev_layer], name="lstm{0}".format(i + 1)) + + num_prev = num_curr prev_layer = lstm self.layers.append(prev_layer) prev_layer = DropoutLayer(prev_layer, dropout_prob) self.layers.append(prev_layer) - # more than one hidden lstm layer - if isinstance(num_hidden, list): - for i, num_curr in enumerate(num_hidden): - lstm = LSTMLayer(num_prev, num_curr, input_layers=[prev_layer], name="lstm{0}".format(i + 1)) - - num_prev = num_curr - prev_layer = lstm - self.layers.append(prev_layer) - prev_layer = DropoutLayer(prev_layer, dropout_prob) - self.layers.append(prev_layer) - fc = FullyConnectedLayer(num_prev, num_output, input_layers=[prev_layer], name="yhat") self.layers.append(fc) Y_hat = fc.output() - loss = T.sum((Y - Y_hat) ** 2) + 0.5 * T.sum(fc.W_yh * fc.W_yh) + loss = T.sum((Y - Y_hat) ** 2) params = get_params(self.layers) - updates, grads = adam(loss, params, learning_rate) + # You can also use adam optimization method + updates, grads = sgd(loss, params, learning_rate) + # updates, grads = adam(loss, params, learning_rate) self.train_func = theano.function([X, Y, learning_rate, dropout_prob], loss, updates=updates, allow_input_downcast=True) @@ -130,6 +124,8 @@ def __init__(self, num_input=256, num_hidden=[64,64], num_output=1, clip_at=0.0, Returns: output (water table depth in this study) """ + print('Build FFNN Model......') + X = T.fmatrix() Y = T.fmatrix() learning_rate = T.fscalar() @@ -219,6 +215,8 @@ class Double_LSTM_Model: output (water table depth in this study) """ def __init__(self, num_input=256, num_hidden=[64,64], num_output=1, clip_at=0.0, scale_norm=0.0): + print('Build Double_LSTM Model......') + X = T.fmatrix() Y = T.fmatrix() learning_rate = T.fscalar() diff --git a/process_data.py b/process_data.py deleted file mode 100644 index 6150102..0000000 --- a/process_data.py +++ /dev/null @@ -1,36 +0,0 @@ -import pandas as pd -import numpy as np - -data = pd.read_csv("data_yigan.csv") - - -year = data['Year'].as_matrix().reshape(-1, 1) -month = data['Month'].as_matrix().reshape(-1, 1) -irrigation = data['Irrigation'].as_matrix().reshape(-1, 1) -rainfall = data['Rainfall'].as_matrix().reshape(-1, 1) -tem = data['Tem'].as_matrix().reshape(-1, 1) -evaporation = data['Evaporation'].as_matrix().reshape(-1, 1) -depth = data['Depth'].as_matrix().reshape(-1, 1) -print(np.shape(rainfall)) - -irr_mean = np.mean(irrigation) / 10 -rf_mean = np.mean(rainfall) / 10 -tem_mean = np.mean(tem) / 10 -eva_mean = np.mean(evaporation) / 10 -dep_mean = np.mean(depth) / 10 - -irrigation += np.random.randn(168, 1) * irr_mean -rainfall += np.random.randn(168, 1) * rf_mean -tem += np.random.randn(168, 1) * tem_mean -evaporation += np.random.randn(168, 1) * eva_mean -depth += np.random.randn(168, 1) * dep_mean - -irrigation *= 4 -rainfall *= 4 -tem *= 4 -evaporation *= 4 -depth*= 4 - -DATA = np.concatenate([year, month, irrigation, rainfall, tem, evaporation, depth], axis=1) -to_data = pd.DataFrame(DATA, columns=['Year', 'Month', 'Irrigation', 'Rainfall', 'Tem', 'Evaporation', 'Depth']) -to_data.to_csv('demo.csv') diff --git a/run_model.py b/run_model.py index 7758040..1630510 100755 --- a/run_model.py +++ b/run_model.py @@ -5,82 +5,87 @@ from models import LSTM_FC_Model, FFNN_Model, Double_LSTM_Model -def LSTM_FC_pred_dep(X, Y, X_test=None, iters=20000, learning_rate=1e-4, dropout_prob=0.5): +def LSTM_FC_prediction(X, Y, X_test=None, iters=20000, learning_rate=1e-4, dropout_prob=0.5): if dropout_prob > 1. or dropout_prob < 0.: raise Exception('Dropout level must be in interval [0, 1]') - print("lr:", learning_rate) + print("learning rate:", learning_rate) print("dropout:", dropout_prob) print("iterations:", iters) - num_count = Y.shape[0] + num_month = Y.shape[0] input_shape = X.shape[1] - print('num_count:', num_count) - print('input_size:', input_shape) + print('num_month:', num_month) + print('variable size:', input_shape) model = LSTM_FC_Model(num_input=input_shape, num_hidden=[40], num_output=1) Loss = [] + print('Start training......') for iter in range(iters + 1): loss = model.fit(X, Y, learning_rate, dropout_prob) Loss.append(loss) - if iter % 100 == 0: + if iter % 1000 == 0: print("iteration: %s, loss: %s" % (iter, loss)) - if iter % 5000 == 0: - model.save_model_params('checkpoints/LSTM_FC_CKPT_{}'.format(str(iter))) + # Saving model + model.save_model_params('checkpoints/LSTM_FC_CKPT_') - print('starting predicting......') + print('Start predicting......') Y_test = model.predict(X_test) - print('predicting done!') + print('Done.') return Y_test -def FFNN_pred_dep(X, Y, X_test=None, iters=20000, learning_rate=1e-4, dropout_prob=0.5): - print ("lr:", learning_rate) +def FFNN_prediction(X, Y, X_test=None, iters=20000, learning_rate=1e-4, dropout_prob=0.5): + if dropout_prob > 1. or dropout_prob < 0.: + raise Exception('Dropout level must be in interval [0, 1]') + print ("learning_rate:", learning_rate) print ("dropout:", dropout_prob) print ("iterations:", iters) - num_count = Y.shape[0] + num_month = Y.shape[0] input_shape = X.shape[1] - print ('num_count:', num_count) - print ('input_size:', input_shape) + print('num_month:', num_month) + print('variable size:', input_shape) model = FFNN_Model(num_input=input_shape, num_hidden=[40], num_output=1) Loss = [] + print('Start training......') for iter in range(iters + 1): loss = model.fit(X, Y, learning_rate, dropout_prob) Loss.append(loss) - if iter % 100 == 0: + if iter % 1000 == 0: print("iteration: %s, loss: %s" % (iter, loss)) - if iter % 5000 == 0: - model.save_model_params('checkpoints/FFNN_CKPT_{}'.format(str(iter))) + model.save_model_params('checkpoints/FFNN_CKPT') - print('starting predicting......') + print('Start predicting......') Y_test = model.predict(X_test) - print('done!') + print('Done.') return Y_test -def DoubleLSTM_pred_dep(X, Y, X_test=None, iters=1000, learning_rate=1e-1, dropout_prob=0.5): - print("lr:", learning_rate) +def DoubleLSTM_prediction(X, Y, X_test=None, iters=1000, learning_rate=1e-1, dropout_prob=0.5): + if dropout_prob > 1. or dropout_prob < 0.: + raise Exception('Dropout level must be in interval [0, 1]') + print("learning_rate:", learning_rate) print("dropout:", dropout_prob) print("iterations:", iters) - num_count = Y.shape[0] + num_month = Y.shape[0] input_shape = X.shape[1] - print('num_count:', num_count) - print('input_size:', input_shape) + print('num_month:', num_month) + print('variable size:', input_shape) model = Double_LSTM_Model(num_input=input_shape, num_hidden=[40], num_output=1) Loss = [] + print('Start training......') for iter in range(iters + 1): loss = model.fit(X, Y, learning_rate, dropout_prob) Loss.append(loss) - if iter % 100 == 0: + if iter % 1000 == 0: print("iteration: %s, loss: %s" % (iter, loss)) - if iter % 5000 == 0: - model.save_model_params('checkpoints/Double_LSTM_CKPT_{}'.format(str(iter))) + model.save_model_params('checkpoints/Double_LSTM_CKPT') - print('starting predicting......') + print('Start predicting......') Y_test = model.predict(X_test) - print('predicting done!') + print('Done.') return Y_test diff --git a/tutorials.ipynb b/tutorials.ipynb new file mode 100644 index 0000000..d5d106f --- /dev/null +++ b/tutorials.ipynb @@ -0,0 +1,312 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "from sklearn.preprocessing import StandardScaler\n", + "from models import *\n", + "from sklearn.metrics import r2_score, mean_squared_error\n", + "import matplotlib.pyplot as plt\n", + "import numpy as np\n", + "\n", + "ss_X_dep = StandardScaler()\n", + "ss_y_dep = StandardScaler()\n", + "\n", + "def rmse(y1, y2):\n", + " return np.sqrt(mean_squared_error(y1, y2))" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "def LSTM_FC_prediction(X, Y, X_test=None, iters=20000, learning_rate=1e-4, dropout_prob=0.5):\n", + " if dropout_prob > 1. or dropout_prob < 0.:\n", + " raise Exception('Dropout level must be in interval [0, 1]')\n", + " print(\"learning rate:\", learning_rate)\n", + " print(\"dropout:\", dropout_prob)\n", + " print(\"iterations:\", iters)\n", + " num_month = Y.shape[0]\n", + " input_shape = X.shape[1]\n", + " print('num_month:', num_month)\n", + " print('variable size:', input_shape)\n", + " model = LSTM_FC_Model(num_input=input_shape, num_hidden=[40], num_output=1)\n", + "\n", + " Loss = []\n", + " print('Start training......')\n", + " for iter in range(iters + 1):\n", + " loss = model.fit(X, Y, learning_rate, dropout_prob)\n", + " Loss.append(loss)\n", + " if iter % 1000 == 0:\n", + " print(\"iteration: %s, loss: %s\" % (iter, loss))\n", + "\n", + " # Saving model\n", + " model.save_model_params('checkpoints/LSTM_FC_CKPT')\n", + "\n", + " print('Start predicting......')\n", + " Y_test = model.predict(X_test)\n", + " print('Done.')\n", + " return Y_test" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Train and validate LSTM_FC Model in dataset." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "X_train_dep shape (144, 5)\n", + "y_train_dep shape (144, 1)\n", + "X_test_dep shape (24, 5)\n", + "X_train_dep_std shape (144, 5)\n", + "y_train_dep_std shape (144, 1)\n", + "X_test_dep_std shape (168, 5)\n", + "learning rate: 0.0001\n", + "dropout: 0.5\n", + "iterations: 14000\n", + "num_month: 144\n", + "variable size: 5\n", + "Build LSTM_FC Model......\n" + ] + }, + { + "name": "stderr", + "output_type": "stream", + "text": [ + "WARNING (theano.tensor.blas): We did not find a dynamic library in the library_dir of the library we use for blas. If you use ATLAS, make sure to compile it with dynamics library.\n", + "WARNING (theano.tensor.blas): We did not find a dynamic library in the library_dir of the library we use for blas. If you use ATLAS, make sure to compile it with dynamics library.\n" + ] + }, + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Start training......\n", + "iteration: 0, loss: 371.0372087489539\n", + "iteration: 1000, loss: 134.1267558632824\n", + "iteration: 2000, loss: 90.1222537629338\n", + "iteration: 3000, loss: 77.63701763793665\n", + "iteration: 4000, loss: 66.41027382549018\n", + "iteration: 5000, loss: 51.01219022901203\n", + "iteration: 6000, loss: 47.164085877529835\n", + "iteration: 7000, loss: 51.9101562927477\n", + "iteration: 8000, loss: 41.27283749506584\n", + "iteration: 9000, loss: 43.21454358961822\n", + "iteration: 10000, loss: 43.26276443680515\n", + "iteration: 11000, loss: 38.1480625866977\n", + "iteration: 12000, loss: 34.393987462582146\n", + "iteration: 13000, loss: 31.22542563962359\n", + "iteration: 14000, loss: 28.820937470184624\n", + "Start predicting......\n", + "Done!\n" + ] + } + ], + "source": [ + "data = pd.read_csv('demo.csv')\n", + "Inputs = data.drop('Year', axis=1).drop('Depth', axis=1)\n", + "Outputs = data['Depth']\n", + "\n", + "Inputs = Inputs.as_matrix()\n", + "Outputs = Outputs.as_matrix().reshape(-1, 1)\n", + "\n", + "# First 12 years of data\n", + "X_train_dep = Inputs[0:144]\n", + "y_train_dep = Outputs[0:144]\n", + "\n", + "# Last 2 years of data\n", + "X_test_dep = Inputs[144:]\n", + "\n", + "print(\"X_train_dep shape\", X_train_dep.shape)\n", + "print(\"y_train_dep shape\", y_train_dep.shape)\n", + "print(\"X_test_dep shape\", X_test_dep.shape)\n", + "\n", + "X = np.concatenate([X_train_dep, X_test_dep], axis=0)\n", + "\n", + "# Standardization\n", + "X = ss_X_dep.fit_transform(X)\n", + "\n", + "# First 12 years of data\n", + "X_train_dep_std = X[0:144]\n", + "y_train_dep_std = ss_y_dep.fit_transform(y_train_dep)\n", + "\n", + "# All 14 years of data\n", + "X_test_dep_std = X\n", + "\n", + "print(\"X_train_dep_std shape\", X_train_dep_std.shape)\n", + "print(\"y_train_dep_std shape\", y_train_dep_std.shape)\n", + "print(\"X_test_dep_std shape\", X_test_dep_std.shape)\n", + "\n", + "y_pred_dep = LSTM_FC_prediction(X_train_dep_std, y_train_dep_std, X_test_dep_std, iters=14000, learning_rate=1e-4)\n", + "y_pred_dep = ss_y_dep.inverse_transform(y_pred_dep[144:])" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The value of R-squared of water table depth is 0.6699877233397822\n", + "The value of Root mean squared error of water table depth is 0.9449295363104716\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print('The value of R-squared of water table depth is ', r2_score(Outputs[144:], y_pred_dep))\n", + "print('The value of Root mean squared error of water table depth is ', rmse(Outputs[144:], y_pred_dep))\n", + "\n", + "# 红线是真实数据,绿线是预测数据\n", + "f, ax1 = plt.subplots(1, 1, sharex=True, figsize=(8, 6))\n", + "\n", + "ax1.plot(Outputs[144:], color=\"mediumblue\", linestyle=\"-\", marker=\"o\", linewidth=1.5, label=\"Measurements\")\n", + "ax1.plot(y_pred_dep, color=\"r\", linestyle=\"-\", marker=\"s\", linewidth=1.5, label=\"Proposed model\")\n", + "\n", + "ax1.set_title('Results', fontsize=16, fontweight='normal')\n", + "# ax1.spines['top'].set_visible(False)\n", + "# ax1.spines['right'].set_visible(False)\n", + "plt.legend(loc='upper right')\n", + "plt.xticks(fontsize=14,fontweight='normal')\n", + "plt.yticks(fontsize=14,fontweight='normal')\n", + "plt.xlabel('Time (Month)', fontsize=14)\n", + "plt.ylabel('Water table depth (m)', fontsize=14)\n", + "plt.xlim(0, 25)\n", + "\n", + "plt.show()" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Load Model parameters from checkpoints." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Build LSTM_FC Model......\n", + "Start loading model......\n", + "Model restored.\n", + "Start predicting......\n", + "Done.\n" + ] + } + ], + "source": [ + "model_restore = LSTM_FC_Model(num_input=5, num_hidden=[40], num_output=1)\n", + "# Loading model\n", + "print('Start loading model......')\n", + "model_restore.load_model_params('checkpoints/LSTM_FC_CKPT')\n", + "print('Model restored.')\n", + "print('Start predicting......')\n", + "y_pred_dep_ = model_restore.predict(X_test_dep_std)\n", + "y_pred_dep_ = ss_y_dep.inverse_transform(y_pred_dep_[144:])\n", + "print('Done.')" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "the value of R-squared of Evaporation is 0.6699877233397822\n", + "the value of Root mean squared error of Evaporation is 0.9449295363104716\n" + ] + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "print('the value of R-squared of Evaporation is ', r2_score(Outputs[144:], y_pred_dep_))\n", + "print('the value of Root mean squared error of Evaporation is ', rmse(Outputs[144:], y_pred_dep_))\n", + "\n", + "# 红线是真实数据,绿线是预测数据\n", + "f, ax1 = plt.subplots(1, 1, sharex=True, figsize=(8, 6))\n", + "\n", + "ax1.plot(Outputs[144:], color=\"mediumblue\", linestyle=\"-\", marker=\"o\", linewidth=1.5, label=\"Measurements\")\n", + "ax1.plot(y_pred_dep_, color=\"r\", linestyle=\"-\", marker=\"s\", linewidth=1.5, label=\"Proposed model\")\n", + "\n", + "ax1.set_title('Results', fontsize=16, fontweight='normal')\n", + "# ax1.spines['top'].set_visible(False)\n", + "# ax1.spines['right'].set_visible(False)\n", + "plt.legend(loc='upper right')\n", + "plt.xticks(fontsize=14,fontweight='normal')\n", + "plt.yticks(fontsize=14,fontweight='normal')\n", + "plt.xlabel('Time (Month)', fontsize=14)\n", + "plt.ylabel('Water table depth (m)', fontsize=14)\n", + "plt.xlim(0, 25)\n", + "\n", + "plt.show()" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.5.2" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/utils.py b/utils.py index 46d0646..c62e0a8 100644 --- a/utils.py +++ b/utils.py @@ -32,20 +32,18 @@ def get_params(layers): return params -def sgd(loss, params, learning_rate, clip_at=0.0, scale_norm=0.0): +def sgd(loss, params, learning_rate, clip_at=5.0, scale_norm=5.0): """ Stochastic Gradient Descent""" updates = OrderedDict() grads = T.grad(cost=loss, wrt=params) epsilon = 1e-8 - for p, g in zip(params, grads): - if clip_at > 0.0: - grad = clip(g, clip_at) - else: - grad = g - - if scale_norm > 0.0: - grad = scale(grad, scale_norm) + for p, grad in zip(params, grads): + # if clip_at > 0.0: + # grad = clip(grad, clip_at) + # + # if scale_norm > 0.0: + # grad = scale(grad, scale_norm) grad_norm = grad.norm(L=2) grad = (T.minimum(clip_at, grad_norm) / (grad_norm + epsilon)) * grad updates[p] = p - learning_rate * grad @@ -53,7 +51,7 @@ def sgd(loss, params, learning_rate, clip_at=0.0, scale_norm=0.0): return updates, grads -def adam(loss, params, learning_rate=1e-1, clip_at=0.0, scale_norm=0.0): +def adam(loss, params, learning_rate=1e-1, clip_at=5.0, scale_norm=5.0): updates = OrderedDict() grads = T.grad(loss, params) @@ -61,7 +59,7 @@ def adam(loss, params, learning_rate=1e-1, clip_at=0.0, scale_norm=0.0): beta2 = 0.995 epsilon = 1e-8 - for p, g in zip(params, grads): + for p, grad in zip(params, grads): c = theano.shared(np.zeros_like(p.get_value(borrow=True))) # if clip_at > 0.0: # grad = clip(g, clip_at) @@ -71,8 +69,8 @@ def adam(loss, params, learning_rate=1e-1, clip_at=0.0, scale_norm=0.0): # if scale_norm > 0.0: # grad = scale(grad, scale_norm) - grad_norm = g.norm(L=2) - grad = (T.minimum(scale_norm, grad_norm) / (grad_norm + epsilon)) * g + grad_norm = grad.norm(L=2) + grad = (T.minimum(clip_at, grad_norm) / (grad_norm + epsilon)) * grad m = c v = c