Machine Learning with PySpark through MLlib#

Tasks#

  1. Split data intro train and test

  1. Formulate three pipelines, train and evaluate them:

    a. Feature selection with the UnivariateFeatureSelector and the fpr strategy (least conservative).

    b. Same, with the fwe strategy (most conservative).

    c. Same, but doing PCA and using 3 components.

  1. Formulate, train and evaluate another pipeline that uses features obtained from two sources:

    a. Feature selection with the fpr

    b. The 3 components from PCA.

  1. Can you determine how many features are selected by fpr and fwe?

Requirements#

import findspark
findspark.init()

from pyspark.sql import SparkSession

spark = SparkSession.builder.appName('Intro to Spark').master("local[*]").getOrCreate()
sc = spark.sparkContext
import numpy as np
from pyspark.sql.functions import col
from pyspark.ml.feature import VectorAssembler, Imputer, PCA
from pyspark.ml.evaluation import RegressionEvaluator
from pyspark.ml.regression import LinearRegression, DecisionTreeRegressor
from pyspark.ml import Pipeline
from pyspark.ml.tuning import ParamGridBuilder, TrainValidationSplit, CrossValidator
from pyspark.ml.feature import StandardScaler, UnivariateFeatureSelector

Data preparation for SparkML#

Reading the data#

First of all we read the data:

data = spark.read.csv(path='wind_available_second.csv.gz', header=True, inferSchema=True) 
data.show(5)
+-------+----+-----+---+----+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+------------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+-----------------+------------------+-----------------+------------------+------------------+-----------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+------------------+------------------+-----------------+------------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+-----------------+-----------------+------------------+------------------+------------------+------------------+-----------------+-----------------+------------------+------------------+------------------+-----------------+-----------------+------------------+------------------+-----------------+-----------------+------------------+------------------+-----------------+------------------+-----------------+------------------+------------------+------------------+------------------+------------------+-----------------+-----------------+------------------+-----------------+------------------+------------------+------------------+------------------+-----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+------------------+-----------------+-----------------+-----------------+------------------+-----------------+
| energy|year|month|day|hour|       p54_162_1|       p54_162_2|       p54_162_3|       p54_162_4|       p54_162_5|       p54_162_6|       p54_162_7|       p54_162_8|       p54_162_9|      p54_162_10|      p54_162_11|      p54_162_12|      p54_162_13|      p54_162_14|      p54_162_15|      p54_162_16|      p54_162_17|      p54_162_18|      p54_162_19|      p54_162_20|      p54_162_21|      p54_162_22|      p54_162_23|      p54_162_24|      p54_162_25|       p55_162_1|       p55_162_2|       p55_162_3|       p55_162_4|       p55_162_5|       p55_162_6|       p55_162_7|       p55_162_8|       p55_162_9|      p55_162_10|      p55_162_11|      p55_162_12|      p55_162_13|      p55_162_14|      p55_162_15|      p55_162_16|      p55_162_17|      p55_162_18|      p55_162_19|      p55_162_20|      p55_162_21|      p55_162_22|      p55_162_23|      p55_162_24|      p55_162_25|          cape_1|          cape_2|          cape_3|          cape_4|          cape_5|          cape_6|          cape_7|          cape_8|          cape_9|         cape_10|         cape_11|         cape_12|         cape_13|         cape_14|         cape_15|         cape_16|         cape_17|         cape_18|         cape_19|         cape_20|         cape_21|         cape_22|         cape_23|         cape_24|         cape_25|       p59_162_1|       p59_162_2|       p59_162_3|       p59_162_4|       p59_162_5|       p59_162_6|       p59_162_7|       p59_162_8|       p59_162_9|      p59_162_10|      p59_162_11|      p59_162_12|      p59_162_13|      p59_162_14|      p59_162_15|      p59_162_16|      p59_162_17|      p59_162_18|      p59_162_19|      p59_162_20|      p59_162_21|      p59_162_22|      p59_162_23|      p59_162_24|      p59_162_25|        lai_lv_1|        lai_lv_2|        lai_lv_3|        lai_lv_4|        lai_lv_5|        lai_lv_6|        lai_lv_7|        lai_lv_8|        lai_lv_9|       lai_lv_10|       lai_lv_11|       lai_lv_12|       lai_lv_13|       lai_lv_14|       lai_lv_15|       lai_lv_16|       lai_lv_17|       lai_lv_18|       lai_lv_19|       lai_lv_20|       lai_lv_21|       lai_lv_22|       lai_lv_23|       lai_lv_24|       lai_lv_25|        lai_hv_1|        lai_hv_2|        lai_hv_3|        lai_hv_4|        lai_hv_5|        lai_hv_6|        lai_hv_7|        lai_hv_8|        lai_hv_9|       lai_hv_10|       lai_hv_11|       lai_hv_12|       lai_hv_13|       lai_hv_14|       lai_hv_15|       lai_hv_16|       lai_hv_17|       lai_hv_18|       lai_hv_19|       lai_hv_20|       lai_hv_21|       lai_hv_22|       lai_hv_23|       lai_hv_24|       lai_hv_25|            u10n_1|            u10n_2|            u10n_3|            u10n_4|            u10n_5|           u10n_6|            u10n_7|            u10n_8|            u10n_9|           u10n_10|           u10n_11|           u10n_12|           u10n_13|           u10n_14|           u10n_15|           u10n_16|           u10n_17|           u10n_18|           u10n_19|          u10n_20|           u10n_21|           u10n_22|           u10n_23|          u10n_24|           u10n_25|           v10n_1|            v10n_2|            v10n_3|           v10n_4|            v10n_5|            v10n_6|            v10n_7|            v10n_8|            v10n_9|           v10n_10|           v10n_11|           v10n_12|          v10n_13|           v10n_14|           v10n_15|           v10n_16|           v10n_17|          v10n_18|           v10n_19|           v10n_20|           v10n_21|           v10n_22|           v10n_23|          v10n_24|           v10n_25|            sp_1|            sp_2|            sp_3|            sp_4|            sp_5|            sp_6|            sp_7|            sp_8|            sp_9|           sp_10|           sp_11|           sp_12|           sp_13|           sp_14|           sp_15|           sp_16|           sp_17|           sp_18|           sp_19|           sp_20|           sp_21|           sp_22|           sp_23|           sp_24|           sp_25|          stl1_1|          stl1_2|          stl1_3|          stl1_4|          stl1_5|          stl1_6|          stl1_7|          stl1_8|          stl1_9|         stl1_10|         stl1_11|         stl1_12|         stl1_13|         stl1_14|         stl1_15|         stl1_16|         stl1_17|         stl1_18|         stl1_19|         stl1_20|         stl1_21|         stl1_22|         stl1_23|         stl1_24|         stl1_25|            u10_1|             u10_2|             u10_3|             u10_4|             u10_5|            u10_6|             u10_7|             u10_8|             u10_9|            u10_10|           u10_11|            u10_12|            u10_13|            u10_14|           u10_15|           u10_16|            u10_17|            u10_18|            u10_19|            u10_20|           u10_21|           u10_22|            u10_23|            u10_24|            u10_25|            v10_1|            v10_2|             v10_3|             v10_4|            v10_5|            v10_6|             v10_7|             v10_8|            v10_9|            v10_10|           v10_11|            v10_12|            v10_13|            v10_14|            v10_15|            v10_16|           v10_17|           v10_18|            v10_19|           v10_20|            v10_21|            v10_22|            v10_23|            v10_24|           v10_25|           t2m_1|           t2m_2|           t2m_3|           t2m_4|           t2m_5|           t2m_6|           t2m_7|           t2m_8|           t2m_9|          t2m_10|          t2m_11|          t2m_12|          t2m_13|          t2m_14|          t2m_15|          t2m_16|          t2m_17|          t2m_18|          t2m_19|          t2m_20|          t2m_21|          t2m_22|          t2m_23|          t2m_24|          t2m_25|          stl2_1|          stl2_2|          stl2_3|          stl2_4|          stl2_5|          stl2_6|          stl2_7|          stl2_8|          stl2_9|         stl2_10|         stl2_11|         stl2_12|         stl2_13|         stl2_14|         stl2_15|         stl2_16|         stl2_17|         stl2_18|         stl2_19|         stl2_20|         stl2_21|         stl2_22|         stl2_23|         stl2_24|         stl2_25|          stl3_1|          stl3_2|          stl3_3|          stl3_4|          stl3_5|          stl3_6|          stl3_7|          stl3_8|          stl3_9|         stl3_10|         stl3_11|         stl3_12|         stl3_13|         stl3_14|         stl3_15|         stl3_16|         stl3_17|         stl3_18|         stl3_19|         stl3_20|         stl3_21|         stl3_22|         stl3_23|         stl3_24|         stl3_25|             iews_1|             iews_2|             iews_3|             iews_4|             iews_5|             iews_6|             iews_7|             iews_8|             iews_9|            iews_10|            iews_11|            iews_12|            iews_13|            iews_14|            iews_15|            iews_16|            iews_17|            iews_18|            iews_19|            iews_20|            iews_21|            iews_22|            iews_23|            iews_24|            iews_25|             inss_1|             inss_2|             inss_3|             inss_4|             inss_5|             inss_6|             inss_7|             inss_8|             inss_9|            inss_10|            inss_11|            inss_12|            inss_13|            inss_14|            inss_15|            inss_16|            inss_17|            inss_18|            inss_19|            inss_20|            inss_21|            inss_22|            inss_23|            inss_24|            inss_25|          stl4_1|          stl4_2|          stl4_3|          stl4_4|          stl4_5|          stl4_6|          stl4_7|          stl4_8|          stl4_9|         stl4_10|         stl4_11|         stl4_12|         stl4_13|         stl4_14|         stl4_15|         stl4_16|         stl4_17|         stl4_18|         stl4_19|         stl4_20|         stl4_21|         stl4_22|         stl4_23|         stl4_24|         stl4_25|            fsr_1|            fsr_2|            fsr_3|            fsr_4|            fsr_5|            fsr_6|            fsr_7|            fsr_8|            fsr_9|           fsr_10|           fsr_11|           fsr_12|           fsr_13|           fsr_14|           fsr_15|           fsr_16|           fsr_17|           fsr_18|           fsr_19|           fsr_20|           fsr_21|           fsr_22|           fsr_23|           fsr_24|           fsr_25|           flsr_1|           flsr_2|           flsr_3|           flsr_4|           flsr_5|           flsr_6|           flsr_7|           flsr_8|           flsr_9|          flsr_10|          flsr_11|          flsr_12|          flsr_13|          flsr_14|          flsr_15|          flsr_16|          flsr_17|          flsr_18|          flsr_19|          flsr_20|          flsr_21|          flsr_22|          flsr_23|          flsr_24|          flsr_25|           u100_1|           u100_2|           u100_3|           u100_4|           u100_5|           u100_6|           u100_7|           u100_8|           u100_9|          u100_10|          u100_11|          u100_12|          u100_13|          u100_14|          u100_15|          u100_16|          u100_17|          u100_18|          u100_19|          u100_20|          u100_21|          u100_22|          u100_23|          u100_24|          u100_25|           v100_1|           v100_2|           v100_3|           v100_4|            v100_5|           v100_6|           v100_7|           v100_8|           v100_9|          v100_10|          v100_11|          v100_12|          v100_13|          v100_14|          v100_15|          v100_16|          v100_17|          v100_18|          v100_19|           v100_20|          v100_21|          v100_22|          v100_23|           v100_24|          v100_25|
+-------+----+-----+---+----+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+------------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+-----------------+------------------+-----------------+------------------+------------------+-----------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+------------------+------------------+-----------------+------------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+-----------------+-----------------+------------------+------------------+------------------+------------------+-----------------+-----------------+------------------+------------------+------------------+-----------------+-----------------+------------------+------------------+-----------------+-----------------+------------------+------------------+-----------------+------------------+-----------------+------------------+------------------+------------------+------------------+------------------+-----------------+-----------------+------------------+-----------------+------------------+------------------+------------------+------------------+-----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+------------------+-----------------+-----------------+-----------------+------------------+-----------------+
| 402.71|2005|    1|  2|  18|2534969.63189538|2526863.84970931|   2518753.54925|2510647.76706392|2502537.46660461|2531111.02655151|2522720.59315154|2514330.15975158|2505939.72635161|2497549.29295164|2528052.15557048|2519435.80850869|2510823.97972014|2502212.15093159|2493595.80386981|2525567.10529046|2516770.02729922|2507977.46758122|            NULL|2490387.82987197|2522309.43028703|2513281.92036073|2504254.41043444|2495226.90050814|2486199.39058184|9.44171895697496|            NULL|9.36651451737241|9.32857353883419|9.29063256029596| 9.3475440281033|9.30689297966949|9.26624193123568|9.22491336532797|9.18426231689416|9.27369462344854|9.22965598764525|9.18629486931585|9.14293375098645|9.09957263265705|9.21271805079783|9.16732438004674|9.12193070929565|9.07653703854456|9.03114336779347|9.14361126846035|9.09347497539198|9.04266116484972|8.99252487178135|            NULL|12.5802680787972|            NULL|13.1865460584982|13.4896850483487|13.7928240381993|            NULL|13.1486536847669|13.3760079271547|13.6033621695426|13.8307164119306|13.2244384322296|13.3760079271547|  13.52757742208|            NULL| 13.868608785662|13.4517926746173|13.5654697958114|            NULL|13.7549316644679| 13.868608785662|            NULL|13.1865460584982|13.3002231796922|13.4139003008861|  13.52757742208| 1400898.4880033|1405015.39028333|1408953.29681205|1413070.19909208|1417008.10562081|1389442.75991974|1393022.67494585|            NULL|1400361.50074938| 1403941.4157755|1380313.97660315|1383535.90012665|            NULL|1390158.74292496|1393559.66219977|1372796.15504831|1375839.08282051|1378882.01059271| 1381924.9383649| 1384967.8661371| 1365994.3164987|1368679.25276828|1371364.18903787|1373870.12955615|1376555.06582573|2.26952305148312| 2.2136081616507|2.15769327181829|2.10177838198587|2.04586349215346|2.37892061189892|2.32031197386597|2.26170333583303|2.20309469780008|2.14448605976713|            NULL|2.40483813099336| 2.3441111084532|2.28335793301789|2.22260475758258|2.53596874727948|2.47348948076422|2.41101021424895|2.34853094773369|2.28605168121842|2.54062396261632|            NULL|2.41940529359236|2.35880903552795|2.29821277746355|            NULL|2.24295759590331|2.23950522239152|2.23606402160953|2.23261164809773|2.35467372128996| 2.3510649295608|2.34744496510182|2.34383617337266| 2.3402273816435|2.44046911351359|2.43672624902669|2.43298338453979|            NULL|2.42548648283617| 2.5101310838892|2.50627649210418|2.50242190031916|2.49856730853415|2.49472388947894|2.53751544465754| 2.5318173524536|2.52611926024966|2.52042116804572|            NULL|-0.974206320564559|-0.875138235872909|-0.776070151181259|-0.676632409457178|-0.577564324765528|             NULL|-0.864048524899963|-0.765719754273176|-0.667390983646389|-0.569062213019602|-0.953505526748393|-0.855546413154038|-0.757587299559682|-0.659997842997758|-0.562038729403403|-0.946112386099763|-0.848522929537839|-0.751303130008346|-0.653713673446422|-0.55649387391693|-0.948330328294352|-0.852589156894586|-0.756478328462388|-0.66036750003019|-0.564256671597992|-2.49717269175828| -2.35288377637882|              NULL| -2.0650013138868| -1.92106008264079| -2.34766851437715| -2.19851202112947|  -2.0493555278818| -1.90019903463412| -1.75069485725299| -2.22910822487259| -2.07577952202358|-1.92279850330801|   -1.769469800459| -1.61614109760998| -2.13314740404191| -1.97634185985846|-1.81988399980844| -1.66307845562499| -1.50662059557497|              NULL| -1.93670586864579| -1.77711885139477|             NULL|  -1.4575971327593|100691.101044989|100414.200563075|100137.300081161|            NULL| 99583.499117334|100548.401529573|100261.734058604|99974.9397436215|99688.2722726527|99401.4779576702|100435.383513364|100140.851713545|99846.3199137267|            NULL|99257.2563140899|100343.548447443|100042.674446939|            NULL|99441.0532899455|            NULL|100215.562837616|99906.5708202356|            NULL|99288.7136294882|98979.8484561214|281.739429792811|281.555891809235|281.372353825658|281.188815842081|281.005277858504|281.521922071943|281.332299956314|281.142677840685|280.953055725056|280.762926598422|281.349538330462|281.154846104789|280.960660890121|280.765968664449|280.571276438776| 281.20960329326|281.010854979552|280.812613676849|280.614372374146|280.415624060439|281.121383378502|280.917564954751|   280.713746531|280.509928107249|280.306109683498|-1.08741654226709|-0.998038796105335|-0.909028859598568|-0.820018923091803|-0.731008986585036|-1.08410625537221|-0.995831938175415|-0.907557620978622|-0.819651113436816|-0.731376796240023| -1.0815315877873|-0.993992889900482|-0.906454192013662|-0.819283303781829|-0.73174460589501|-1.07932472985738|-0.992521651280535|-0.905718572703689|-0.818915494126843|-0.732112415549997|-1.08815216157706|             NULL|-0.920798768558141|-0.837305976876174|-0.753813185194208|-2.96207932429197|-2.93668336108496|   -2.910939507971| -2.88554354476399|-2.85979969165003|-2.84866721462778| -2.82361914132772| -2.79857106802765|-2.77352299472758| -2.74847492142752|             NULL| -2.73421143524276| -2.70951125184964| -2.68515895836346| -2.66045877497034| -2.68585473817735|-2.66150244469118|  -2.637150151205| -2.61314574762577|-2.58879345413959| -2.65210941720365| -2.62393033474108|  -2.5957512522785| -2.56757216981593|-2.53939308735335|            NULL|281.001794562867|280.755807995307|280.509821427746|280.263834860186|            NULL|280.853153390526|280.597840318035|280.343110152101|280.088379986168|280.997131310402|            NULL|            NULL|280.211373269948|279.949648225316|            NULL|280.639226683667|280.371672573453|280.104118463239|279.836564353026|280.886379064344|280.614161701664|280.342527245543|            NULL|279.798675426743|281.843918072769|281.645571649901|281.447225227034|281.248878804167|281.050532381299|281.631265962482|            NULL|281.221040709729|281.016121403453|280.810815456977|281.462690835055|            NULL|281.042026296888|280.831307387604|280.620975118521|281.326206844271|281.111234892781|280.896262941292|280.681677630002|280.466705678513|281.194362535893|            NULL|280.752819426898|280.532047872401|280.311276317903|            NULL|281.988001560096|281.834216759468|281.680708550207|281.527200340946|281.943193758474|281.784983495957| 281.62677323344|281.468562970923|281.310352708405|            NULL|281.624283911127|281.462477960826|            NULL|281.138589468854|281.658581240764|            NULL|281.328884330064|281.164035874714|            NULL|281.558178574167|281.389457839664|281.220737105161| 281.05173977929|280.883019044788|-0.0628339797201531|-0.0585366827651451|-0.0542393858101371|-0.0499420888551292|-0.0456447919001212|-0.0652305491758307|-0.0607679715687069|-0.0563053939615833|-0.0518428163544596|-0.0473802387473359|               NULL|-0.0625034184159218|               NULL|-0.0533303422235009|-0.0487851242903193|-0.0686188025442024|-0.0639083039589051|-0.0592804456996657|-0.0545699471143685|-0.0498594485290713|-0.0735772221076731|-0.0686188025442024|-0.0637430233067895|               NULL|-0.0539088245059057| -0.139944331935889| -0.135447328014594| -0.130950324093299| -0.126453320172004| -0.121956316250708|               NULL| -0.139876195512839|               NULL|               NULL| -0.125840092364554| -0.148256975547981| -0.143487425934486| -0.138649739897941| -0.133812053861396| -0.128974367824851| -0.151254978162178| -0.146349155702583| -0.141375196819938| -0.136469374360343| -0.131495415477698|  -0.15861371185157| -0.153094661584526| -0.147507474894432| -0.141988424627387| -0.136469374360343|284.961778496356|284.881221397588|284.800471116329|284.719914017561|            NULL|284.899380551747|284.817664358032|284.735948164318|            NULL|            NULL|284.850119016529|284.767436910359|            NULL|            NULL|284.519583774341| 284.80993705839|284.726675404747|284.643220568613|            NULL|            NULL|            NULL|284.710834440481|            NULL|284.540447483374|284.455447187312|0.341866376770339|             NULL|0.372549424686673|0.387892602717504|0.403235780748335|0.358340940503314|0.374421834942268|             NULL|0.406586931965504|0.422667826404458|0.371394881967233|0.388061318129227|0.404731062436548| 0.42140080674387|0.438067242905863|0.381994179597846|0.399136988687058|0.416283105921598| 0.43342591501081|0.450568724100023|0.386480024662488|0.403397879869402|0.420315735076316|             NULL|0.454151445490145|             NULL|-6.31770832589211|-6.27847051251575| -6.2392326991394|-6.19999488576304|-6.16363095830438|-6.12302573146718|-6.08242050462998|-6.04181527779278|-6.00121005095558|-6.01045747419076|-5.96876295188475|-5.92709160607808|-5.88537390727274|-5.84367938496673|-5.88609237875217|-5.84351714947138|             NULL|-5.75838986740914|-5.71581463812836|-5.82669101095323|-5.78467201765651|-5.74262984786046|-5.70061085456374|-5.65859186126703|-2.02538646988875|-1.87577144072191|-1.72615641155507|-1.57654138238824| -1.4269263532214|-2.05782049719065|-1.90715920907859|-1.75649792096653|-1.60583663285447|-1.45517534474241|-2.08345384134861|-1.93174629429132|-1.78056187670665|-1.62937745912198| -1.4776699120647|-2.10437902025306|-1.95214834372317|             NULL|-1.64821012013599|-1.49597944360609|-2.14152121280846|-1.99347557205946|-1.84490680183784|-1.69686116108884|-1.54829239086723|-4.80183938695134|-4.67311875108139|-4.54489703240473|-4.41617639653477| -4.28745576066482|-4.75294550200849|             NULL|-4.48851938956246|-4.35580741614615|-4.22359435992314|-4.71502779531811|             NULL|-4.44361684216596|-4.30791136558989|-4.17220588901381|-4.68359601214057|             NULL|-4.40719588705547|             NULL| -4.13129467916367|-4.66962633072832|-4.52893168221931|-4.38873595090358| -4.24854021958785|-4.10784557107884|
|  696.8|2005|    1|  3|   0|            NULL|            NULL|2521184.38025117|2513087.63461157|            NULL|2533465.04690766|2525088.16832741|2516715.80802039|2508338.92944013|2499962.05085987|2530370.02974074| 2521771.7557719|2513173.48180306|2504575.20783422|2495972.41559214|2527857.86982131|2519078.86492302|2510295.34175148|2501516.33685319|2492732.81368166|2524550.49381228|2515536.53870569| 2506522.5835991|2497508.62849252|            NULL|            NULL|9.08127966086184|9.03859606000634|8.99523494167694|8.95187382334754|9.02707826295009|8.97965203977731|            NULL|8.88615462837955|8.83872840520677|8.94916375345195|8.89970497785748|8.84956868478912|8.79943239172075|8.74929609865238|8.88615462837955|8.83398578288949|8.78181693739943|8.72964809190937|8.67680172894542|8.76487900055201|8.71135512011416| 8.6585087571502|8.60498487671235|            NULL|3.90291449432561|5.38071706984692|6.89641201909967|            NULL|9.88990954387373|            NULL|            NULL|6.89641201909967|            NULL|9.92780191760494|3.86502212059418|5.38071706984692|6.89641201909967|8.41210696835219|9.92780191760494|3.82712974686297|5.38071706984692|            NULL|8.41210696835219|9.96569429133638|3.78923737313175|5.30493232238427|6.78273489790558|8.29842984715833|9.81412479641108|1167130.03679813|1171425.93482947|1175721.83286081|1180017.73089214|1184313.62892348|1155674.30871457|1159433.21949199|            NULL|1167130.03679813|1171067.94332686|1146366.52964668|1149946.44467279|1153526.35969891|1157106.27472502|1160507.19399983|1139027.70384315|1142249.62736665|1145471.55089015|1148872.47016496|1152094.39368846| 1127929.9672622| 1130972.8950344|            NULL|1136879.75482748|1139743.68684837|2.26918306384615|2.21326817401374|            NULL|2.10141224145376|2.04549735162135|2.37855447136681|            NULL|2.26131104240576|2.20270240437282|2.14406761344472|            NULL|2.40447199046125|2.34371881502594|2.28293948669548|2.22218631126016|2.53557645385222|2.47309718733696|2.41061792082169|2.34811250141127|2.28563323489601|2.54023166918906|2.47963541112466| 2.4190130001651|2.35841674210069|2.29779433114113|2.24633176030643|2.24285704133501|2.23937114963378|2.23590760339217|2.23242171169093|2.35460668491109|2.35095320226268|2.34731089234409|2.34366858242549|2.34002627250689|2.44039090440491|2.43661452172857|            NULL| 2.4290617563759|2.42528537369956|2.51005287478052|            NULL|2.50227665483161|2.49838854485716|2.49451160761252|2.53744840827867|            NULL|2.52598518749192|            NULL|2.51452196670518| -1.77636208094098|  -1.6828388517358| -1.58894596549819| -1.49542273629302| -1.40152985005541|-1.67951193844392|              NULL|              NULL| -1.39635465160137| -1.30172245129889| -1.60225361866573| -1.50762141836326| -1.41261956102835| -1.31761770369345| -1.22298550339098|  -1.5397815801848|  -1.4447797228499| -1.34940820848256| -1.25403669411523|             NULL| -1.51057867462271| -1.41446784619051| -1.31835701775831|-1.22224618932612|              NULL|-1.75278096205366|              NULL| -1.57128984439565|-1.48054428556664| -1.38979872673763| -1.66412150802532| -1.57059447612876| -1.47741512836564| -1.38423578060252|              NULL| -1.59354162893609| -1.49827617637231|-1.40301072380852| -1.30774527124474| -1.21247981868095|  -1.5365214310512| -1.43951755782019|-1.34286136872263| -1.24585749549162|              NULL| -1.51600806717797|              NULL|              NULL|-1.21769508068262|  -1.1182574185175|100761.118940553|100485.867430817|100210.615921082|99935.3644113462|99660.1129016106|            NULL|            NULL|100047.240831432|99762.0954886279|99477.0769898372|            NULL|100210.615921082|99917.7330934415|99624.9771098149|99332.0942821746|100411.029462733|100111.804434407|99812.7062500954|            NULL|99214.3830374582|100282.409632838|            NULL|99668.1040744739|99360.8878732852|99053.7985161102|280.111417457825|279.976045519662|            NULL|279.705301643336|279.569929705174|279.815323031282|279.676402016088|279.537481000895|279.398052974697|279.259131959504|279.580576936265|279.438613855045|279.296650773826|            NULL|            NULL|279.390447809632| 279.24594967339|279.101451537149|            NULL|278.812455264666|            NULL| 279.13998437348|278.990416127195| 278.84084788091|278.691279634625|-1.98119400388461| -1.88703473220803| -1.79287546053146| -1.69871618885488|  -1.6045569171783|-1.90505740530238| -1.81016251431583| -1.71526762332928| -1.62037273234272|              NULL|-1.84473662188457| -1.74910611158805| -1.65384341094651| -1.55821290064998|-1.46295020000844|-1.79545012811636| -1.69981961781984| -1.60382129786833| -1.50782297791681| -1.41219246762029|-1.77264592950719|-1.67701541921067| -1.58138490891414|  -1.4861222082726| -1.39049169797608|-1.95806905284765|-1.86587822750713| -1.77333951225966| -1.68114868691914|-1.58895786157862|-1.88953474117941| -1.79490868649027| -1.69993474189419|-1.60530868720505| -1.51068263251591|-1.83526391569593| -1.73855052156512| -1.64183712743431|  -1.5451237333035| -1.44841033917269| -1.79108189751387|             NULL|-1.59452410008974| -1.49641914633115|-1.39831419257256| -1.77681841132911| -1.67662611812885|              NULL| -1.47658942163526|-1.37674501834194|279.212854335752|278.978525899355|278.744197462959|278.509869026563|278.275540590166|            NULL|            NULL|278.488884390467|278.246978168814|278.005071947161|  278.7826692958|278.534351102007|278.286615814772|278.038880527537|            NULL|278.627616151319|278.375217611618|278.122819071918|277.869837625659|277.617439085958|278.571074215174|278.315761142682|278.061030976749|277.806300810815|277.550987738324|281.517593743529|281.346698774899|281.176190446469|281.005295477839|280.834400509208|281.289089385021|281.113168093784|280.936860162346|280.760552230909|280.584244299471|281.108141771177|280.927580797534|280.747406464091|280.566845490448|280.386284516804|            NULL|280.777564399732|280.593523664284|280.409482928836|280.225442193388|280.845226434823|            NULL|280.465159117711|280.274932139054|280.084705160398| 282.16502003564|282.010958643643|281.856620660279|281.702559268282|281.548221284917|281.968086981598|281.809046944976|281.650283499723| 281.49152005447|281.332480017848|            NULL|281.649177134251|281.486541409845|281.324182276807|281.161546552401|281.684857420728|281.519455782641|281.353777553187|281.188375915101|281.022697685647|281.584731345498|281.415180836891|            NULL|281.076079819678|280.906529311071| -0.103327739488498| -0.100352687750415|               NULL|-0.0944852246003082|-0.0915928131882836| -0.106881273508985| -0.103906221770903| -0.100848529706762|-0.0978734779686798|-0.0948157859045395|  -0.10977368492101|  -0.10671599285687| -0.103575660466671| -0.100517968402531|-0.0974602763383906|  -0.11208761405063| -0.108947281660431| -0.105806949270233|               NULL|-0.0995262844898368| -0.118450919157084|               NULL| -0.111426491442167| -0.107955597747737| -0.104484704053307|-0.0844812835732477|               NULL|-0.0782127326526543|-0.0750784571923576|-0.0718760453090109|-0.0874111497643947|-0.0841406014579981|-0.0808700531516016|-0.0775995048452049|-0.0743289565388084|               NULL|-0.0863891034186457|-0.0830504186891993|-0.0796435975367028|               NULL|-0.0916356079934902|-0.0881606504179439|-0.0847538292654474| -0.081347008112951|-0.0778720505374046|-0.0962007483378354|-0.0923851086470394|               NULL|-0.0848901021115472|               NULL|284.946710262054|284.865959980795|284.785016517045|284.704266235786|284.623515954526|284.883539587481|284.801630211275| 284.71972083507|284.637811458864|            NULL|284.833505322299|284.750823216129|284.667947927468|284.585265821298|284.502390532637|284.792936999178|            NULL| 284.62602732691|284.542572490776|284.458924472151|284.778448312349|284.693061651305|284.607868172751|284.522481511707|284.437288033153|0.341734050957223|0.357229403673137|0.372721448243724|0.388216800959639|0.403708845530225| 0.35820530654487|             NULL|0.390684677374257| 0.40692436278895|0.423167356348972|0.371255939863461| 0.38808778329185|0.404919626720239|0.421751470148628|0.438583313577017|0.381848621203418|             NULL|0.416474978350617|0.433786502851552|0.451101335497816|0.386354315140027|0.403437577613337|0.420520840086647|0.437604102559957|0.454687365033266| -6.3438745936428|-6.30027959839121|-6.25668460313963|-6.21306643138871|-6.16947143613713|-6.15482388855659|-6.11011642133686|             NULL|-6.02072466339674|-5.97601719617702|-6.00503417334607|-5.95944599915156|-5.91388100145639|-5.86831600376122|             NULL|-5.88340390482916|-5.83712043565456|-5.79083696647997|-5.74457667380471|-5.69829320463011|             NULL| -5.7793645993085|-5.73370689561598|-5.68807236842281|-5.64243784122963|-4.05826760045634|-3.90289814709078|-3.74752869372522|-3.59215924035966|-3.43731291646671|-4.06140637729201|             NULL|-3.74543617583477|-3.58745107510616|-3.42946597437754|-4.06349889518246|-3.90342127656339|-3.74334365794433|-3.58326603932526|-3.42371155017881| -4.0655914130729|             NULL|-3.74229739899911| -3.5801272624896| -3.4184802554527|-4.06873018990857|-3.90865257128951|-3.74857495267044|-3.58849733405138|-3.42841971543231|             NULL|             NULL|-3.16638882733231|-3.03467468830259| -2.90296054927287| -3.4168452583661|-3.28113978179002|-3.14593322240724|-3.01022774583117|             NULL|-3.40636799730691|-3.26816793476437|-3.12946895502853|-2.99126889248598|-2.85256991275014|-3.39788640502091|-3.25719175651189|-3.11599819080958|-2.97530354230056| -2.83460889379154|-3.39638965344103|-3.25419825335212|-3.11250577045652| -2.97031437036761|             NULL|
|1591.15|2005|    1|  3|   6|2533727.10675538|2525702.65348756|2517678.20021974|2509653.74695192|            NULL|2529800.72731296|2521496.14110448|2513187.03662277| 2504882.4504143|2496573.34593258|2526692.15532632|2518157.13718279| 2509626.6373125| 2501096.1374422|2492565.63757191|2524161.92231395| 2515450.6915142|2506739.46071445|            NULL|2489312.48084171|2520822.91839226|2511876.73738422|2502930.55637618|2493988.89364137|2485042.71263333|8.20050694479593|8.16121093130992|   8.12123740035|8.08194138686398|            NULL|8.09752428876361|8.05484068790811|8.01147956957871|            NULL|7.92475733291991|8.01622219189599|  7.970151003671|            NULL|7.87800862722103|7.83125992152215|7.95050299692799|7.90172173880742|7.85294048068685|7.80483674004017| 7.7560554819196|7.83939013120891|7.78993135561444|7.74115009749387| 7.6916913218994|            NULL|            NULL|3.82712974686297|4.85022383760861|5.87331792835403|6.89641201909967|2.76614328238611|3.78923737313175|4.81233146387717|5.87331792835403|6.89641201909967|2.69035853492346|3.75134499940032|4.77443909014596|5.83542555462282|6.85851964536823|2.65246616119225|3.71345262566911|4.77443909014596|5.79753318089138|6.85851964536823| 2.5766814137296|3.63766787820646|            NULL|5.72174843342873|6.74484252417437|            NULL|1114147.29441166|            NULL|1115758.25617342|1116653.23492994|1104660.51959247|1105376.50259769|            NULL|1106450.47710552|1106987.46435944|1098037.67679416|1098395.66829677|1098753.65979938|1099111.65130199| 1099469.6428046|1092488.80850368|1092667.80425499|1092846.80000629| 1093025.7957576|1093204.79150891|            NULL|1081928.05917665|1081928.05917665|1081928.05917665|1081928.05917665|            NULL|2.21290203348163|2.15696099075407|2.10104610092165|2.04510505819409| 2.3781883308347|2.31957969280175|2.26094490187365|2.20231011094556|2.14367532001746| 2.4648328724693|2.40407969703399|2.34330036870353|2.28254719326821|            NULL|2.53518416042496|2.47270489390969|2.41019947449928|            NULL|2.28518863567845|2.53986552865695|2.47924311769739|2.41862070673784|2.35799829577828|2.29737588481872|2.24626472392756| 2.2427564867667|2.23924824960585| 2.2357511851748|2.23224294801395|            NULL|            NULL|2.34717681958635|2.34350099147831|2.33982516337028|2.44031269529622|2.43650279443045|2.43270406629449|2.42888299269891|2.42507309183314|2.50996349294202|2.50605303750795|2.50213140934406|2.49820978118017| 2.4942993257461|2.53737019916999|2.53160507058718|2.52583994200437|2.52007481342156|            NULL| -2.94965350187865| -2.78404715134933| -2.61881045785244| -2.45357376435554| -2.28833707085865|             NULL|              NULL|  -2.4354605697664| -2.26578799188032| -2.09611541399425| -2.63618433837672| -2.46318484719876| -2.29018535602081| -2.11681620781042| -1.94381671663246| -2.52380860051753| -2.34785185308012| -2.17189510564272| -1.99630801523774|-1.82035126780033|  -2.4354605697664| -2.26615764891276| -2.09685472805912|-1.92792146423791| -1.75861854338427|-1.03863775195871|-0.937461669126373|-0.836285586294031|-0.73510950346169|-0.633933420629349|-0.996220287678489|-0.893653468312369|-0.790738964812805|-0.687824461313242|-0.584909957813678|-0.962842610867819|-0.858537370834477|-0.75457981493458|-0.650274574901239|-0.546317019001342|-0.935375564325706|-0.830374956025475| -0.7250266635918|-0.619678371158125|-0.514677762857894|-0.922858935521705|-0.819596747888697|-0.716334560255688|-0.61307237262268|-0.509810184989672|100599.392823082|100328.834541853|            NULL|99787.7179793959|99517.1596981673|100455.044335487|100174.719065204|99894.2669509064|99613.9416806227|99333.6164103391|100340.631035127|100052.568280008|99764.3786808745|            NULL|            NULL|100247.781217097| 99953.376261292|99658.9713054873|99364.4395056689|99070.0345498642|100119.922451284|99817.5263226161|99515.0033499344|99212.6072212664|98910.0842485847|279.093846372084|278.978247863091|278.862649354097|  278.7465438341|278.630945325107|278.748571878117|278.630438314103|278.511797739083|278.393157164064|278.274516589045| 278.47529294677|278.354624327733|278.233955708696| 278.11328708966|277.992618470623|278.253222126862|            NULL|278.008335811758|277.885639148704| 277.76294248565|278.095034693503|277.972845041453|277.850655389404| 277.72795872635|  277.6057690743|-3.14236908467743|  -3.0026014157825| -2.86283374688758| -2.72306607799266| -2.58329840909774|-2.99083150682293| -2.84812136068812|  -2.7054112145533|  -2.5623332587635| -2.41962311262869| -2.8705577496423| -2.72564074557757| -2.58035593185785| -2.43543892779311|-2.29015411407339|-2.77308819107084| -2.62633213873118| -2.47920827673652| -2.33208441474187|              NULL|             NULL|-2.55056334980393| -2.40858882297909| -2.26661429615424| -2.12500757898439|-1.07999492771755|-0.97319272628532|-0.866390524853093|-0.759240433513921|             NULL|             NULL|-0.934576946614385|-0.825687405740486|             NULL|-0.607908323992687|-1.01493951511876|-0.904310524710138|-0.793681534301512|-0.683052543892886|-0.572771443391206|-0.991283001446479|             NULL|-0.76758979128061|-0.655917131151148|-0.54389658111474|-0.985368873028408|-0.875087772526727|-0.764458782118101|-0.654177681616421|-0.54389658111474|278.073272014471|  277.9083094585| 277.74334690253|277.578384346559|277.413421790589|277.783567455045|277.613941646609|            NULL|277.273524216621|277.103898408184|277.554485177673|277.380779023329|            NULL|277.032200901526|276.858494747182|277.368537985607|277.191334391914|277.013547891663|276.836344297971|276.659140704278|277.221645532941|277.043276126132|276.865489625881| 276.68770312563|            NULL|280.878477492068|280.735420617875|            NULL|280.449306869489|280.306249995297| 280.62020183812|280.473278561922|280.325968645523|280.179045369325|            NULL|280.415669172044|280.265266134041|280.114863096039|279.964846698237|279.814443660234|280.249800526021|            NULL|279.943581487208|279.790858608002|279.637749088596|280.127622222656|279.970259661044|279.812897099432| 279.65553453782|            NULL|282.161700939224|282.008469321331|281.855237703438|281.702006085546|281.548497876285|281.965597659285|281.807663988136|281.649730316987|281.492073237206|            NULL|281.810153310448|281.648623951515|281.487094592581|281.325565233647|281.164035874714|281.684027646623|281.519455782641|281.354883918659|281.190588646045|281.026016782063|281.584731345498|281.416287202363|            NULL|281.079122324726|280.910678181591| -0.167291351857271| -0.162580853271973|               NULL| -0.153159856101379|               NULL|  -0.17191921011651| -0.167043430879097| -0.162250291967742|               NULL| -0.152498733492916| -0.175638024789113| -0.170679605225642| -0.165721185662171| -0.160762766098701|  -0.15580434653523| -0.178613076527196| -0.173572016637667| -0.168530956748138|  -0.16348989685861| -0.158448836969081| -0.181422847613162|               NULL| -0.171423368160163| -0.166464948596692| -0.161506529033221|-0.0434631568971908|-0.0389661529758956|-0.0344691490546003| -0.029972145133305|-0.0254751412120097|               NULL|-0.0401244721677443|-0.0354230589772993|-0.0307897822099041|               NULL|-0.0458479317039383|-0.0410102456673934|-0.0362406960538984|-0.0314030100173535|-0.0266334604038585|-0.0466655687805375|               NULL|               NULL|-0.0319481014017529|-0.0270422789421581|-0.0482327065106858| -0.043326884051091|-0.0384210615914962|-0.0335152391319013|-0.0286094166723064|284.932028392734|284.851084928984|284.770334647725|284.689584366466|284.608834085206|            NULL|284.786175611991|284.704266235786| 284.62235685958|284.540447483374|284.817471175541|284.734789069372|284.651913780711|            NULL|            NULL|284.776516487439|284.693061651305| 284.60941363268|            NULL|284.442503960412|284.761448253137|284.676061592092|284.590868113539|284.505481452494|284.420287973941|0.342137644687227|0.357791788378881|0.373445932070536| 0.38910007576219|0.404750911308516|0.358625441001514|0.375033841827931|0.391442242654348|0.407850643480764|0.424259044307181|0.371692615046745|0.388696482032185|             NULL|0.422707524148393|             NULL|0.382298528968014|0.399788693316656|0.417278857665298|0.434772330159268|0.452262494507911|0.386820763631262|0.404076049661623|0.421331335691984|0.438586621722345|0.455845215898034|             NULL| -6.3243368047023|-6.27740439354629|-6.23047198239027|-6.18353957123426|-6.16828943467098|-6.11987372755744|-6.07145802044391|-6.02306548982971|-5.97464978271618|-6.00746770577638|-5.95786999719669|-5.90827228861701|             NULL|             NULL|             NULL|-5.82634336346318|-5.77579541841071|-5.72524747335823| -5.6747227048051|-5.81380487732224|-5.76388269775185|-5.71398369468079|-5.66408469160973|-5.61416251203934| -5.5763893299744|             NULL|-5.23949394961271|-5.07104625943186|-4.90259856925102|-5.50210494486359|-5.33104160731969|-5.15997826977579|             NULL|-4.81785159468798|-5.44299131445851|-5.26983545902416|-5.09720273306243|-4.92404687762808|-4.75089102219373|-5.39538653245088| -5.2206612885987|             NULL|-4.87121080089434|             NULL|-5.33313412521013|-5.16259391713884|-4.99205370906755|-4.82151350099626|             NULL|-1.51297724875468|-1.36280317357307|-1.21262909839146|-1.06245502320984|-0.912280948028231|-1.48902922347655|-1.33536272794188| -1.1821951496005|-1.02902757125912|             NULL|-1.46957145293807|-1.31390928863022|             NULL|-1.00208604282122|             NULL|-1.45410501994595|             NULL|-1.13829043659059|             NULL|-0.822475853235241|-1.45909419187889|-1.30293311037774|-1.14727094606989|-0.991109864568746| -0.8349487830676|
|1338.62|2005|    1|  3|  12|            NULL|2526547.57058276|2518608.96450643| 2510670.3584301|2502731.75235378|2530568.83376314|            NULL|2514126.83745594|2505903.58016572| 2497680.3228755|2527464.78004975|2519020.12737094| 2510570.9564189| 2502126.3037401| 2493681.6510613|2524943.58358384|2516313.68170235|2507688.29809409| 2499058.3962126|2490433.01260434|            NULL|2512766.83721179|2503906.50339524|            NULL|2486185.83576214|7.14493472046464|7.11918905645656|            NULL| 7.0670202109665|7.04127454695842|7.05279234401467| 7.0250141275849|6.99791342862902|6.97013521219925|6.94303451324338|6.97962045683381|6.95116472293014|6.92270898902647|            NULL|6.86512000374524|6.92067643660478|6.89086566775332|6.86105489890186|6.83192164752429|6.80211087867283|6.84276192710664|            NULL|6.78517294182541|6.75603969044785|6.72690643907028|             0.0|             0.0|            NULL|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|            NULL|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|            NULL|             0.0|1090698.85099063|1090877.84674193|1091056.84249324|1091235.83824454|1091593.82974715|1082644.04218187|1082644.04218187|1082644.04218187|1082823.03793318|1082823.03793318|1076200.19513487|1076200.19513487|1076021.19938356|1076021.19938356|1076021.19938356|1071009.31834701|            NULL|1070651.32684439|1070651.32684439|            NULL|1059195.59876083|1059016.60300953|1058837.60725822|1058658.61150692|            NULL|2.26839847699163|2.21248358715922|2.15654254443165|2.10060150170409|2.04466045897652|2.37774373161713|2.31910894068904|2.26047414976094|2.20183935883284|2.14320456790474|2.46438827325174|2.40360894492128|2.34282961659081|            NULL|2.22129711282504|2.53471340831224|2.47220798890183|2.40970256949141|2.34722330297615|2.28471788356573|            NULL|2.47877236558468|2.41814995462512|2.35752754366556|2.29690513270601|2.24616416935926|2.24262241400896|2.23908065865867|2.23553890330838|2.23198597522828| 2.3544279212341|2.35070740220683|2.34699805590936|2.34327753688208|2.33956819058461|            NULL| 2.4363575489429| 2.4325141298877|            NULL|2.42480494631766|2.50986293837372|2.50589661929058|            NULL|            NULL|2.49402000750081|2.53725847187187|2.53145982509963|2.52566117832739|2.51985135882533|2.51405271205309| -3.96140479964375| -3.87083882669803| -3.77990319671987| -3.68933722377415| -3.59877125082842|-3.81354198667114| -3.71817047230381| -3.62279895793647|  -3.5270577865367| -3.43168627216937| -3.69636070739035|  -3.5972926226987| -3.49785488097461| -3.39878679628296|              NULL| -3.60135885005544| -3.49896385207191|              NULL| -3.29454351313727|-3.19214851515374| -3.53999578267181| -3.43981872688286| -3.33964167109392|-3.23946461530497| -3.13928755951603| 1.11943766433113|              NULL|  1.32596203959714| 1.42887654309671|  1.53213873072971|  1.09023219712179|  1.19279901648791|  1.29536583585403|   1.3975849710867|  1.50015179045282|  1.06693736018101|  1.16880881128024| 1.27102794651292|  1.37289939761215|  1.47477084871138|  1.04816241697501|  1.14968618394079| 1.25120995090658|  1.35273371787237|  1.45425748483815|              NULL|  1.10413956245957|  1.20044806742369| 1.29640888825436|  1.39271739321848|100498.424988174|100231.291495315|99964.1580024568|99697.0245095982|99429.8910167397|100355.218096703|100078.317614789|            NULL|99524.7703389895|99247.8698570758|100241.692704439|99957.1815817031|99672.6704589672|99388.1593362314|99103.6482134955|100149.603950491|99858.8774710833| 99568.150991676|99277.4245122686|98986.5711888476|100026.692101212|            NULL|99429.1299526574|99130.4123003868|98831.5678041025|281.534090336047|281.373367847667|281.212645359286|281.051922870905|280.891200382524|281.306949406096|281.141156807672|280.975364209247|280.809571610823|280.643779012399|281.126453488545|280.957111813091|280.787263126631|            NULL|280.448072764717|280.980434319291|            NULL| 280.63465281432|            NULL| 280.28887130935|280.891200382524|280.712732508991|280.533757624454| 280.35528975092|280.176821877387|             NULL| -3.72277272024634| -3.63891211890939| -3.55505151757243| -3.47155872589047|-3.66281974648352| -3.57454542928672| -3.48627111208993| -3.39799679489314| -3.30935466804136|-3.54916656309265| -3.45721414934599| -3.36526173559933| -3.27330932185267|-3.18098909845102|  -3.456846339691| -3.36195144870445| -3.26668874806291|              NULL|  -3.0768989660898|-3.39211184041335|-3.29905599770173| -3.20563234533513| -3.11257650262351|  -3.0191528502569| 1.07900983478539| 1.17989790779954|   1.2807859808137|   1.3820219437348| 1.48291001674895| 1.05048286241587|              NULL|  1.25121533872334| 1.35140763192361|  1.45194781503082| 1.02787001846442|              NULL|  1.22755882505106|  1.32740322834438|   1.4272476316377|  1.00977974330326| 1.10892836678269| 1.20842488016906|  1.30792139355544| 1.40741790694181| 0.970120293911487|  1.06439845869368|  1.15867662347587|  1.25295478825807| 1.34688506313332| 281.51242070785| 281.33754874039| 281.16267677293| 280.98780480547| 280.81293283801|281.394090676536|281.212806736936|281.030939890777|280.849655951177|280.668372011577|281.300242720666|281.113712622042|280.926599616859|280.740069518235|280.553539419612|281.223881961541| 281.03327151701| 280.84207816592|280.651467721389|  280.4602743703|281.167340025396| 280.96856888905|            NULL|280.571609522916|280.373421293128|280.764031992713|            NULL|280.480238085531|            NULL|280.196444178349|280.499183455357| 280.35342009976|280.207270103963|280.061506748367| 279.91535675257|280.289624466674|280.140381349273|279.991138231872|279.842281754671| 279.69303863727|            NULL|            NULL|279.815990221036|279.664040622231|279.512091023426| 279.99732447508|            NULL|279.686079113661|279.530263112851|279.374833752242|282.146488413982|281.994916344297|            NULL|281.691772204928|            NULL|            NULL|281.792451462894|281.636453931321| 281.48017980838|281.324182276807| 281.79162168879|            NULL|281.472435250075|281.312565439349|            NULL|            NULL|            NULL|281.339118210681|281.176482486275|281.013846761869|281.565093358367|281.398308763441|281.231800759883|281.065016164956|280.898508161398|    -0.259765876716| -0.259683236389943| -0.259683236389943| -0.259600596063885|               NULL| -0.268773672256306|  -0.26860839160419| -0.268525751278132| -0.268443110952074| -0.268360470626016| -0.275798099971223| -0.275715459645165| -0.275550178993049|               NULL| -0.275302258014875| -0.281582922795272| -0.281417642143156| -0.281335001817098| -0.281169721164983| -0.281004440512867| -0.283979492250949| -0.283979492250949| -0.283979492250949|               NULL| -0.283979492250949| 0.0778878125547317| 0.0850421369749741| 0.0921964613952166|               NULL|  0.106436973812652| 0.0806814058997787| 0.0881082760122209|               NULL|  0.102893879814055|  0.110320749926498| 0.0829299078604264| 0.0905611872420183| 0.0981924666236103|  0.105755609582152|  0.113386888963744| 0.0847014548597245| 0.0925371435104663|  0.100304695738158|    0.1081403843889|  0.115907936616592| 0.0836112720909256| 0.0910381422033678|   0.09846501231581|               NULL|  0.113386888963744|284.917926070888|284.836789424646|284.755652778405|284.674516132164|284.593572668413|284.853403118877| 284.77130056018|284.689004818993|            NULL|284.524606519108|284.802402941239|284.719334470088|284.636265998936|284.553004345293|284.469935874141|284.761061888155|284.677220687038|284.593379485922|284.509538284806| 284.42569708369|284.745414106379|284.659834262844|284.574254419308|            NULL|284.402901549746|             NULL|0.356263425237389|0.371848097877157|0.387432770516925|0.403017443156693|0.357097077860021|0.373432699489224|0.389768321118427|0.406100634602302|0.422436256231505| 0.37010470528935|0.387035793077576|             NULL|  0.4208946605087|0.437825748296926|0.380667613321356|             NULL|0.415492459188229|0.432906536194329| 0.45032061320043|0.385203080565916|0.402385587399063| 0.41956809423221|0.436750601065357|0.453936416043832|-6.40830526179772|-6.37050439138021| -6.3327035209627|-6.29487947404586|-6.25707860362835|-6.20574265759844|-6.16580954924199|-6.12587644088554| -6.0859433325291|             NULL|-6.04519904669588|-6.00359723038722|-5.96199541407856|-5.92037042127056|-5.87874542846256|             NULL|-5.87190836115835|-5.82891595488951|-5.78592354862067|-5.74295431885117|-5.85130445324838|-5.80859016497157|-5.76587587669477| -5.7231847649173| -5.6804704766405|-4.92247748921025|-4.83459173781154|-4.74670598641284|-4.65882023501414|-4.57093448361544|-4.79483389789308|-4.70223998124088|-4.60912293511607|-4.51652901846386|             NULL| -4.6938699096791|             NULL|-4.50083513428552|-4.40405618185243|-4.30727722941933|-4.61173858247912|-4.51182085321036|-4.41242625341421|-4.31250852414545| -4.2131139243493|-4.53954671525876|-4.44224463335305|-4.34441942197474|-4.24711734006903|-4.14929212869071|  1.3193756575776|  1.4351244464219|  1.5503743180729|  1.6661231069172|              NULL|   1.292933046333|  1.4086818351773|  1.5239317068283| 1.63918157847931| 1.75443145013031|             NULL| 1.38722839586564| 1.50247826751664| 1.61772813916765| 1.73347692801195| 1.25501533964262| 1.37026521129363| 1.48551508294463| 1.60076495459564|  1.71601482624664| 1.21061170943942|  1.3193756575776| 1.42813960571578|  1.53640463666066| 1.64516858479884|
|  562.5|2005|    1|  3|  18|2529543.18573848|            NULL|2513702.11977172|2505781.58678834|2497861.05380495| 2525621.3245693|2517420.65864526|2509215.47444799|2501014.80852395|2492814.14259991|            NULL|2514090.69127005|2505664.11168419|2497237.53209833|2488810.95251247|            NULL|2511384.24560145|2502776.93508614|            NULL|2485562.31405551| 2516679.6618345|2507841.91938413|2498999.65866052|2490161.91621015|2481319.65548655|6.86105489890186|6.82040385046805|6.77907528456034|6.73842423612653|6.69709567021882|6.79262563403828|6.74858699823498|6.70522587990558|6.66118724410229|6.61782612577289|6.73774671865263|6.69235304790154|6.64628185967656|6.60021067145157|            NULL|6.69370808284934|6.64628185967656|6.59817811902988| 6.5507518958571|            NULL|6.65373455188942|6.60630832871664|6.55888210554386|6.51077836489719|            NULL|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|            NULL|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|             0.0|1093562.78301152|            NULL|            NULL|1081749.06342534|1077811.15689662|1085328.97845146|            NULL|1077453.16539401|            NULL|1069577.35233656|1078885.13140445|1074947.22487573| 1070830.3225957|1066892.41606698|1062954.50953825|1073515.25886528|1069577.35233656|1065639.44580784|1061522.54352781|1057584.63699908|1063670.49254347|1059553.59026344|1055615.68373472|  1051677.777206|1047560.87492597|            NULL|2.21211744662711|            NULL|            NULL|2.04429431844441|2.37737759108502|2.31874280015692|2.26010800922883|2.20144706540558|2.14281227447748|2.46399597982448|2.40321665149401|2.34243732316355|2.28165799483309|2.22087866650262|2.53432111488498|2.47181569547457|2.40931027606415|2.34677870375858|2.28427328434817|2.53900248311698|2.47838007215742|2.41773150830271|2.35710909734315|2.29648668638359|2.24609713298039|2.24252185944066|2.23894658590093|2.23537131236121|2.23180721155129|2.35434971212542|            NULL|2.34686398315162|2.34310994593491|  2.339367081448|2.44013393161924| 2.4362569943746|2.43236888440014|            NULL|2.42460383718105|2.50977355653523|2.50578489199247|2.50179622744971|2.49779639017714|2.49380772563438|2.53718026276319|2.53135927053133|2.52551593283984|2.51968376787816|2.51384043018667| -1.40448710631486| -1.38711322579058|  -1.3697393452663| -1.35199580770958|  -1.3346219271853|             NULL| -1.16531900633166| -1.14720581174252|  -1.1294622741858| -1.11134907959666| -1.00784511051583|-0.989731915926683|-0.971249064305107| -0.95276621268353|-0.934283361061954|-0.865527153029689|-0.846674644375681|              NULL|-0.809339284100097|-0.79085643247852|-0.793813688737973|              NULL|-0.757956956592114|             NULL|-0.721730567413824|0.653540925515532| 0.687613970593091| 0.721687015670649|0.755760060748207| 0.789485421692321| 0.566619892154414| 0.597216095897528| 0.627464615507197|  0.65806081925031|  0.68830933885998|              NULL| 0.525245480274522| 0.55306021095008| 0.580527257492193| 0.608341988167751| 0.441801288247849| 0.467182229989295|0.492563171730742| 0.517944113472188| 0.543325055213635| 0.397993087433845|              NULL| 0.443192024781627|0.465791493455517| 0.488390962129408|100193.365135218|99927.2463944692|99661.1276537203|            NULL|99129.0170162361|100051.934059939|99776.0483301352|99500.2894443448|99224.5305585545|98948.6448287504|99939.8039518258|99656.3075811996|99372.8112105733|99089.3148399471|98805.8184693208|99848.8567940007|99559.0182226893|            NULL|98979.5947680939|98689.7561967825|99727.8476049281|99430.0178607534|99132.1881165787| 98834.358372404|98536.5286282293|280.357317794938|280.231072054853|280.104319303764|279.977566552676|279.850813801587|280.073391632499|            NULL|279.813294987264|279.683500170149|            NULL|279.848278746565|            NULL|279.583111991287|279.450275108146|279.317945236009|279.665247773992|279.530382846834| 279.39602493068|279.261160003521|279.126295076362|279.557761441069|279.418333414871|279.278398377669|279.138970351471|278.999542325273|-2.62706775804115| -2.57520659668803| -2.52334543533492| -2.47111646432681|  -2.4192553029737|-2.47553018018665| -2.42109435124863| -2.36665852231061| -2.31222269337259| -2.25778686443456|-2.35562423266101| -2.29898154579307| -2.24270666858011|              NULL| -2.1301569141542|-2.25778686443456| -2.20004074860166| -2.14229463276876| -2.08418070728087| -2.02643459144797|-2.22909771134561|-2.17355845344263| -2.11801919553964| -2.06211212798167| -2.00657287007869| 1.28670010923177| 1.35384286127222|  1.42098561331268|  1.48812836535314| 1.55527111739359| 1.23451662318996|  1.29957203578875|  1.36497533829448|  1.4303786408002|  1.49578194330593| 1.19311772426347|  1.25678157723447|  1.32079332011241|  1.38445717308342|  1.44846891596136|  1.15937240328977| 1.22199258653993|  1.2846127697901|  1.34723295304026| 1.40985313629043|  1.10092689892294|              NULL|  1.21573056821491|              NULL| 1.33053423750688|278.137391735873|278.023142050466|277.908892365058|277.794642679651|277.680975900802|277.840692297749|            NULL|277.604615141678|277.486868016922|277.368537985607|            NULL|277.484536390689|277.363874733142|277.242630169036| 277.12138560493|277.415170510263|277.291594319925|277.168018129586|277.044441939248|            NULL|            NULL|277.176178821401|277.043276126132|            NULL|276.778053642151| 281.32543356387|281.172324044464|281.019214525057|280.866491645852|280.713382126445| 281.08764984055|280.930287278937|280.772538077125|280.615175515513|  280.4574263137|280.899356062896|280.738127099279|280.576898135661|280.416055812245|280.254826848627| 280.74663318369|280.582311098469|280.418375653448|280.254053568226|280.090118123205|280.641853689349|280.473278561922|280.304703434495|280.136128307067| 279.96755317964| 282.14538204851|281.994916344297|281.844174048717|281.693431753137|281.542689457556|281.947342628995|281.792451462894|281.637283705425|281.482115947956|281.326948190487|            NULL|281.631751878064|            NULL|            NULL|281.155738133672|281.663283294021|281.501477343719|281.339947984785|281.178418625851|281.016889266918|281.564540175631|281.398861946177|281.233460308091|            NULL|280.902103849182|-0.0479587210297409| -0.052173377658691|-0.0563053939615833|-0.0604374102644756|-0.0646520668934257|-0.0477934403776251| -0.052173377658691| -0.056470674613699|-0.0607679715687069| -0.065065268523715|-0.0477108000515672|-0.0520907373326331|-0.0565533149397568|-0.0610158925468806|-0.0654784701540042|-0.0475455193994516|-0.0520907373326331|-0.0566359552658147|-0.0612638135250541|-0.0658090314582356|-0.0491156855945507|-0.0536609035277322|-0.0582061214609138|-0.0628339797201531|               NULL| 0.0308736806502811|  0.035711366686826| 0.0405490527233709| 0.0453186023368659|               NULL| 0.0312824991885806| 0.0362564580712254| 0.0412985533769201| 0.0462725122595649| 0.0512464711422096| 0.0315550448807803| 0.0367334130325749| 0.0418436447613195| 0.0470220129131141| 0.0521322446418587|               NULL| 0.0370740951478246|  0.042320599722669| 0.0475671042975135|  0.052813608872358| 0.0315550448807803|  0.036665276609525| 0.0417755083382696|               NULL| 0.0519278353727089|284.903437384059|            NULL|284.741357274067|284.660220627826|284.579083981585|284.838141702084|284.756039143387|            NULL|284.591640843503|284.509345102315|284.786561976973|284.703493505821|            NULL|284.537163381027|284.454094909875|284.744641376415|284.660800175299|284.576958974183|284.493117773067|284.409276571951|            NULL|            NULL|284.557254360096|            NULL|284.385901490534|  0.3404273335527|0.356064936517714|0.371702539482729|0.387336834302415| 0.40297443726743|0.356832426233788|0.373220978188238|0.389612838288015|0.406004698387792| 0.42239655848757|0.369830129227134|0.386817455485934|0.403808089890062|0.420795416148863|0.437782742407663|0.380386420968484|0.397856736445158|0.415330360067161|0.432803983689164|0.450277607311167|0.384941737085011|             NULL|0.419435768419093|0.436684438158798|0.453933107898504|-6.41029844074064|-6.37799040066583|-6.34570553709037| -6.3134206735149|             NULL|             NULL|-6.18031803782652|-6.14606317180746|-6.11180830578841|-6.07755343976936|             NULL|-6.02366807881245|-5.98786038733787|-5.95205269586328|-5.91622182788936|-5.93358102589225|-5.89649862695417|-5.85941622801608|  -5.822333829078|             NULL|-5.87160706666698|-5.83468690322425|-5.79776673978152|-5.76082339983946|-5.72390323639673|-3.74020488110866|-3.68527628648447|-3.63034769186028|-3.57541909723609|-3.52049050261191|             NULL|-3.55554017727686|-3.49747280581701|-3.43992856382976|-3.38186119236991|-3.51264356052274|             NULL|-3.39232378182213|-3.33268702194444|-3.27252713259414|-3.43103536279537|-3.36930608502723|-3.30705367778649|-3.24532440001835|             NULL|             NULL|-3.32013191460177|-3.26206454314191|-3.20347404220945|-3.14540667074959| 2.01885756257634| 2.10616807140286| 2.19397749742267| 2.28128800624919|  2.36859851507571| 1.98642794501221| 2.07274061945214| 2.15905329389207|   2.245365968332| 2.33167864277193|  1.9604842509609|             NULL| 2.13111393106758| 2.21692768831422| 2.30224252836756| 1.93903081164924|             NULL|             NULL| 2.19397749742267|  2.27879342028272| 1.87367265932767| 1.95300049306148|   2.031829409602|  2.11115724333581| 2.18998615987632|
+-------+----+-----+---+----+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+------------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+-----------------+------------------+-----------------+------------------+------------------+-----------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+------------------+------------------+-----------------+------------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+------------------+-----------------+------------------+------------------+------------------+-----------------+-----------------+------------------+------------------+------------------+------------------+-----------------+-----------------+------------------+------------------+------------------+-----------------+-----------------+------------------+------------------+-----------------+-----------------+------------------+------------------+-----------------+------------------+-----------------+------------------+------------------+------------------+------------------+------------------+-----------------+-----------------+------------------+-----------------+------------------+------------------+------------------+------------------+-----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+-------------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+------------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+-----------------+------------------+-----------------+-----------------+-----------------+------------------+-----------------+
only showing top 5 rows

Train-Test split#

Now, we perform a train-test split.

Our split will not be random but years bases, following the same arguments given in the previous assignment (since we have the same data).

# Usual step in Spark ML: rename the response as 'label'
data = data.withColumnRenamed('energy', "label")

# Split the data in train-test
response = 'label'
predictors = [x for x in data.columns if x not in [response, 'year', 'month', 'day', 'hour']]
# Predefine train-test split
train_years = [2005, 2006, 2007]
test_years = [2008, 2009]

data_train = data.filter(col('year').isin(train_years))
data_test = data.filter(col('year').isin(test_years))
# Predefine train_train (train2) - train_validate (validate) split
train2_years = [2006, 2007]
validate_years = [2005]

data_train2 = data.filter(col('year').isin(train2_years))
data_validate = data.filter(col('year').isin(validate_years))

Pipelines definition#

  • Pipelines of the assignment:

    • Pipeline 0: imputer (mean), assembler, Linear Regression

    • Pipeline 1: imputer (mean), assembler, feature selector (fpr), Linear Regression

    • Pipeline 2: imputer (mean), assembler, feature selector (fwe), Linear Regression

    • Pipeline 3: imputer (mean), assembler, pca (k=3), Linear Regression

    • Pipeline 4: imputer (mean), assembler, feature selector (fpr) + pca (k=3), Linear Regression

  • Extra pipeline:

    • Pipeline 5: imputer (not fixed), assembler, scaler, pca (not fixed), decision tree

The idea of including the extra pipeline is to show (and learn) how to do HPO in Spark.

This is the reason why we use decision trees (which has hyperparamiters) and imputation and pca without fixing the imputation method nor the number of components in pca, for being able of doing HPO on the hyperparameters of these three pipelines elements.

The following cells define the mentioned pipelines:

# Define an imputer for missing values imputation.
imputer = Imputer(inputCols=predictors, outputCols=predictors, strategy='mean')
# Define a assembler to create a new column 'features' whose i-th row is vector with the i-th column of the data on which the assembler is applied.
# This new column is necessary to apply ML model on data in Spark.
assembler = VectorAssembler(inputCols=predictors, outputCol='features', handleInvalid='keep')
# Define a feature selection method.
selector = UnivariateFeatureSelector(featuresCol="features", outputCol="selectedFeatures",
                                     labelCol="label", selectionMode="fpr")
selector.setFeatureType("continuous").setLabelType("continuous").setSelectionThreshold(0.5)
# Define a ML model, in this case Linear Regression model, on both the 'features' (predictors) and 'label' (response) columns.
model = LinearRegression(featuresCol="selectedFeatures", labelCol='label')
# Define the pipeline using the above elements.
pipeline1 = Pipeline(stages=[imputer, assembler, selector, model])
imputer = Imputer(inputCols=predictors, outputCols=predictors, strategy='mean')
assembler = VectorAssembler(inputCols=predictors, outputCol='features', handleInvalid='keep')
selector = UnivariateFeatureSelector(featuresCol="features", outputCol="selectedFeatures",
                                     labelCol="label", selectionMode="fwe")
selector.setFeatureType("continuous").setLabelType("continuous").setSelectionThreshold(0.5)
model = LinearRegression(featuresCol="selectedFeatures", labelCol='label')
pipeline2 = Pipeline(stages=[imputer, assembler, selector, model])
imputer = Imputer(inputCols=predictors, outputCols=predictors, strategy='mean')
assembler = VectorAssembler(inputCols=predictors, outputCol='features', handleInvalid='keep')
scaler = StandardScaler(inputCol="features", outputCol="scaledFeatures", withStd=True, withMean=True)
pca = PCA(inputCol="scaledFeatures",  outputCol="pcaFeatures", k=3)
model = LinearRegression(featuresCol="pcaFeatures", labelCol='label')
pipeline3 = Pipeline(stages=[imputer, assembler, scaler, pca, model])
imputer = Imputer(inputCols=predictors, outputCols=predictors, strategy='mean')  
assembler = VectorAssembler(inputCols=predictors, outputCol="features", handleInvalid='keep')
selector = UnivariateFeatureSelector(featuresCol="features", outputCol="selectedFeatures",
                                     labelCol="label", selectionMode="fpr")
selector.setFeatureType("continuous").setLabelType("continuous").setSelectionThreshold(0.5)
scaler = StandardScaler(inputCol="features", outputCol="scaledFeatures", withStd=True, withMean=True)
pca = PCA(k=3, inputCol="scaledFeatures", outputCol="pcaFeatures")
combinedAssembler = VectorAssembler(inputCols=["selectedFeatures", "pcaFeatures"], outputCol="combinedFeatures", handleInvalid='keep')
model = LinearRegression(featuresCol="combinedFeatures", labelCol='label')
pipeline4 = Pipeline(stages=[imputer, assembler, selector, scaler, pca, combinedAssembler, model])
imputer = Imputer(inputCols=predictors, outputCols=predictors) # strategy not fixed
assembler = VectorAssembler(inputCols=predictors, outputCol='features', handleInvalid='keep')
scaler = StandardScaler(inputCol="features", outputCol="scaledFeatures", withStd=True, withMean=True)
pca = PCA(inputCol="scaledFeatures", outputCol="pcaFeatures") # k not fixed
model = DecisionTreeRegressor(featuresCol="pcaFeatures", labelCol='label')
pipeline5 = Pipeline(stages=[imputer, assembler, scaler, pca, model])
imputer = Imputer(inputCols=predictors, outputCols=predictors, strategy='mean')
assembler = VectorAssembler(inputCols=predictors, outputCol='features', handleInvalid='keep')
model = LinearRegression(featuresCol="features", labelCol='label')
pipeline0 = Pipeline(stages=[imputer, assembler, model])

Pipelines evaluation#

We are going to evaluate the pipelines using train-train and train-validate by three ways:

  • The predefine split

  • Random simple validation

  • k-fold,

The idea, again, is to make the project more enriching and productive.

Despite this, to select the best pipeline among the first four (the extra pipeline will not be compared), we will only take into account the results for the predefine split.

In addition, we will use MAE as validation metric, following the approach used in the previous project.

evaluator = RegressionEvaluator(labelCol="label", predictionCol="prediction", metricName="mae")

Pipeline 1#

Predefine split#

# Fit the pipeline
pipeline1_fitted = pipeline1.fit(data_train2)
# Apply the pipeline to the test data.
validate_predictions_pipeline1 = pipeline1_fitted.transform(data_validate).select(['label', 'prediction'])
# This action generates a new data set on which the transformers of the pipeline has been applied (imputation and assembler, in this case).
# After that the fitted model (Linear Regression) is used to make predictions for the resulting new data (using 'features' and 'label' columns).
# Then a column 'prediction' with the model predictions is added.
validate_predictions_pipeline1.show(3)
+-------+------------------+
|  label|        prediction|
+-------+------------------+
| 402.71|144.15834636166255|
|  696.8|188.89930250890757|
|1591.15| 751.1438624302173|
+-------+------------------+
only showing top 3 rows
MAE_pipeline1_predef_split = evaluator.evaluate(validate_predictions_pipeline1)
MAE_pipeline1_predef_split
450.58502952096546
data
DataFrame[label: double, year: int, month: int, day: int, hour: int, p54_162_1: double, p54_162_2: double, p54_162_3: double, p54_162_4: double, p54_162_5: double, p54_162_6: double, p54_162_7: double, p54_162_8: double, p54_162_9: double, p54_162_10: double, p54_162_11: double, p54_162_12: double, p54_162_13: double, p54_162_14: double, p54_162_15: double, p54_162_16: double, p54_162_17: double, p54_162_18: double, p54_162_19: double, p54_162_20: double, p54_162_21: double, p54_162_22: double, p54_162_23: double, p54_162_24: double, p54_162_25: double, p55_162_1: double, p55_162_2: double, p55_162_3: double, p55_162_4: double, p55_162_5: double, p55_162_6: double, p55_162_7: double, p55_162_8: double, p55_162_9: double, p55_162_10: double, p55_162_11: double, p55_162_12: double, p55_162_13: double, p55_162_14: double, p55_162_15: double, p55_162_16: double, p55_162_17: double, p55_162_18: double, p55_162_19: double, p55_162_20: double, p55_162_21: double, p55_162_22: double, p55_162_23: double, p55_162_24: double, p55_162_25: double, cape_1: double, cape_2: double, cape_3: double, cape_4: double, cape_5: double, cape_6: double, cape_7: double, cape_8: double, cape_9: double, cape_10: double, cape_11: double, cape_12: double, cape_13: double, cape_14: double, cape_15: double, cape_16: double, cape_17: double, cape_18: double, cape_19: double, cape_20: double, cape_21: double, cape_22: double, cape_23: double, cape_24: double, cape_25: double, p59_162_1: double, p59_162_2: double, p59_162_3: double, p59_162_4: double, p59_162_5: double, p59_162_6: double, p59_162_7: double, p59_162_8: double, p59_162_9: double, p59_162_10: double, p59_162_11: double, p59_162_12: double, p59_162_13: double, p59_162_14: double, p59_162_15: double, p59_162_16: double, p59_162_17: double, p59_162_18: double, p59_162_19: double, p59_162_20: double, p59_162_21: double, p59_162_22: double, p59_162_23: double, p59_162_24: double, p59_162_25: double, lai_lv_1: double, lai_lv_2: double, lai_lv_3: double, lai_lv_4: double, lai_lv_5: double, lai_lv_6: double, lai_lv_7: double, lai_lv_8: double, lai_lv_9: double, lai_lv_10: double, lai_lv_11: double, lai_lv_12: double, lai_lv_13: double, lai_lv_14: double, lai_lv_15: double, lai_lv_16: double, lai_lv_17: double, lai_lv_18: double, lai_lv_19: double, lai_lv_20: double, lai_lv_21: double, lai_lv_22: double, lai_lv_23: double, lai_lv_24: double, lai_lv_25: double, lai_hv_1: double, lai_hv_2: double, lai_hv_3: double, lai_hv_4: double, lai_hv_5: double, lai_hv_6: double, lai_hv_7: double, lai_hv_8: double, lai_hv_9: double, lai_hv_10: double, lai_hv_11: double, lai_hv_12: double, lai_hv_13: double, lai_hv_14: double, lai_hv_15: double, lai_hv_16: double, lai_hv_17: double, lai_hv_18: double, lai_hv_19: double, lai_hv_20: double, lai_hv_21: double, lai_hv_22: double, lai_hv_23: double, lai_hv_24: double, lai_hv_25: double, u10n_1: double, u10n_2: double, u10n_3: double, u10n_4: double, u10n_5: double, u10n_6: double, u10n_7: double, u10n_8: double, u10n_9: double, u10n_10: double, u10n_11: double, u10n_12: double, u10n_13: double, u10n_14: double, u10n_15: double, u10n_16: double, u10n_17: double, u10n_18: double, u10n_19: double, u10n_20: double, u10n_21: double, u10n_22: double, u10n_23: double, u10n_24: double, u10n_25: double, v10n_1: double, v10n_2: double, v10n_3: double, v10n_4: double, v10n_5: double, v10n_6: double, v10n_7: double, v10n_8: double, v10n_9: double, v10n_10: double, v10n_11: double, v10n_12: double, v10n_13: double, v10n_14: double, v10n_15: double, v10n_16: double, v10n_17: double, v10n_18: double, v10n_19: double, v10n_20: double, v10n_21: double, v10n_22: double, v10n_23: double, v10n_24: double, v10n_25: double, sp_1: double, sp_2: double, sp_3: double, sp_4: double, sp_5: double, sp_6: double, sp_7: double, sp_8: double, sp_9: double, sp_10: double, sp_11: double, sp_12: double, sp_13: double, sp_14: double, sp_15: double, sp_16: double, sp_17: double, sp_18: double, sp_19: double, sp_20: double, sp_21: double, sp_22: double, sp_23: double, sp_24: double, sp_25: double, stl1_1: double, stl1_2: double, stl1_3: double, stl1_4: double, stl1_5: double, stl1_6: double, stl1_7: double, stl1_8: double, stl1_9: double, stl1_10: double, stl1_11: double, stl1_12: double, stl1_13: double, stl1_14: double, stl1_15: double, stl1_16: double, stl1_17: double, stl1_18: double, stl1_19: double, stl1_20: double, stl1_21: double, stl1_22: double, stl1_23: double, stl1_24: double, stl1_25: double, u10_1: double, u10_2: double, u10_3: double, u10_4: double, u10_5: double, u10_6: double, u10_7: double, u10_8: double, u10_9: double, u10_10: double, u10_11: double, u10_12: double, u10_13: double, u10_14: double, u10_15: double, u10_16: double, u10_17: double, u10_18: double, u10_19: double, u10_20: double, u10_21: double, u10_22: double, u10_23: double, u10_24: double, u10_25: double, v10_1: double, v10_2: double, v10_3: double, v10_4: double, v10_5: double, v10_6: double, v10_7: double, v10_8: double, v10_9: double, v10_10: double, v10_11: double, v10_12: double, v10_13: double, v10_14: double, v10_15: double, v10_16: double, v10_17: double, v10_18: double, v10_19: double, v10_20: double, v10_21: double, v10_22: double, v10_23: double, v10_24: double, v10_25: double, t2m_1: double, t2m_2: double, t2m_3: double, t2m_4: double, t2m_5: double, t2m_6: double, t2m_7: double, t2m_8: double, t2m_9: double, t2m_10: double, t2m_11: double, t2m_12: double, t2m_13: double, t2m_14: double, t2m_15: double, t2m_16: double, t2m_17: double, t2m_18: double, t2m_19: double, t2m_20: double, t2m_21: double, t2m_22: double, t2m_23: double, t2m_24: double, t2m_25: double, stl2_1: double, stl2_2: double, stl2_3: double, stl2_4: double, stl2_5: double, stl2_6: double, stl2_7: double, stl2_8: double, stl2_9: double, stl2_10: double, stl2_11: double, stl2_12: double, stl2_13: double, stl2_14: double, stl2_15: double, stl2_16: double, stl2_17: double, stl2_18: double, stl2_19: double, stl2_20: double, stl2_21: double, stl2_22: double, stl2_23: double, stl2_24: double, stl2_25: double, stl3_1: double, stl3_2: double, stl3_3: double, stl3_4: double, stl3_5: double, stl3_6: double, stl3_7: double, stl3_8: double, stl3_9: double, stl3_10: double, stl3_11: double, stl3_12: double, stl3_13: double, stl3_14: double, stl3_15: double, stl3_16: double, stl3_17: double, stl3_18: double, stl3_19: double, stl3_20: double, stl3_21: double, stl3_22: double, stl3_23: double, stl3_24: double, stl3_25: double, iews_1: double, iews_2: double, iews_3: double, iews_4: double, iews_5: double, iews_6: double, iews_7: double, iews_8: double, iews_9: double, iews_10: double, iews_11: double, iews_12: double, iews_13: double, iews_14: double, iews_15: double, iews_16: double, iews_17: double, iews_18: double, iews_19: double, iews_20: double, iews_21: double, iews_22: double, iews_23: double, iews_24: double, iews_25: double, inss_1: double, inss_2: double, inss_3: double, inss_4: double, inss_5: double, inss_6: double, inss_7: double, inss_8: double, inss_9: double, inss_10: double, inss_11: double, inss_12: double, inss_13: double, inss_14: double, inss_15: double, inss_16: double, inss_17: double, inss_18: double, inss_19: double, inss_20: double, inss_21: double, inss_22: double, inss_23: double, inss_24: double, inss_25: double, stl4_1: double, stl4_2: double, stl4_3: double, stl4_4: double, stl4_5: double, stl4_6: double, stl4_7: double, stl4_8: double, stl4_9: double, stl4_10: double, stl4_11: double, stl4_12: double, stl4_13: double, stl4_14: double, stl4_15: double, stl4_16: double, stl4_17: double, stl4_18: double, stl4_19: double, stl4_20: double, stl4_21: double, stl4_22: double, stl4_23: double, stl4_24: double, stl4_25: double, fsr_1: double, fsr_2: double, fsr_3: double, fsr_4: double, fsr_5: double, fsr_6: double, fsr_7: double, fsr_8: double, fsr_9: double, fsr_10: double, fsr_11: double, fsr_12: double, fsr_13: double, fsr_14: double, fsr_15: double, fsr_16: double, fsr_17: double, fsr_18: double, fsr_19: double, fsr_20: double, fsr_21: double, fsr_22: double, fsr_23: double, fsr_24: double, fsr_25: double, flsr_1: double, flsr_2: double, flsr_3: double, flsr_4: double, flsr_5: double, flsr_6: double, flsr_7: double, flsr_8: double, flsr_9: double, flsr_10: double, flsr_11: double, flsr_12: double, flsr_13: double, flsr_14: double, flsr_15: double, flsr_16: double, flsr_17: double, flsr_18: double, flsr_19: double, flsr_20: double, flsr_21: double, flsr_22: double, flsr_23: double, flsr_24: double, flsr_25: double, u100_1: double, u100_2: double, u100_3: double, u100_4: double, u100_5: double, u100_6: double, u100_7: double, u100_8: double, u100_9: double, u100_10: double, u100_11: double, u100_12: double, u100_13: double, u100_14: double, u100_15: double, u100_16: double, u100_17: double, u100_18: double, u100_19: double, u100_20: double, u100_21: double, u100_22: double, u100_23: double, u100_24: double, u100_25: double, v100_1: double, v100_2: double, v100_3: double, v100_4: double, v100_5: double, v100_6: double, v100_7: double, v100_8: double, v100_9: double, v100_10: double, v100_11: double, v100_12: double, v100_13: double, v100_14: double, v100_15: double, v100_16: double, v100_17: double, v100_18: double, v100_19: double, v100_20: double, v100_21: double, v100_22: double, v100_23: double, v100_24: double, v100_25: double]

The number of selected features with this pipeline (fpr selector) is 544 out of 555.

len(pipeline1_fitted.stages[2].selectedFeatures)
544

Random simple validation#

pipeline1_sv = TrainValidationSplit(estimator=pipeline1,
                              evaluator=RegressionEvaluator(metricName="mae"),
                              estimatorParamMaps=ParamGridBuilder().build(),
                              trainRatio=0.75)

pipeline1_sv_fitted = pipeline1_sv.fit(data_train)
MAE_pipeline1_sv = pipeline1_sv_fitted.validationMetrics[0]
MAE_pipeline1_sv
428.04922049265014

k-fold cv#

pipeline1_kfold = CrossValidator(estimator=pipeline1, 
                                 evaluator=RegressionEvaluator(labelCol="label", 
                                                               predictionCol="prediction", 
                                                               metricName="mae"),
                                 numFolds=3,
                                 estimatorParamMaps=ParamGridBuilder().build()
                                )

pipeline1_kfold_fitted = pipeline1_kfold.fit(data_train)
MAE_pipeline1_kfold = pipeline1_kfold_fitted.avgMetrics[0]
MAE_pipeline1_kfold
432.9321541656756

Pipeline 2#

Predefine split#

pipeline2_fitted = pipeline2.fit(data_train2)
validate_predictions_pipeline2 = pipeline2_fitted.transform(data_validate).select(['label', 'prediction'])
MAE_pipeline2_predef_split = evaluator.evaluate(validate_predictions_pipeline2)
MAE_pipeline2_predef_split
447.7850861127979

The number of selected features with this pipeline (fwe selector) is 496 out of 555.

len(pipeline2_fitted.stages[2].selectedFeatures)
496

Random simple validation#

pipeline2_sv = TrainValidationSplit(estimator=pipeline2,
                              evaluator=RegressionEvaluator(metricName="mae"),
                              estimatorParamMaps=ParamGridBuilder().build(),
                              trainRatio=0.75)

pipeline2_sv_fitted = pipeline2_sv.fit(data_train)
MAE_pipeline2_sv = pipeline2_sv_fitted.validationMetrics[0]
MAE_pipeline2_sv
420.96574222724604

k-fold cv#

pipeline2_kfold = CrossValidator(estimator=pipeline2, 
                                 evaluator=RegressionEvaluator(labelCol="label", 
                                                               predictionCol="prediction", 
                                                               metricName="mae"),
                                 numFolds=3,
                                 estimatorParamMaps=ParamGridBuilder().build()
                                )

pipeline2_kfold_fitted = pipeline2_kfold.fit(data_train)
MAE_pipeline2_kfold = pipeline2_kfold_fitted.avgMetrics[0]
MAE_pipeline2_kfold
428.8867064566628

Pipeline 3#

Predefine split#

pipeline3_fitted = pipeline3.fit(data_train2)
validate_predictions_pipeline3 = pipeline3_fitted.transform(data_validate).select(['label', 'prediction'])
MAE_pipeline3_predef_split = evaluator.evaluate(validate_predictions_pipeline3)
MAE_pipeline3_predef_split
515.1934949236103

Random simple validation#

pipeline3_sv = TrainValidationSplit(estimator=pipeline3,
                              evaluator=RegressionEvaluator(metricName="mae"),
                              estimatorParamMaps=ParamGridBuilder().build(),
                              trainRatio=0.75)

pipeline3_sv_fitted = pipeline3_sv.fit(data_train)
MAE_pipeline3_sv = pipeline3_sv_fitted.validationMetrics[0]
MAE_pipeline3_sv
505.81672893381335

k-fold cv#

pipeline3_kfold = CrossValidator(estimator=pipeline3, 
                                 evaluator=RegressionEvaluator(labelCol="label", 
                                                               predictionCol="prediction", 
                                                               metricName="mae"),
                                 numFolds=3,
                                 estimatorParamMaps=ParamGridBuilder().build()
                                )

pipeline3_kfold_fitted = pipeline3_kfold.fit(data_train)
MAE_pipeline3_kfold = pipeline3_kfold_fitted.avgMetrics[0]
MAE_pipeline3_kfold
500.1136347904351

Pipeline 4#

Predefine split#

pipeline4_fitted = pipeline4.fit(data_train2)
validate_predictions_pipeline4 = pipeline4_fitted.transform(data_validate).select(['label', 'prediction'])
MAE_pipeline4_predef_split = evaluator.evaluate(validate_predictions_pipeline4)
MAE_pipeline4_predef_split
451.70349096551405

Random simple validation#

pipeline4_sv = TrainValidationSplit(estimator=pipeline4,
                              evaluator=RegressionEvaluator(metricName="mae"),
                              estimatorParamMaps=ParamGridBuilder().build(),
                              trainRatio=0.75)

pipeline4_sv_fitted = pipeline4_sv.fit(data_train)
MAE_pipeline4_sv = pipeline4_sv_fitted.validationMetrics[0]
MAE_pipeline4_sv
428.3733104604351

k-fold cv#

pipeline4_kfold = CrossValidator(estimator=pipeline4, 
                                 evaluator=RegressionEvaluator(labelCol="label", 
                                                               predictionCol="prediction", 
                                                               metricName="mae"),
                                 numFolds=3,
                                 estimatorParamMaps=ParamGridBuilder().build()
                                )

pipeline4_kfold_fitted = pipeline4_kfold.fit(data_train)
MAE_pipeline4_kfold = pipeline4_kfold_fitted.avgMetrics[0]
MAE_pipeline4_kfold
433.057891066047

Pipeline 5 (extra)#

Using predefine split#

Apache Spark’s MLlib doesn’t natively support predefined splits for HPO like scikit-learn does with its PredefinedSplit.

This is the reason why we cannot compare the extra pipeline with the others by predefine split.

Using random simple validation#

paramGrid = ParamGridBuilder() \
    .addGrid(imputer.strategy, ['mean', 'median']) \
    .addGrid(pca.k, [3, 10]) \
    .addGrid(pipeline5.getStages()[-1].maxDepth, [2, 6]) \
    .addGrid(pipeline5.getStages()[-1].maxBins, [20, 40]) \
    .addGrid(pipeline5.getStages()[-1].minInstancesPerNode, [2, 10]) \
    .build()

pipeline5_HPO_sv = TrainValidationSplit(estimator=pipeline5,
                              evaluator=RegressionEvaluator(metricName="mae"),
                              estimatorParamMaps=paramGrid,
                              trainRatio=0.75)

pipeline5_HPO_sv_fitted = pipeline5_HPO_sv.fit(data_train)

final_model_pipeline5_sv = pipeline5_HPO_sv_fitted.bestModel
# Time: 5.20 mins
final_model_pipeline5_sv_params = {param.name: value for param, value in final_model_pipeline5_sv.stages[-1].extractParamMap().items()}
final_model_pipeline5_sv_params
{'cacheNodeIds': False,
 'checkpointInterval': 10,
 'featuresCol': 'pcaFeatures',
 'impurity': 'variance',
 'labelCol': 'label',
 'leafCol': '',
 'maxBins': 40,
 'maxDepth': 6,
 'maxMemoryInMB': 256,
 'minInfoGain': 0.0,
 'minInstancesPerNode': 10,
 'minWeightFractionPerNode': 0.0,
 'predictionCol': 'prediction',
 'seed': 3529065940959987723}
final_model_pipeline5_sv_MAE = min(pipeline5_HPO_sv_fitted.validationMetrics)
final_model_pipeline5_sv_MAE
366.0861391472056

Using k-fold cv#

paramGrid = ParamGridBuilder() \
    .addGrid(imputer.strategy, ['mean', 'median']) \
    .addGrid(pca.k, [3, 10]) \
    .addGrid(pipeline5.getStages()[-1].maxDepth, [2, 6]) \
    .addGrid(pipeline5.getStages()[-1].maxBins, [20, 40]) \
    .addGrid(pipeline5.getStages()[-1].minInstancesPerNode, [2, 10]) \
    .build()

pipeline5_HPO_kfold = CrossValidator(estimator=pipeline5, 
                                     evaluator=RegressionEvaluator(labelCol="label", 
                                                               predictionCol="prediction", 
                                                               metricName="mae"),
                                     numFolds=2,
                                    estimatorParamMaps=paramGrid
                                )

pipeline5_HPO_kfold_fitted = pipeline5_HPO_kfold.fit(data_train)

final_model_pipeline5_kfold = pipeline5_HPO_kfold_fitted.bestModel
# Time: 8.26 mins
final_model_pipeline5_kfold_imputer_strategy = final_model_pipeline5_kfold.stages[0].getStrategy()
final_model_pipeline5_kfold_imputer_strategy
'median'
final_model_pipeline5_kfold_pca_n_components = final_model_pipeline5_kfold.stages[3].getK()
final_model_pipeline5_kfold_pca_n_components
3
final_model_pipeline5_kfold_params = {param.name: value for param, value in final_model_pipeline5_kfold.stages[-1].extractParamMap().items()}
final_model_pipeline5_kfold_params
{'cacheNodeIds': False,
 'checkpointInterval': 10,
 'featuresCol': 'pcaFeatures',
 'impurity': 'variance',
 'labelCol': 'label',
 'leafCol': '',
 'maxBins': 40,
 'maxDepth': 6,
 'maxMemoryInMB': 256,
 'minInfoGain': 0.0,
 'minInstancesPerNode': 10,
 'minWeightFractionPerNode': 0.0,
 'predictionCol': 'prediction',
 'seed': 3529065940959987723}
final_model_pipeline5_kfold_MAE = min(pipeline5_HPO_kfold_fitted.avgMetrics)
final_model_pipeline5_kfold_MAE
368.84319998691024

Now we can update the pipeline taking into account the HPO results and compute the MAE again, to check that it is the same that the one we have just obtained:

imputer = Imputer(inputCols=predictors, outputCols=predictors, strategy=final_model_pipeline5_kfold_imputer_strategy)  
assembler = VectorAssembler(inputCols=predictors, outputCol='features', handleInvalid='keep')
scaler = StandardScaler(inputCol="features", outputCol="scaledFeatures", withStd=True, withMean=True)
pca = PCA(inputCol="scaledFeatures", outputCol="pcaFeatures", k=final_model_pipeline5_kfold_pca_n_components)  
model = DecisionTreeRegressor(featuresCol="pcaFeatures", labelCol='label', 
                              maxDepth=final_model_pipeline5_kfold_params['maxDepth'],
                              maxBins=final_model_pipeline5_kfold_params['maxBins'],
                              minInstancesPerNode=final_model_pipeline5_kfold_params['minInstancesPerNode'])
pipeline5_final = Pipeline(stages=[imputer, assembler, scaler, pca, model])
pipeline5_final_kfold = CrossValidator(estimator=pipeline5_final, 
                                     evaluator=RegressionEvaluator(labelCol="label", 
                                                               predictionCol="prediction", 
                                                               metricName="mae"),
                                     numFolds=2,
                                     estimatorParamMaps=ParamGridBuilder().build()
                                    )
pipeline5_final_kfold_fitted = pipeline5_final_kfold.fit(data_train)
pipeline5_final_kfold_MAE = min(pipeline5_final_kfold_fitted.avgMetrics)
pipeline5_final_kfold_MAE
383.82841469017933

Pipeline 0#

Predefine split#

pipeline0_fitted = pipeline0.fit(data_train2)
validate_predictions_pipeline0 = pipeline0_fitted.transform(data_validate).select(['label', 'prediction'])
MAE_pipeline0_predef_split = evaluator.evaluate(validate_predictions_pipeline0)
MAE_pipeline0_predef_split
452.3205499585219

Random simple validation#

pipeline0_sv = TrainValidationSplit(estimator=pipeline0,
                              evaluator=RegressionEvaluator(metricName="mae"),
                              estimatorParamMaps=ParamGridBuilder().build(),
                              trainRatio=0.75)

pipeline0_sv_fitted = pipeline0_sv.fit(data_train)
MAE_pipeline0_sv = pipeline0_sv_fitted.validationMetrics[0]
MAE_pipeline0_sv
426.48961804895526

k-fold cv#

pipeline0_kfold = CrossValidator(estimator=pipeline0, 
                                 evaluator=RegressionEvaluator(labelCol="label", 
                                                               predictionCol="prediction", 
                                                               metricName="mae"),
                                 numFolds=3,
                                 estimatorParamMaps=ParamGridBuilder().build()
                                )

pipeline0_kfold_fitted = pipeline0_kfold.fit(data_train)
MAE_pipeline0_kfold = pipeline0_kfold_fitted.avgMetrics[0]
MAE_pipeline0_kfold
434.6859310337352

Pipelines comparison#

In this section we are going to compare the different pipelines (from 0 to 4) according to their validation MAE computed by the predefined split.

MAE_arr = np.array([MAE_pipeline0_predef_split, MAE_pipeline1_predef_split, MAE_pipeline2_predef_split, 
                    MAE_pipeline3_predef_split, MAE_pipeline4_predef_split])

MAE_arr
array([452.32054996, 450.58502952, 447.78508611, 515.19349492,
       451.70349097])
pipelines_indices_sorted = np.argsort(MAE_arr)
pipelines_indices_sorted
array([2, 1, 4, 0, 3])
pipelines_indices_sorted[0]
2

Therefore, the “best” pipeline between the five compared is the pipeline 2: [imputer (mean), assembler, feature selector (fwe), Linear Regression. This will be consider the final pipeline.

Again, we want to highlight that we have excluded the extra pipeline (pipeline 5) of the comparison, because it couldn`t be evaluated with the predefine split, and this is the validation method we have choose to evaluate all the pipelines.

Estimation of future performance for the final pipeline#

In this section we are going to estimate the future performance of the final pipeline (pipeline 2).

pipeline2_fitted = pipeline2.fit(data_train)
test_predictions_pipeline2 = pipeline2_fitted.transform(data_test).select(['label', 'prediction'])
MAE_future_performance_pipeline2_predef_split = evaluator.evaluate(test_predictions_pipeline2)
MAE_future_performance_pipeline2_predef_split
412.9088216020078

The estimation of future performance of the final pipeline in terms of MAE is 412.91.

Conclusions#

We can conclude several things from this project:

  • Spark provide a simple and powerful way for carrying out Machine Learning tasks.

  • Pipelines are one of the most powerful tools provided by Spark to perform Machine Learning tasks. Thanks to this project and the previous one, is pretty clear that pipelines are key element in any Machine Learning project, so, any good Data Scientist should know how to use them to make their ML projects much more efficient and robust.

  • Feature selection is an important step in every Machine Learning pipeline since it can lead to better prediction performance.