{
"cells": [
{
"cell_type": "markdown",
"metadata": {
"nbpresent": {
"id": "a20290f5-2a26-4622-9e8b-ce94cc1dcb1a"
},
"slideshow": {
"slide_type": "slide"
},
"tags": []
},
"source": [
"# Estimation of tree height using GEDI dataset - Clean Data - Perceptron 2 - 2022"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Base on data quality flag select more reilable tree height."
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {
"nbpresent": {
"id": "8f67df50-3050-47d2-a5d9-4329a61325fa"
},
"slideshow": {
"slide_type": "fragment"
}
},
"outputs": [],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import torch\n",
"import torch.nn as nn\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"import scipy\n",
"from sklearn.metrics import r2_score\n",
"from sklearn.model_selection import train_test_split"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"**File storing tree hight (cm) obtained by 6 algorithms, with their associate quality flags.**\n",
"The quality flags can be used to refine and select the best tree height estimation and use it as tree height observation.\n",
"\n",
"* a?_95: tree hight (cm) at 95 quintile, for each algorithm \n",
"* min_rh_95: minimum value of tree hight (cm) ammong the 6 algorithms \n",
"* max_rh_95: maximum value of tree hight (cm) ammong the 6 algorithms \n",
"* BEAM: 1-4 coverage beam = lower power (worse) ; 5-8 power beam = higher power (better) \n",
"* digital_elev: digital mdoel elevation \n",
"* elev_low: elevation of center of lowest mode \n",
"* qc_a?: quality_flag for six algorithms quality_flag = 1 (better); = 0 (worse) \n",
"* se_a?: sensitivity for six algorithms sensitivity < 0.95 (worse); sensitivity > 0.95 (beter ) \n",
"* deg_fg: (degrade_flag) not-degraded 0 (better) ; degraded > 0 (worse) \n",
"* solar_ele: solar elevation. > 0 day (worse); < 0 night (better) "
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" ID | \n",
" X | \n",
" Y | \n",
" a1_95 | \n",
" a2_95 | \n",
" a3_95 | \n",
" a4_95 | \n",
" a5_95 | \n",
" a6_95 | \n",
" min_rh_95 | \n",
" max_rh_95 | \n",
" BEAM | \n",
" digital_elev | \n",
" elev_low | \n",
" qc_a1 | \n",
" qc_a2 | \n",
" qc_a3 | \n",
" qc_a4 | \n",
" qc_a5 | \n",
" qc_a6 | \n",
" se_a1 | \n",
" se_a2 | \n",
" se_a3 | \n",
" se_a4 | \n",
" se_a5 | \n",
" se_a6 | \n",
" deg_fg | \n",
" solar_ele | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" 6.050001 | \n",
" 49.727499 | \n",
" 3139 | \n",
" 3139 | \n",
" 3139 | \n",
" 3120 | \n",
" 3139 | \n",
" 3139 | \n",
" 3120 | \n",
" 3139 | \n",
" 5 | \n",
" 410.0 | \n",
" 383.72153 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0.962 | \n",
" 0.984 | \n",
" 0.968 | \n",
" 0.962 | \n",
" 0.989 | \n",
" 0.979 | \n",
" 0 | \n",
" 17.7 | \n",
"
\n",
" \n",
" 1 | \n",
" 2 | \n",
" 6.050002 | \n",
" 49.922155 | \n",
" 1022 | \n",
" 2303 | \n",
" 970 | \n",
" 872 | \n",
" 5596 | \n",
" 1524 | \n",
" 872 | \n",
" 5596 | \n",
" 5 | \n",
" 290.0 | \n",
" 2374.14110 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.948 | \n",
" 0.990 | \n",
" 0.960 | \n",
" 0.948 | \n",
" 0.994 | \n",
" 0.980 | \n",
" 0 | \n",
" 43.7 | \n",
"
\n",
" \n",
" 2 | \n",
" 3 | \n",
" 6.050002 | \n",
" 48.602377 | \n",
" 380 | \n",
" 1336 | \n",
" 332 | \n",
" 362 | \n",
" 1336 | \n",
" 1340 | \n",
" 332 | \n",
" 1340 | \n",
" 4 | \n",
" 440.0 | \n",
" 435.97781 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0.947 | \n",
" 0.975 | \n",
" 0.956 | \n",
" 0.947 | \n",
" 0.981 | \n",
" 0.968 | \n",
" 0 | \n",
" 0.2 | \n",
"
\n",
" \n",
" 3 | \n",
" 4 | \n",
" 6.050009 | \n",
" 48.151979 | \n",
" 3153 | \n",
" 3142 | \n",
" 3142 | \n",
" 3127 | \n",
" 3138 | \n",
" 3142 | \n",
" 3127 | \n",
" 3153 | \n",
" 2 | \n",
" 450.0 | \n",
" 422.00537 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0.930 | \n",
" 0.970 | \n",
" 0.943 | \n",
" 0.930 | \n",
" 0.978 | \n",
" 0.962 | \n",
" 0 | \n",
" -14.2 | \n",
"
\n",
" \n",
" 4 | \n",
" 5 | \n",
" 6.050010 | \n",
" 49.588410 | \n",
" 666 | \n",
" 4221 | \n",
" 651 | \n",
" 33 | \n",
" 5611 | \n",
" 2723 | \n",
" 33 | \n",
" 5611 | \n",
" 8 | \n",
" 370.0 | \n",
" 2413.74830 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0.941 | \n",
" 0.983 | \n",
" 0.946 | \n",
" 0.941 | \n",
" 0.992 | \n",
" 0.969 | \n",
" 0 | \n",
" 22.1 | \n",
"
\n",
" \n",
" 5 | \n",
" 6 | \n",
" 6.050014 | \n",
" 48.608456 | \n",
" 787 | \n",
" 1179 | \n",
" 1187 | \n",
" 761 | \n",
" 1833 | \n",
" 1833 | \n",
" 761 | \n",
" 1833 | \n",
" 3 | \n",
" 420.0 | \n",
" 415.51581 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0.952 | \n",
" 0.979 | \n",
" 0.961 | \n",
" 0.952 | \n",
" 0.986 | \n",
" 0.975 | \n",
" 0 | \n",
" 0.2 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" ID X Y a1_95 a2_95 a3_95 a4_95 a5_95 a6_95 \\\n",
"0 1 6.050001 49.727499 3139 3139 3139 3120 3139 3139 \n",
"1 2 6.050002 49.922155 1022 2303 970 872 5596 1524 \n",
"2 3 6.050002 48.602377 380 1336 332 362 1336 1340 \n",
"3 4 6.050009 48.151979 3153 3142 3142 3127 3138 3142 \n",
"4 5 6.050010 49.588410 666 4221 651 33 5611 2723 \n",
"5 6 6.050014 48.608456 787 1179 1187 761 1833 1833 \n",
"\n",
" min_rh_95 max_rh_95 BEAM digital_elev elev_low qc_a1 qc_a2 qc_a3 \\\n",
"0 3120 3139 5 410.0 383.72153 1 1 1 \n",
"1 872 5596 5 290.0 2374.14110 0 0 0 \n",
"2 332 1340 4 440.0 435.97781 1 1 1 \n",
"3 3127 3153 2 450.0 422.00537 1 1 1 \n",
"4 33 5611 8 370.0 2413.74830 0 0 0 \n",
"5 761 1833 3 420.0 415.51581 1 1 1 \n",
"\n",
" qc_a4 qc_a5 qc_a6 se_a1 se_a2 se_a3 se_a4 se_a5 se_a6 deg_fg \\\n",
"0 1 1 1 0.962 0.984 0.968 0.962 0.989 0.979 0 \n",
"1 0 0 0 0.948 0.990 0.960 0.948 0.994 0.980 0 \n",
"2 1 1 1 0.947 0.975 0.956 0.947 0.981 0.968 0 \n",
"3 1 1 1 0.930 0.970 0.943 0.930 0.978 0.962 0 \n",
"4 0 0 0 0.941 0.983 0.946 0.941 0.992 0.969 0 \n",
"5 1 1 1 0.952 0.979 0.961 0.952 0.986 0.975 0 \n",
"\n",
" solar_ele \n",
"0 17.7 \n",
"1 43.7 \n",
"2 0.2 \n",
"3 -14.2 \n",
"4 22.1 \n",
"5 0.2 "
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"height_6algorithms = pd.read_csv(\"tree_height/txt/eu_y_x_select_6algorithms_fullTable.txt\", sep=\" \", index_col=False)\n",
"pd.set_option('display.max_columns',None)\n",
"height_6algorithms.head(6)"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [],
"source": [
"height_6algorithms_sel = height_6algorithms.loc[(height_6algorithms['BEAM'] > 4) \n",
" & (height_6algorithms['qc_a1'] == 1)\n",
" & (height_6algorithms['qc_a2'] == 1)\n",
" & (height_6algorithms['qc_a3'] == 1) \n",
" & (height_6algorithms['qc_a4'] == 1) \n",
" & (height_6algorithms['qc_a5'] == 1) \n",
" & (height_6algorithms['qc_a6'] == 1)\n",
" & (height_6algorithms['se_a1'] > 0.95) \n",
" & (height_6algorithms['se_a2'] > 0.95)\n",
" & (height_6algorithms['se_a3'] > 0.95)\n",
" & (height_6algorithms['se_a4'] > 0.95)\n",
" & (height_6algorithms['se_a5'] > 0.95) \n",
" & (height_6algorithms['se_a6'] > 0.95)\n",
" & (height_6algorithms['deg_fg'] == 0) \n",
" & (height_6algorithms['solar_ele'] < 0)]"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" ID | \n",
" X | \n",
" Y | \n",
" a1_95 | \n",
" a2_95 | \n",
" a3_95 | \n",
" a4_95 | \n",
" a5_95 | \n",
" a6_95 | \n",
" min_rh_95 | \n",
" max_rh_95 | \n",
" BEAM | \n",
" digital_elev | \n",
" elev_low | \n",
" qc_a1 | \n",
" qc_a2 | \n",
" qc_a3 | \n",
" qc_a4 | \n",
" qc_a5 | \n",
" qc_a6 | \n",
" se_a1 | \n",
" se_a2 | \n",
" se_a3 | \n",
" se_a4 | \n",
" se_a5 | \n",
" se_a6 | \n",
" deg_fg | \n",
" solar_ele | \n",
"
\n",
" \n",
" \n",
" \n",
" 7 | \n",
" 8 | \n",
" 6.050019 | \n",
" 49.921613 | \n",
" 3303 | \n",
" 3288 | \n",
" 3296 | \n",
" 3236 | \n",
" 3857 | \n",
" 3292 | \n",
" 3236 | \n",
" 3857 | \n",
" 7 | \n",
" 320.0 | \n",
" 297.68533 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0.971 | \n",
" 0.988 | \n",
" 0.976 | \n",
" 0.971 | \n",
" 0.992 | \n",
" 0.984 | \n",
" 0 | \n",
" -33.9 | \n",
"
\n",
" \n",
" 11 | \n",
" 12 | \n",
" 6.050039 | \n",
" 47.995344 | \n",
" 2762 | \n",
" 2736 | \n",
" 2740 | \n",
" 2747 | \n",
" 3893 | \n",
" 2736 | \n",
" 2736 | \n",
" 3893 | \n",
" 5 | \n",
" 390.0 | \n",
" 368.55121 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0.975 | \n",
" 0.990 | \n",
" 0.979 | \n",
" 0.975 | \n",
" 0.994 | \n",
" 0.987 | \n",
" 0 | \n",
" -37.3 | \n",
"
\n",
" \n",
" 14 | \n",
" 15 | \n",
" 6.050046 | \n",
" 49.865317 | \n",
" 1398 | \n",
" 2505 | \n",
" 2509 | \n",
" 1316 | \n",
" 2848 | \n",
" 2505 | \n",
" 1316 | \n",
" 2848 | \n",
" 6 | \n",
" 340.0 | \n",
" 330.40564 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0.973 | \n",
" 0.990 | \n",
" 0.979 | \n",
" 0.973 | \n",
" 0.994 | \n",
" 0.986 | \n",
" 0 | \n",
" -18.2 | \n",
"
\n",
" \n",
" 15 | \n",
" 16 | \n",
" 6.050048 | \n",
" 49.050020 | \n",
" 984 | \n",
" 943 | \n",
" 947 | \n",
" 958 | \n",
" 2617 | \n",
" 947 | \n",
" 943 | \n",
" 2617 | \n",
" 6 | \n",
" 300.0 | \n",
" 291.22598 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0.978 | \n",
" 0.991 | \n",
" 0.982 | \n",
" 0.978 | \n",
" 0.995 | \n",
" 0.988 | \n",
" 0 | \n",
" -35.4 | \n",
"
\n",
" \n",
" 16 | \n",
" 17 | \n",
" 6.050049 | \n",
" 48.391359 | \n",
" 3362 | \n",
" 3332 | \n",
" 3336 | \n",
" 3351 | \n",
" 4467 | \n",
" 3336 | \n",
" 3332 | \n",
" 4467 | \n",
" 5 | \n",
" 530.0 | \n",
" 504.78122 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0.973 | \n",
" 0.988 | \n",
" 0.977 | \n",
" 0.973 | \n",
" 0.992 | \n",
" 0.984 | \n",
" 0 | \n",
" -5.1 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 1267207 | \n",
" 1267208 | \n",
" 9.949829 | \n",
" 49.216272 | \n",
" 2160 | \n",
" 2816 | \n",
" 2816 | \n",
" 2104 | \n",
" 3299 | \n",
" 2816 | \n",
" 2104 | \n",
" 3299 | \n",
" 8 | \n",
" 420.0 | \n",
" 386.44556 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0.980 | \n",
" 0.993 | \n",
" 0.984 | \n",
" 0.980 | \n",
" 0.995 | \n",
" 0.989 | \n",
" 0 | \n",
" -16.9 | \n",
"
\n",
" \n",
" 1267211 | \n",
" 1267212 | \n",
" 9.949856 | \n",
" 49.881190 | \n",
" 3190 | \n",
" 3179 | \n",
" 3179 | \n",
" 3171 | \n",
" 3822 | \n",
" 3179 | \n",
" 3171 | \n",
" 3822 | \n",
" 6 | \n",
" 380.0 | \n",
" 363.69348 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0.968 | \n",
" 0.986 | \n",
" 0.974 | \n",
" 0.968 | \n",
" 0.990 | \n",
" 0.982 | \n",
" 0 | \n",
" -35.1 | \n",
"
\n",
" \n",
" 1267216 | \n",
" 1267217 | \n",
" 9.949880 | \n",
" 49.873435 | \n",
" 2061 | \n",
" 2828 | \n",
" 2046 | \n",
" 2024 | \n",
" 2828 | \n",
" 2828 | \n",
" 2024 | \n",
" 2828 | \n",
" 7 | \n",
" 380.0 | \n",
" 361.06812 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0.967 | \n",
" 0.988 | \n",
" 0.974 | \n",
" 0.967 | \n",
" 0.993 | \n",
" 0.983 | \n",
" 0 | \n",
" -35.1 | \n",
"
\n",
" \n",
" 1267227 | \n",
" 1267228 | \n",
" 9.949958 | \n",
" 49.127182 | \n",
" 366 | \n",
" 2307 | \n",
" 1260 | \n",
" 355 | \n",
" 3531 | \n",
" 2719 | \n",
" 355 | \n",
" 3531 | \n",
" 6 | \n",
" 500.0 | \n",
" 493.52792 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0.973 | \n",
" 0.989 | \n",
" 0.978 | \n",
" 0.973 | \n",
" 0.993 | \n",
" 0.985 | \n",
" 0 | \n",
" -36.0 | \n",
"
\n",
" \n",
" 1267237 | \n",
" 1267238 | \n",
" 9.949999 | \n",
" 49.936763 | \n",
" 2513 | \n",
" 2490 | \n",
" 2490 | \n",
" 2494 | \n",
" 2490 | \n",
" 2490 | \n",
" 2490 | \n",
" 2513 | \n",
" 5 | \n",
" 360.0 | \n",
" 346.54227 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 1 | \n",
" 0.968 | \n",
" 0.988 | \n",
" 0.974 | \n",
" 0.968 | \n",
" 0.993 | \n",
" 0.983 | \n",
" 0 | \n",
" -32.2 | \n",
"
\n",
" \n",
"
\n",
"
226892 rows × 28 columns
\n",
"
"
],
"text/plain": [
" ID X Y a1_95 a2_95 a3_95 a4_95 a5_95 \\\n",
"7 8 6.050019 49.921613 3303 3288 3296 3236 3857 \n",
"11 12 6.050039 47.995344 2762 2736 2740 2747 3893 \n",
"14 15 6.050046 49.865317 1398 2505 2509 1316 2848 \n",
"15 16 6.050048 49.050020 984 943 947 958 2617 \n",
"16 17 6.050049 48.391359 3362 3332 3336 3351 4467 \n",
"... ... ... ... ... ... ... ... ... \n",
"1267207 1267208 9.949829 49.216272 2160 2816 2816 2104 3299 \n",
"1267211 1267212 9.949856 49.881190 3190 3179 3179 3171 3822 \n",
"1267216 1267217 9.949880 49.873435 2061 2828 2046 2024 2828 \n",
"1267227 1267228 9.949958 49.127182 366 2307 1260 355 3531 \n",
"1267237 1267238 9.949999 49.936763 2513 2490 2490 2494 2490 \n",
"\n",
" a6_95 min_rh_95 max_rh_95 BEAM digital_elev elev_low qc_a1 \\\n",
"7 3292 3236 3857 7 320.0 297.68533 1 \n",
"11 2736 2736 3893 5 390.0 368.55121 1 \n",
"14 2505 1316 2848 6 340.0 330.40564 1 \n",
"15 947 943 2617 6 300.0 291.22598 1 \n",
"16 3336 3332 4467 5 530.0 504.78122 1 \n",
"... ... ... ... ... ... ... ... \n",
"1267207 2816 2104 3299 8 420.0 386.44556 1 \n",
"1267211 3179 3171 3822 6 380.0 363.69348 1 \n",
"1267216 2828 2024 2828 7 380.0 361.06812 1 \n",
"1267227 2719 355 3531 6 500.0 493.52792 1 \n",
"1267237 2490 2490 2513 5 360.0 346.54227 1 \n",
"\n",
" qc_a2 qc_a3 qc_a4 qc_a5 qc_a6 se_a1 se_a2 se_a3 se_a4 se_a5 \\\n",
"7 1 1 1 1 1 0.971 0.988 0.976 0.971 0.992 \n",
"11 1 1 1 1 1 0.975 0.990 0.979 0.975 0.994 \n",
"14 1 1 1 1 1 0.973 0.990 0.979 0.973 0.994 \n",
"15 1 1 1 1 1 0.978 0.991 0.982 0.978 0.995 \n",
"16 1 1 1 1 1 0.973 0.988 0.977 0.973 0.992 \n",
"... ... ... ... ... ... ... ... ... ... ... \n",
"1267207 1 1 1 1 1 0.980 0.993 0.984 0.980 0.995 \n",
"1267211 1 1 1 1 1 0.968 0.986 0.974 0.968 0.990 \n",
"1267216 1 1 1 1 1 0.967 0.988 0.974 0.967 0.993 \n",
"1267227 1 1 1 1 1 0.973 0.989 0.978 0.973 0.993 \n",
"1267237 1 1 1 1 1 0.968 0.988 0.974 0.968 0.993 \n",
"\n",
" se_a6 deg_fg solar_ele \n",
"7 0.984 0 -33.9 \n",
"11 0.987 0 -37.3 \n",
"14 0.986 0 -18.2 \n",
"15 0.988 0 -35.4 \n",
"16 0.984 0 -5.1 \n",
"... ... ... ... \n",
"1267207 0.989 0 -16.9 \n",
"1267211 0.982 0 -35.1 \n",
"1267216 0.983 0 -35.1 \n",
"1267227 0.985 0 -36.0 \n",
"1267237 0.983 0 -32.2 \n",
"\n",
"[226892 rows x 28 columns]"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"height_6algorithms_sel"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Calculate the mean height excluidng the maximum and minimum values "
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [],
"source": [
"height_sel = pd.DataFrame({'ID' : height_6algorithms_sel['ID'] , \n",
" 'hm_sel': (height_6algorithms_sel['a1_95'] + height_6algorithms_sel['a2_95'] + height_6algorithms_sel['a3_95'] + height_6algorithms_sel['a4_95'] \n",
" + height_6algorithms_sel['a5_95'] + height_6algorithms_sel['a6_95'] - height_6algorithms_sel['min_rh_95'] - height_6algorithms_sel['max_rh_95']) / 400 } )"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" ID | \n",
" hm_sel | \n",
"
\n",
" \n",
" \n",
" \n",
" 7 | \n",
" 8 | \n",
" 32.9475 | \n",
"
\n",
" \n",
" 11 | \n",
" 12 | \n",
" 27.4625 | \n",
"
\n",
" \n",
" 14 | \n",
" 15 | \n",
" 22.2925 | \n",
"
\n",
" \n",
" 15 | \n",
" 16 | \n",
" 9.5900 | \n",
"
\n",
" \n",
" 16 | \n",
" 17 | \n",
" 33.4625 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 1267207 | \n",
" 1267208 | \n",
" 26.5200 | \n",
"
\n",
" \n",
" 1267211 | \n",
" 1267212 | \n",
" 31.8175 | \n",
"
\n",
" \n",
" 1267216 | \n",
" 1267217 | \n",
" 24.4075 | \n",
"
\n",
" \n",
" 1267227 | \n",
" 1267228 | \n",
" 16.6300 | \n",
"
\n",
" \n",
" 1267237 | \n",
" 1267238 | \n",
" 24.9100 | \n",
"
\n",
" \n",
"
\n",
"
226892 rows × 2 columns
\n",
"
"
],
"text/plain": [
" ID hm_sel\n",
"7 8 32.9475\n",
"11 12 27.4625\n",
"14 15 22.2925\n",
"15 16 9.5900\n",
"16 17 33.4625\n",
"... ... ...\n",
"1267207 1267208 26.5200\n",
"1267211 1267212 31.8175\n",
"1267216 1267217 24.4075\n",
"1267227 1267228 16.6300\n",
"1267237 1267238 24.9100\n",
"\n",
"[226892 rows x 2 columns]"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"height_sel"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Import raw data, extracted predictors and show the data distribution"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" ID | \n",
" X | \n",
" Y | \n",
" h | \n",
" BLDFIE_WeigAver | \n",
" CECSOL_WeigAver | \n",
" CHELSA_bio18 | \n",
" CHELSA_bio4 | \n",
" convergence | \n",
" cti | \n",
" devmagnitude | \n",
" eastness | \n",
" elev | \n",
" forestheight | \n",
" glad_ard_SVVI_max | \n",
" glad_ard_SVVI_med | \n",
" glad_ard_SVVI_min | \n",
" northness | \n",
" ORCDRC_WeigAver | \n",
" outlet_dist_dw_basin | \n",
" SBIO3_Isothermality_5_15cm | \n",
" SBIO4_Temperature_Seasonality_5_15cm | \n",
" treecover | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 1 | \n",
" 6.050001 | \n",
" 49.727499 | \n",
" 3139.00 | \n",
" 1540 | \n",
" 13 | \n",
" 2113 | \n",
" 5893 | \n",
" -10.486560 | \n",
" -238043120 | \n",
" 1.158417 | \n",
" 0.069094 | \n",
" 353.983124 | \n",
" 23 | \n",
" 276.871094 | \n",
" 46.444092 | \n",
" 347.665405 | \n",
" 0.042500 | \n",
" 9 | \n",
" 780403 | \n",
" 19.798992 | \n",
" 440.672211 | \n",
" 85 | \n",
"
\n",
" \n",
" 1 | \n",
" 2 | \n",
" 6.050002 | \n",
" 49.922155 | \n",
" 1454.75 | \n",
" 1491 | \n",
" 12 | \n",
" 1993 | \n",
" 5912 | \n",
" 33.274361 | \n",
" -208915344 | \n",
" -1.755341 | \n",
" 0.269112 | \n",
" 267.511688 | \n",
" 19 | \n",
" -49.526367 | \n",
" 19.552734 | \n",
" -130.541748 | \n",
" 0.182780 | \n",
" 16 | \n",
" 772777 | \n",
" 20.889412 | \n",
" 457.756195 | \n",
" 85 | \n",
"
\n",
" \n",
" 2 | \n",
" 3 | \n",
" 6.050002 | \n",
" 48.602377 | \n",
" 853.50 | \n",
" 1521 | \n",
" 17 | \n",
" 2124 | \n",
" 5983 | \n",
" 0.045293 | \n",
" -137479792 | \n",
" 1.908780 | \n",
" -0.016055 | \n",
" 389.751160 | \n",
" 21 | \n",
" 93.257324 | \n",
" 50.743652 | \n",
" 384.522461 | \n",
" 0.036253 | \n",
" 14 | \n",
" 898820 | \n",
" 20.695877 | \n",
" 481.879700 | \n",
" 62 | \n",
"
\n",
" \n",
" 3 | \n",
" 4 | \n",
" 6.050009 | \n",
" 48.151979 | \n",
" 3141.00 | \n",
" 1526 | \n",
" 16 | \n",
" 2569 | \n",
" 6130 | \n",
" -33.654274 | \n",
" -267223072 | \n",
" 0.965787 | \n",
" 0.067767 | \n",
" 380.207703 | \n",
" 27 | \n",
" 542.401367 | \n",
" 202.264160 | \n",
" 386.156738 | \n",
" 0.005139 | \n",
" 15 | \n",
" 831824 | \n",
" 19.375000 | \n",
" 479.410278 | \n",
" 85 | \n",
"
\n",
" \n",
" 4 | \n",
" 5 | \n",
" 6.050010 | \n",
" 49.588410 | \n",
" 2065.25 | \n",
" 1547 | \n",
" 14 | \n",
" 2108 | \n",
" 5923 | \n",
" 27.493824 | \n",
" -107809368 | \n",
" -0.162624 | \n",
" 0.014065 | \n",
" 308.042786 | \n",
" 25 | \n",
" 136.048340 | \n",
" 146.835205 | \n",
" 198.127441 | \n",
" 0.028847 | \n",
" 17 | \n",
" 796962 | \n",
" 18.777500 | \n",
" 457.880066 | \n",
" 85 | \n",
"
\n",
" \n",
" 5 | \n",
" 6 | \n",
" 6.050014 | \n",
" 48.608456 | \n",
" 1246.50 | \n",
" 1515 | \n",
" 19 | \n",
" 2124 | \n",
" 6010 | \n",
" -1.602039 | \n",
" 17384282 | \n",
" 1.447979 | \n",
" -0.018912 | \n",
" 364.527100 | \n",
" 18 | \n",
" 221.339844 | \n",
" 247.387207 | \n",
" 480.387939 | \n",
" 0.042747 | \n",
" 14 | \n",
" 897945 | \n",
" 19.398880 | \n",
" 474.331329 | \n",
" 62 | \n",
"
\n",
" \n",
" 6 | \n",
" 7 | \n",
" 6.050016 | \n",
" 48.571401 | \n",
" 2938.75 | \n",
" 1520 | \n",
" 19 | \n",
" 2169 | \n",
" 6147 | \n",
" 27.856503 | \n",
" -66516432 | \n",
" -1.073956 | \n",
" 0.002280 | \n",
" 254.679596 | \n",
" 19 | \n",
" 125.250488 | \n",
" 87.865234 | \n",
" 160.696777 | \n",
" 0.037254 | \n",
" 11 | \n",
" 908426 | \n",
" 20.170450 | \n",
" 476.414520 | \n",
" 96 | \n",
"
\n",
" \n",
" 7 | \n",
" 8 | \n",
" 6.050019 | \n",
" 49.921613 | \n",
" 3294.75 | \n",
" 1490 | \n",
" 12 | \n",
" 1995 | \n",
" 5912 | \n",
" 22.102139 | \n",
" -297770784 | \n",
" -1.402633 | \n",
" 0.309765 | \n",
" 294.927765 | \n",
" 26 | \n",
" -86.729492 | \n",
" -145.584229 | \n",
" -190.062988 | \n",
" 0.222435 | \n",
" 15 | \n",
" 772784 | \n",
" 20.855963 | \n",
" 457.195404 | \n",
" 86 | \n",
"
\n",
" \n",
" 8 | \n",
" 9 | \n",
" 6.050020 | \n",
" 48.822645 | \n",
" 1623.50 | \n",
" 1554 | \n",
" 18 | \n",
" 1973 | \n",
" 6138 | \n",
" 18.496584 | \n",
" -25336536 | \n",
" -0.800016 | \n",
" 0.010370 | \n",
" 240.493759 | \n",
" 22 | \n",
" -51.470703 | \n",
" -245.886719 | \n",
" 172.074707 | \n",
" 0.004428 | \n",
" 8 | \n",
" 839132 | \n",
" 21.812290 | \n",
" 496.231110 | \n",
" 64 | \n",
"
\n",
" \n",
" 9 | \n",
" 10 | \n",
" 6.050024 | \n",
" 49.847522 | \n",
" 1400.00 | \n",
" 1521 | \n",
" 15 | \n",
" 2187 | \n",
" 5886 | \n",
" -5.660453 | \n",
" -278652608 | \n",
" 1.477951 | \n",
" -0.068720 | \n",
" 376.671143 | \n",
" 12 | \n",
" 277.297363 | \n",
" 273.141846 | \n",
" -138.895996 | \n",
" 0.098817 | \n",
" 13 | \n",
" 768873 | \n",
" 21.137711 | \n",
" 466.976685 | \n",
" 70 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" ID X Y h BLDFIE_WeigAver CECSOL_WeigAver \\\n",
"0 1 6.050001 49.727499 3139.00 1540 13 \n",
"1 2 6.050002 49.922155 1454.75 1491 12 \n",
"2 3 6.050002 48.602377 853.50 1521 17 \n",
"3 4 6.050009 48.151979 3141.00 1526 16 \n",
"4 5 6.050010 49.588410 2065.25 1547 14 \n",
"5 6 6.050014 48.608456 1246.50 1515 19 \n",
"6 7 6.050016 48.571401 2938.75 1520 19 \n",
"7 8 6.050019 49.921613 3294.75 1490 12 \n",
"8 9 6.050020 48.822645 1623.50 1554 18 \n",
"9 10 6.050024 49.847522 1400.00 1521 15 \n",
"\n",
" CHELSA_bio18 CHELSA_bio4 convergence cti devmagnitude eastness \\\n",
"0 2113 5893 -10.486560 -238043120 1.158417 0.069094 \n",
"1 1993 5912 33.274361 -208915344 -1.755341 0.269112 \n",
"2 2124 5983 0.045293 -137479792 1.908780 -0.016055 \n",
"3 2569 6130 -33.654274 -267223072 0.965787 0.067767 \n",
"4 2108 5923 27.493824 -107809368 -0.162624 0.014065 \n",
"5 2124 6010 -1.602039 17384282 1.447979 -0.018912 \n",
"6 2169 6147 27.856503 -66516432 -1.073956 0.002280 \n",
"7 1995 5912 22.102139 -297770784 -1.402633 0.309765 \n",
"8 1973 6138 18.496584 -25336536 -0.800016 0.010370 \n",
"9 2187 5886 -5.660453 -278652608 1.477951 -0.068720 \n",
"\n",
" elev forestheight glad_ard_SVVI_max glad_ard_SVVI_med \\\n",
"0 353.983124 23 276.871094 46.444092 \n",
"1 267.511688 19 -49.526367 19.552734 \n",
"2 389.751160 21 93.257324 50.743652 \n",
"3 380.207703 27 542.401367 202.264160 \n",
"4 308.042786 25 136.048340 146.835205 \n",
"5 364.527100 18 221.339844 247.387207 \n",
"6 254.679596 19 125.250488 87.865234 \n",
"7 294.927765 26 -86.729492 -145.584229 \n",
"8 240.493759 22 -51.470703 -245.886719 \n",
"9 376.671143 12 277.297363 273.141846 \n",
"\n",
" glad_ard_SVVI_min northness ORCDRC_WeigAver outlet_dist_dw_basin \\\n",
"0 347.665405 0.042500 9 780403 \n",
"1 -130.541748 0.182780 16 772777 \n",
"2 384.522461 0.036253 14 898820 \n",
"3 386.156738 0.005139 15 831824 \n",
"4 198.127441 0.028847 17 796962 \n",
"5 480.387939 0.042747 14 897945 \n",
"6 160.696777 0.037254 11 908426 \n",
"7 -190.062988 0.222435 15 772784 \n",
"8 172.074707 0.004428 8 839132 \n",
"9 -138.895996 0.098817 13 768873 \n",
"\n",
" SBIO3_Isothermality_5_15cm SBIO4_Temperature_Seasonality_5_15cm treecover \n",
"0 19.798992 440.672211 85 \n",
"1 20.889412 457.756195 85 \n",
"2 20.695877 481.879700 62 \n",
"3 19.375000 479.410278 85 \n",
"4 18.777500 457.880066 85 \n",
"5 19.398880 474.331329 62 \n",
"6 20.170450 476.414520 96 \n",
"7 20.855963 457.195404 86 \n",
"8 21.812290 496.231110 64 \n",
"9 21.137711 466.976685 70 "
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predictors = pd.read_csv(\"tree_height/txt/eu_x_y_height_predictors_select.txt\", sep=\" \", index_col=False)\n",
"pd.set_option('display.max_columns',None)\n",
"# change column name\n",
"predictors = predictors.rename({'dev-magnitude':'devmagnitude'} , axis='columns')\n",
"predictors.head(10)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Merge the new height with the predictors table, using the ID as Primary Key"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [],
"source": [
"predictors_hm_sel = pd.merge( predictors , height_sel , left_on='ID' , right_on='ID' , how='right')"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" ID | \n",
" X | \n",
" Y | \n",
" h | \n",
" BLDFIE_WeigAver | \n",
" CECSOL_WeigAver | \n",
" CHELSA_bio18 | \n",
" CHELSA_bio4 | \n",
" convergence | \n",
" cti | \n",
" devmagnitude | \n",
" eastness | \n",
" elev | \n",
" forestheight | \n",
" glad_ard_SVVI_max | \n",
" glad_ard_SVVI_med | \n",
" glad_ard_SVVI_min | \n",
" northness | \n",
" ORCDRC_WeigAver | \n",
" outlet_dist_dw_basin | \n",
" SBIO3_Isothermality_5_15cm | \n",
" SBIO4_Temperature_Seasonality_5_15cm | \n",
" treecover | \n",
" hm_sel | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 8 | \n",
" 6.050019 | \n",
" 49.921613 | \n",
" 3294.75 | \n",
" 1490 | \n",
" 12 | \n",
" 1995 | \n",
" 5912 | \n",
" 22.102139 | \n",
" -297770784 | \n",
" -1.402633 | \n",
" 0.309765 | \n",
" 294.927765 | \n",
" 26 | \n",
" -86.729492 | \n",
" -145.584229 | \n",
" -190.062988 | \n",
" 0.222435 | \n",
" 15 | \n",
" 772784 | \n",
" 20.855963 | \n",
" 457.195404 | \n",
" 86 | \n",
" 32.9475 | \n",
"
\n",
" \n",
" 1 | \n",
" 12 | \n",
" 6.050039 | \n",
" 47.995344 | \n",
" 2746.25 | \n",
" 1523 | \n",
" 12 | \n",
" 2612 | \n",
" 6181 | \n",
" 3.549103 | \n",
" -71279992 | \n",
" 0.507727 | \n",
" -0.021408 | \n",
" 322.920227 | \n",
" 26 | \n",
" 660.006104 | \n",
" 92.722168 | \n",
" 190.979736 | \n",
" -0.034787 | \n",
" 16 | \n",
" 784807 | \n",
" 20.798000 | \n",
" 460.501221 | \n",
" 97 | \n",
" 27.4625 | \n",
"
\n",
" \n",
" 2 | \n",
" 15 | \n",
" 6.050046 | \n",
" 49.865317 | \n",
" 2229.25 | \n",
" 1517 | \n",
" 13 | \n",
" 2191 | \n",
" 5901 | \n",
" 31.054762 | \n",
" -186807440 | \n",
" -1.375050 | \n",
" -0.126880 | \n",
" 291.412537 | \n",
" 7 | \n",
" 1028.385498 | \n",
" 915.806396 | \n",
" 841.586182 | \n",
" 0.024677 | \n",
" 16 | \n",
" 766444 | \n",
" 19.941267 | \n",
" 454.185089 | \n",
" 54 | \n",
" 22.2925 | \n",
"
\n",
" \n",
" 3 | \n",
" 16 | \n",
" 6.050048 | \n",
" 49.050020 | \n",
" 959.00 | \n",
" 1526 | \n",
" 14 | \n",
" 2081 | \n",
" 6100 | \n",
" 9.933455 | \n",
" -183562672 | \n",
" -0.382834 | \n",
" 0.086874 | \n",
" 246.288010 | \n",
" 24 | \n",
" -12.283691 | \n",
" -58.179199 | \n",
" 174.205566 | \n",
" 0.094175 | \n",
" 10 | \n",
" 805730 | \n",
" 19.849365 | \n",
" 470.946533 | \n",
" 78 | \n",
" 9.5900 | \n",
"
\n",
" \n",
" 4 | \n",
" 17 | \n",
" 6.050049 | \n",
" 48.391359 | \n",
" 3346.25 | \n",
" 1489 | \n",
" 19 | \n",
" 2486 | \n",
" 5966 | \n",
" -6.957157 | \n",
" -273522688 | \n",
" 2.989759 | \n",
" 0.214769 | \n",
" 474.409088 | \n",
" 24 | \n",
" 125.583008 | \n",
" 6.154297 | \n",
" 128.129150 | \n",
" 0.017164 | \n",
" 15 | \n",
" 950190 | \n",
" 21.179420 | \n",
" 491.398376 | \n",
" 85 | \n",
" 33.4625 | \n",
"
\n",
" \n",
" 5 | \n",
" 19 | \n",
" 6.050053 | \n",
" 49.877876 | \n",
" 529.00 | \n",
" 1531 | \n",
" 12 | \n",
" 2184 | \n",
" 5915 | \n",
" -24.278454 | \n",
" -377335296 | \n",
" 0.265329 | \n",
" -0.248356 | \n",
" 335.534760 | \n",
" 25 | \n",
" 593.601074 | \n",
" 228.712402 | \n",
" 315.298340 | \n",
" -0.127365 | \n",
" 17 | \n",
" 764713 | \n",
" 19.760756 | \n",
" 448.580811 | \n",
" 96 | \n",
" 5.2900 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" ID X Y h BLDFIE_WeigAver CECSOL_WeigAver \\\n",
"0 8 6.050019 49.921613 3294.75 1490 12 \n",
"1 12 6.050039 47.995344 2746.25 1523 12 \n",
"2 15 6.050046 49.865317 2229.25 1517 13 \n",
"3 16 6.050048 49.050020 959.00 1526 14 \n",
"4 17 6.050049 48.391359 3346.25 1489 19 \n",
"5 19 6.050053 49.877876 529.00 1531 12 \n",
"\n",
" CHELSA_bio18 CHELSA_bio4 convergence cti devmagnitude eastness \\\n",
"0 1995 5912 22.102139 -297770784 -1.402633 0.309765 \n",
"1 2612 6181 3.549103 -71279992 0.507727 -0.021408 \n",
"2 2191 5901 31.054762 -186807440 -1.375050 -0.126880 \n",
"3 2081 6100 9.933455 -183562672 -0.382834 0.086874 \n",
"4 2486 5966 -6.957157 -273522688 2.989759 0.214769 \n",
"5 2184 5915 -24.278454 -377335296 0.265329 -0.248356 \n",
"\n",
" elev forestheight glad_ard_SVVI_max glad_ard_SVVI_med \\\n",
"0 294.927765 26 -86.729492 -145.584229 \n",
"1 322.920227 26 660.006104 92.722168 \n",
"2 291.412537 7 1028.385498 915.806396 \n",
"3 246.288010 24 -12.283691 -58.179199 \n",
"4 474.409088 24 125.583008 6.154297 \n",
"5 335.534760 25 593.601074 228.712402 \n",
"\n",
" glad_ard_SVVI_min northness ORCDRC_WeigAver outlet_dist_dw_basin \\\n",
"0 -190.062988 0.222435 15 772784 \n",
"1 190.979736 -0.034787 16 784807 \n",
"2 841.586182 0.024677 16 766444 \n",
"3 174.205566 0.094175 10 805730 \n",
"4 128.129150 0.017164 15 950190 \n",
"5 315.298340 -0.127365 17 764713 \n",
"\n",
" SBIO3_Isothermality_5_15cm SBIO4_Temperature_Seasonality_5_15cm \\\n",
"0 20.855963 457.195404 \n",
"1 20.798000 460.501221 \n",
"2 19.941267 454.185089 \n",
"3 19.849365 470.946533 \n",
"4 21.179420 491.398376 \n",
"5 19.760756 448.580811 \n",
"\n",
" treecover hm_sel \n",
"0 86 32.9475 \n",
"1 97 27.4625 \n",
"2 54 22.2925 \n",
"3 78 9.5900 \n",
"4 85 33.4625 \n",
"5 96 5.2900 "
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predictors_hm_sel.head(6)"
]
},
{
"cell_type": "code",
"execution_count": 112,
"metadata": {},
"outputs": [],
"source": [
"predictors_hm_sel = predictors_hm_sel.loc[(predictors['h'] < 5000) ]"
]
},
{
"cell_type": "code",
"execution_count": 113,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" ID | \n",
" X | \n",
" Y | \n",
" h | \n",
" BLDFIE_WeigAver | \n",
" CECSOL_WeigAver | \n",
" CHELSA_bio18 | \n",
" CHELSA_bio4 | \n",
" convergence | \n",
" cti | \n",
" devmagnitude | \n",
" eastness | \n",
" elev | \n",
" forestheight | \n",
" glad_ard_SVVI_max | \n",
" glad_ard_SVVI_med | \n",
" glad_ard_SVVI_min | \n",
" northness | \n",
" ORCDRC_WeigAver | \n",
" outlet_dist_dw_basin | \n",
" SBIO3_Isothermality_5_15cm | \n",
" SBIO4_Temperature_Seasonality_5_15cm | \n",
" treecover | \n",
" hm_sel | \n",
"
\n",
" \n",
" \n",
" \n",
" 1 | \n",
" 12 | \n",
" 6.050039 | \n",
" 47.995344 | \n",
" 2746.25 | \n",
" 1523 | \n",
" 12 | \n",
" 2612 | \n",
" 6181 | \n",
" 3.549103 | \n",
" -71279992 | \n",
" 0.507727 | \n",
" -0.021408 | \n",
" 322.920227 | \n",
" 26 | \n",
" 660.006104 | \n",
" 92.722168 | \n",
" 190.979736 | \n",
" -0.034787 | \n",
" 16 | \n",
" 784807 | \n",
" 20.798000 | \n",
" 460.501221 | \n",
" 97 | \n",
" 27.4625 | \n",
"
\n",
" \n",
" 2 | \n",
" 15 | \n",
" 6.050046 | \n",
" 49.865317 | \n",
" 2229.25 | \n",
" 1517 | \n",
" 13 | \n",
" 2191 | \n",
" 5901 | \n",
" 31.054762 | \n",
" -186807440 | \n",
" -1.375050 | \n",
" -0.126880 | \n",
" 291.412537 | \n",
" 7 | \n",
" 1028.385498 | \n",
" 915.806396 | \n",
" 841.586182 | \n",
" 0.024677 | \n",
" 16 | \n",
" 766444 | \n",
" 19.941267 | \n",
" 454.185089 | \n",
" 54 | \n",
" 22.2925 | \n",
"
\n",
" \n",
" 5 | \n",
" 19 | \n",
" 6.050053 | \n",
" 49.877876 | \n",
" 529.00 | \n",
" 1531 | \n",
" 12 | \n",
" 2184 | \n",
" 5915 | \n",
" -24.278454 | \n",
" -377335296 | \n",
" 0.265329 | \n",
" -0.248356 | \n",
" 335.534760 | \n",
" 25 | \n",
" 593.601074 | \n",
" 228.712402 | \n",
" 315.298340 | \n",
" -0.127365 | \n",
" 17 | \n",
" 764713 | \n",
" 19.760756 | \n",
" 448.580811 | \n",
" 96 | \n",
" 5.2900 | \n",
"
\n",
" \n",
" 8 | \n",
" 27 | \n",
" 6.050083 | \n",
" 49.281439 | \n",
" 3921.25 | \n",
" 1488 | \n",
" 13 | \n",
" 2345 | \n",
" 5915 | \n",
" 3.646593 | \n",
" -223499248 | \n",
" 0.383314 | \n",
" 0.062349 | \n",
" 309.142609 | \n",
" 25 | \n",
" 862.362305 | \n",
" 263.612793 | \n",
" 249.693115 | \n",
" -0.068810 | \n",
" 16 | \n",
" 781120 | \n",
" 17.538614 | \n",
" 463.280243 | \n",
" 100 | \n",
" 39.2125 | \n",
"
\n",
" \n",
" 9 | \n",
" 35 | \n",
" 6.050119 | \n",
" 49.928610 | \n",
" 1765.00 | \n",
" 1510 | \n",
" 13 | \n",
" 1976 | \n",
" 5917 | \n",
" -2.138205 | \n",
" -393005696 | \n",
" -1.467515 | \n",
" -0.316702 | \n",
" 301.649567 | \n",
" 20 | \n",
" 248.561035 | \n",
" 164.831299 | \n",
" 237.283447 | \n",
" -0.144407 | \n",
" 19 | \n",
" 773647 | \n",
" 21.324263 | \n",
" 465.046478 | \n",
" 87 | \n",
" 17.6500 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 226876 | \n",
" 1267176 | \n",
" 9.949637 | \n",
" 49.887471 | \n",
" 3266.50 | \n",
" 1558 | \n",
" 14 | \n",
" 2074 | \n",
" 6484 | \n",
" 4.993805 | \n",
" -196691680 | \n",
" 1.260540 | \n",
" 0.044238 | \n",
" 328.019165 | \n",
" 26 | \n",
" -144.124023 | \n",
" -145.522949 | \n",
" -14.317627 | \n",
" 0.020914 | \n",
" 7 | \n",
" 857229 | \n",
" 17.376682 | \n",
" 463.421387 | \n",
" 98 | \n",
" 32.6650 | \n",
"
\n",
" \n",
" 226878 | \n",
" 1267180 | \n",
" 9.949658 | \n",
" 49.856387 | \n",
" 497.00 | \n",
" 1515 | \n",
" 17 | \n",
" 1956 | \n",
" 6561 | \n",
" 34.034641 | \n",
" -126274136 | \n",
" -0.959000 | \n",
" 0.047194 | \n",
" 260.889069 | \n",
" 0 | \n",
" 681.798340 | \n",
" 657.745605 | \n",
" 642.011475 | \n",
" 0.050846 | \n",
" 5 | \n",
" 857225 | \n",
" 21.177349 | \n",
" 573.086243 | \n",
" 12 | \n",
" 4.9700 | \n",
"
\n",
" \n",
" 226879 | \n",
" 1267184 | \n",
" 9.949688 | \n",
" 49.362831 | \n",
" 2344.00 | \n",
" 1517 | \n",
" 15 | \n",
" 2264 | \n",
" 6499 | \n",
" 9.173168 | \n",
" 160967872 | \n",
" 0.645957 | \n",
" -0.011381 | \n",
" 447.678040 | \n",
" 23 | \n",
" 282.119385 | \n",
" 79.830811 | \n",
" 10.140381 | \n",
" 0.014716 | \n",
" 7 | \n",
" 824157 | \n",
" 18.283070 | \n",
" 471.167419 | \n",
" 89 | \n",
" 23.4400 | \n",
"
\n",
" \n",
" 226881 | \n",
" 1267189 | \n",
" 9.949701 | \n",
" 49.114458 | \n",
" 2014.50 | \n",
" 1529 | \n",
" 12 | \n",
" 2608 | \n",
" 6632 | \n",
" 27.137199 | \n",
" 104082784 | \n",
" -0.481382 | \n",
" -0.012974 | \n",
" 447.814392 | \n",
" 21 | \n",
" 187.934082 | \n",
" 90.763672 | \n",
" 168.527100 | \n",
" 0.045602 | \n",
" 18 | \n",
" 907894 | \n",
" 18.010750 | \n",
" 473.227966 | \n",
" 72 | \n",
" 20.1450 | \n",
"
\n",
" \n",
" 226882 | \n",
" 1267192 | \n",
" 9.949731 | \n",
" 49.893196 | \n",
" 2891.00 | \n",
" 1566 | \n",
" 15 | \n",
" 2088 | \n",
" 6482 | \n",
" -36.581142 | \n",
" -219142496 | \n",
" 1.348770 | \n",
" 0.060537 | \n",
" 331.815918 | \n",
" 21 | \n",
" -68.830078 | \n",
" -160.909668 | \n",
" 11.658203 | \n",
" -0.046048 | \n",
" 11 | \n",
" 857705 | \n",
" 16.320225 | \n",
" 450.409271 | \n",
" 75 | \n",
" 28.9100 | \n",
"
\n",
" \n",
"
\n",
"
116199 rows × 24 columns
\n",
"
"
],
"text/plain": [
" ID X Y h BLDFIE_WeigAver \\\n",
"1 12 6.050039 47.995344 2746.25 1523 \n",
"2 15 6.050046 49.865317 2229.25 1517 \n",
"5 19 6.050053 49.877876 529.00 1531 \n",
"8 27 6.050083 49.281439 3921.25 1488 \n",
"9 35 6.050119 49.928610 1765.00 1510 \n",
"... ... ... ... ... ... \n",
"226876 1267176 9.949637 49.887471 3266.50 1558 \n",
"226878 1267180 9.949658 49.856387 497.00 1515 \n",
"226879 1267184 9.949688 49.362831 2344.00 1517 \n",
"226881 1267189 9.949701 49.114458 2014.50 1529 \n",
"226882 1267192 9.949731 49.893196 2891.00 1566 \n",
"\n",
" CECSOL_WeigAver CHELSA_bio18 CHELSA_bio4 convergence cti \\\n",
"1 12 2612 6181 3.549103 -71279992 \n",
"2 13 2191 5901 31.054762 -186807440 \n",
"5 12 2184 5915 -24.278454 -377335296 \n",
"8 13 2345 5915 3.646593 -223499248 \n",
"9 13 1976 5917 -2.138205 -393005696 \n",
"... ... ... ... ... ... \n",
"226876 14 2074 6484 4.993805 -196691680 \n",
"226878 17 1956 6561 34.034641 -126274136 \n",
"226879 15 2264 6499 9.173168 160967872 \n",
"226881 12 2608 6632 27.137199 104082784 \n",
"226882 15 2088 6482 -36.581142 -219142496 \n",
"\n",
" devmagnitude eastness elev forestheight glad_ard_SVVI_max \\\n",
"1 0.507727 -0.021408 322.920227 26 660.006104 \n",
"2 -1.375050 -0.126880 291.412537 7 1028.385498 \n",
"5 0.265329 -0.248356 335.534760 25 593.601074 \n",
"8 0.383314 0.062349 309.142609 25 862.362305 \n",
"9 -1.467515 -0.316702 301.649567 20 248.561035 \n",
"... ... ... ... ... ... \n",
"226876 1.260540 0.044238 328.019165 26 -144.124023 \n",
"226878 -0.959000 0.047194 260.889069 0 681.798340 \n",
"226879 0.645957 -0.011381 447.678040 23 282.119385 \n",
"226881 -0.481382 -0.012974 447.814392 21 187.934082 \n",
"226882 1.348770 0.060537 331.815918 21 -68.830078 \n",
"\n",
" glad_ard_SVVI_med glad_ard_SVVI_min northness ORCDRC_WeigAver \\\n",
"1 92.722168 190.979736 -0.034787 16 \n",
"2 915.806396 841.586182 0.024677 16 \n",
"5 228.712402 315.298340 -0.127365 17 \n",
"8 263.612793 249.693115 -0.068810 16 \n",
"9 164.831299 237.283447 -0.144407 19 \n",
"... ... ... ... ... \n",
"226876 -145.522949 -14.317627 0.020914 7 \n",
"226878 657.745605 642.011475 0.050846 5 \n",
"226879 79.830811 10.140381 0.014716 7 \n",
"226881 90.763672 168.527100 0.045602 18 \n",
"226882 -160.909668 11.658203 -0.046048 11 \n",
"\n",
" outlet_dist_dw_basin SBIO3_Isothermality_5_15cm \\\n",
"1 784807 20.798000 \n",
"2 766444 19.941267 \n",
"5 764713 19.760756 \n",
"8 781120 17.538614 \n",
"9 773647 21.324263 \n",
"... ... ... \n",
"226876 857229 17.376682 \n",
"226878 857225 21.177349 \n",
"226879 824157 18.283070 \n",
"226881 907894 18.010750 \n",
"226882 857705 16.320225 \n",
"\n",
" SBIO4_Temperature_Seasonality_5_15cm treecover hm_sel \n",
"1 460.501221 97 27.4625 \n",
"2 454.185089 54 22.2925 \n",
"5 448.580811 96 5.2900 \n",
"8 463.280243 100 39.2125 \n",
"9 465.046478 87 17.6500 \n",
"... ... ... ... \n",
"226876 463.421387 98 32.6650 \n",
"226878 573.086243 12 4.9700 \n",
"226879 471.167419 89 23.4400 \n",
"226881 473.227966 72 20.1450 \n",
"226882 450.409271 75 28.9100 \n",
"\n",
"[116199 rows x 24 columns]"
]
},
"execution_count": 113,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"predictors_hm_sel"
]
},
{
"cell_type": "code",
"execution_count": 114,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" X | \n",
" Y | \n",
" hm_sel | \n",
"
\n",
" \n",
" \n",
" \n",
" 1 | \n",
" 6.050039 | \n",
" 47.995344 | \n",
" 27.4625 | \n",
"
\n",
" \n",
" 2 | \n",
" 6.050046 | \n",
" 49.865317 | \n",
" 22.2925 | \n",
"
\n",
" \n",
" 5 | \n",
" 6.050053 | \n",
" 49.877876 | \n",
" 5.2900 | \n",
"
\n",
" \n",
" 8 | \n",
" 6.050083 | \n",
" 49.281439 | \n",
" 39.2125 | \n",
"
\n",
" \n",
" 9 | \n",
" 6.050119 | \n",
" 49.928610 | \n",
" 17.6500 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 226876 | \n",
" 9.949637 | \n",
" 49.887471 | \n",
" 32.6650 | \n",
"
\n",
" \n",
" 226878 | \n",
" 9.949658 | \n",
" 49.856387 | \n",
" 4.9700 | \n",
"
\n",
" \n",
" 226879 | \n",
" 9.949688 | \n",
" 49.362831 | \n",
" 23.4400 | \n",
"
\n",
" \n",
" 226881 | \n",
" 9.949701 | \n",
" 49.114458 | \n",
" 20.1450 | \n",
"
\n",
" \n",
" 226882 | \n",
" 9.949731 | \n",
" 49.893196 | \n",
" 28.9100 | \n",
"
\n",
" \n",
"
\n",
"
116199 rows × 3 columns
\n",
"
"
],
"text/plain": [
" X Y hm_sel\n",
"1 6.050039 47.995344 27.4625\n",
"2 6.050046 49.865317 22.2925\n",
"5 6.050053 49.877876 5.2900\n",
"8 6.050083 49.281439 39.2125\n",
"9 6.050119 49.928610 17.6500\n",
"... ... ... ...\n",
"226876 9.949637 49.887471 32.6650\n",
"226878 9.949658 49.856387 4.9700\n",
"226879 9.949688 49.362831 23.4400\n",
"226881 9.949701 49.114458 20.1450\n",
"226882 9.949731 49.893196 28.9100\n",
"\n",
"[116199 rows x 3 columns]"
]
},
"execution_count": 114,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"x_y_hm_sel = predictors_hm_sel[[\"X\",\"Y\",\"hm_sel\"]]\n",
"x_y_hm_sel"
]
},
{
"cell_type": "code",
"execution_count": 115,
"metadata": {},
"outputs": [],
"source": [
"#Normalize the data\n",
"from sklearn.preprocessing import MinMaxScaler\n",
"scaler = MinMaxScaler()\n",
"data = scaler.fit_transform(x_y_hm_sel)"
]
},
{
"cell_type": "code",
"execution_count": 116,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(array([4.4490e+03, 2.5580e+03, 2.3750e+03, 2.2710e+03, 2.7280e+03,\n",
" 3.3330e+03, 4.4110e+03, 5.5060e+03, 6.5250e+03, 7.5690e+03,\n",
" 8.9780e+03, 1.0236e+04, 1.1240e+04, 1.0795e+04, 9.7710e+03,\n",
" 7.9490e+03, 5.6670e+03, 3.7270e+03, 2.4290e+03, 1.4340e+03,\n",
" 8.8400e+02, 4.8700e+02, 2.8500e+02, 1.5300e+02, 1.0600e+02,\n",
" 6.5000e+01, 4.1000e+01, 2.4000e+01, 2.9000e+01, 2.2000e+01,\n",
" 1.6000e+01, 2.0000e+01, 1.5000e+01, 1.2000e+01, 1.5000e+01,\n",
" 5.0000e+00, 9.0000e+00, 8.0000e+00, 7.0000e+00, 7.0000e+00,\n",
" 7.0000e+00, 3.0000e+00, 2.0000e+00, 7.0000e+00, 4.0000e+00,\n",
" 2.0000e+00, 4.0000e+00, 6.0000e+00, 1.0000e+00, 2.0000e+00]),\n",
" array([0. , 0.02, 0.04, 0.06, 0.08, 0.1 , 0.12, 0.14, 0.16, 0.18, 0.2 ,\n",
" 0.22, 0.24, 0.26, 0.28, 0.3 , 0.32, 0.34, 0.36, 0.38, 0.4 , 0.42,\n",
" 0.44, 0.46, 0.48, 0.5 , 0.52, 0.54, 0.56, 0.58, 0.6 , 0.62, 0.64,\n",
" 0.66, 0.68, 0.7 , 0.72, 0.74, 0.76, 0.78, 0.8 , 0.82, 0.84, 0.86,\n",
" 0.88, 0.9 , 0.92, 0.94, 0.96, 0.98, 1. ]),\n",
" )"
]
},
"execution_count": 116,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#Inspect the ranges \n",
"fig,ax = plt.subplots(1,3,figsize=(15,5))\n",
"ax[0].hist(data[:,0],50)\n",
"ax[1].hist(data[:,1],50)\n",
"ax[2].hist(data[:,2],50)"
]
},
{
"cell_type": "code",
"execution_count": 117,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"X_train.shape: torch.Size([81339, 2]), X_test.shape: torch.Size([34860, 2]), y_train.shape: torch.Size([81339]), y_test.shape: torch.Size([34860])\n"
]
}
],
"source": [
"#Split the data\n",
"X_train, X_test, y_train, y_test = train_test_split(data[:,:2], data[:,2], test_size=0.30, random_state=0)\n",
"X_train = torch.FloatTensor(X_train)\n",
"y_train = torch.FloatTensor(y_train)\n",
"X_test = torch.FloatTensor(X_test)\n",
"y_test = torch.FloatTensor(y_test)\n",
"print('X_train.shape: {}, X_test.shape: {}, y_train.shape: {}, y_test.shape: {}'.format(X_train.shape, X_test.shape, y_train.shape, y_test.shape))"
]
},
{
"cell_type": "code",
"execution_count": 142,
"metadata": {},
"outputs": [],
"source": [
"class Perceptron(torch.nn.Module):\n",
" def __init__(self,input_size, output_size, use_activation_fn=False):\n",
" super(Perceptron, self).__init__()\n",
" self.fc = nn.Linear(input_size,output_size) # Initializes weights with uniform distribution centered in zero\n",
" self.activation_fn = nn.ReLU() # instead of Heaviside step fn\n",
" self.use_activation_fn = use_activation_fn # If we want to use an activation function\n",
" def forward(self, x):\n",
" output = self.fc(x)\n",
" if self.use_activation_fn:\n",
" output = self.activation_fn(output) # To add the non-linearity. Try training you Perceptron with and without the non-linearity\n",
" return output"
]
},
{
"cell_type": "code",
"execution_count": 143,
"metadata": {},
"outputs": [],
"source": [
"# Create percetron\n",
"model = Perceptron(input_size=2, output_size=1 , use_activation_fn=True)\n",
"criterion = torch.nn.MSELoss()\n",
"optimizer = torch.optim.SGD(model.parameters(), lr = 0.01)"
]
},
{
"cell_type": "code",
"execution_count": 144,
"metadata": {},
"outputs": [],
"source": [
"model.train()\n",
"epoch = 5000\n",
"all_loss=[]\n",
"for epoch in range(epoch):\n",
" optimizer.zero_grad()\n",
" # Forward pass\n",
" y_pred = model(X_train)\n",
" # Compute Loss\n",
" loss = criterion(y_pred.squeeze(), y_train)\n",
" \n",
" # Backward pass\n",
" loss.backward()\n",
" optimizer.step()\n",
" \n",
" all_loss.append(loss.item())"
]
},
{
"cell_type": "code",
"execution_count": 145,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"[]"
]
},
"execution_count": 145,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"fig,ax=plt.subplots()\n",
"ax.plot(all_loss)"
]
},
{
"cell_type": "code",
"execution_count": 146,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Test loss after Training 0.009606563486158848\n"
]
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"model.eval()\n",
"with torch.no_grad():\n",
" y_pred = model(X_test)\n",
" after_train = criterion(y_pred.squeeze(), y_test) \n",
" print('Test loss after Training' , after_train.item())\n",
"\n",
" y_pred = y_pred.detach().numpy().squeeze()\n",
" slope, intercept, r_value, p_value, std_err = scipy.stats.linregress(y_pred, y_test)\n",
"\n",
" fig,ax=plt.subplots()\n",
" ax.scatter(y_pred, y_test)\n",
" ax.set_xlabel('Prediction')\n",
" ax.set_ylabel('True')\n",
" ax.set_title('slope: {:.3f}, r_value: {:.3f}'.format(slope, r_value))"
]
}
],
"metadata": {
"anaconda-cloud": {},
"celltoolbar": "Slideshow",
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.10.6"
}
},
"nbformat": 4,
"nbformat_minor": 4
}