diff --git a/main.ipynb b/main.ipynb index 86456ff7..ccff3640 100644 --- a/main.ipynb +++ b/main.ipynb @@ -9,7 +9,7 @@ }, { "cell_type": "code", - "execution_count": 21, + "execution_count": 99, "metadata": {}, "outputs": [], "source": [ @@ -18,7 +18,7 @@ }, { "cell_type": "code", - "execution_count": 22, + "execution_count": 100, "metadata": {}, "outputs": [], "source": [ @@ -34,14 +34,14 @@ }, { "cell_type": "code", - "execution_count": 23, + "execution_count": 101, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\micha\\AppData\\Local\\Temp\\ipykernel_26160\\3760256257.py:1: DtypeWarning: Columns (25) have mixed types. Specify dtype option on import or set low_memory=False.\n", + "C:\\Users\\micha\\AppData\\Local\\Temp\\ipykernel_28456\\3760256257.py:1: DtypeWarning: Columns (25) have mixed types. Specify dtype option on import or set low_memory=False.\n", " df_dofinansowanie = pd.read_csv(\n" ] } @@ -67,7 +67,7 @@ }, { "cell_type": "code", - "execution_count": 24, + "execution_count": 102, "metadata": {}, "outputs": [], "source": [ @@ -88,7 +88,7 @@ }, { "cell_type": "code", - "execution_count": 25, + "execution_count": 103, "metadata": {}, "outputs": [], "source": [ @@ -105,7 +105,7 @@ }, { "cell_type": "code", - "execution_count": 26, + "execution_count": 104, "metadata": {}, "outputs": [], "source": [ @@ -124,14 +124,14 @@ }, { "cell_type": "code", - "execution_count": 27, + "execution_count": 105, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\micha\\AppData\\Local\\Temp\\ipykernel_26160\\3644708252.py:1: DtypeWarning: Columns (7) have mixed types. Specify dtype option on import or set low_memory=False.\n", + "C:\\Users\\micha\\AppData\\Local\\Temp\\ipykernel_28456\\1671418303.py:1: DtypeWarning: Columns (7) have mixed types. Specify dtype option on import or set low_memory=False.\n", " df_fina_1 = pd.read_csv(\n" ] }, @@ -160,7 +160,7 @@ " Rok\n", " Dochody_podatek_lesny\n", " Dochody_podatek_PCC\n", - " Dochody_podatek_...\n", + " Dochody_podatek_od_dzialalnosci_gospodarczej\n", " Dochody_podatek_od_nieruchomosci\n", " Dochody_podatek_od_spadkow\n", " Dochody_podatek_od_srodkow_transportowych\n", @@ -343,18 +343,31 @@ "47081 3263011 2021 163778.36 9082482.28 \n", "47082 3263011 2022 174823.49 7474079.65 \n", "\n", - "Rodzaje dochodów Dochody_podatek_... Dochody_podatek_od_nieruchomosci \n", - "0 NaN 13532989.00 \\\n", - "1 NaN 13667398.00 \n", - "2 NaN 14633962.72 \n", - "3 NaN 14944781.74 \n", - "4 NaN 16089534.56 \n", - "... ... ... \n", - "47078 572868.36 108107448.79 \n", - "47079 468411.51 38527846.59 \n", - "47080 329522.12 78767466.83 \n", - "47081 492045.28 78491368.35 \n", - "47082 1019054.56 84996948.99 \n", + "Rodzaje dochodów Dochody_podatek_od_dzialalnosci_gospodarczej \n", + "0 NaN \\\n", + "1 NaN \n", + "2 NaN \n", + "3 NaN \n", + "4 NaN \n", + "... ... \n", + "47078 572868.36 \n", + "47079 468411.51 \n", + "47080 329522.12 \n", + "47081 492045.28 \n", + "47082 1019054.56 \n", + "\n", + "Rodzaje dochodów Dochody_podatek_od_nieruchomosci \n", + "0 13532989.00 \\\n", + "1 13667398.00 \n", + "2 14633962.72 \n", + "3 14944781.74 \n", + "4 16089534.56 \n", + "... ... \n", + "47078 108107448.79 \n", + "47079 38527846.59 \n", + "47080 78767466.83 \n", + "47081 78491368.35 \n", + "47082 84996948.99 \n", "\n", "Rodzaje dochodów Dochody_podatek_od_spadkow \n", "0 NaN \\\n", @@ -411,7 +424,7 @@ "[47083 rows x 11 columns]" ] }, - "execution_count": 27, + "execution_count": 105, "metadata": {}, "output_type": "execute_result" } @@ -428,7 +441,7 @@ "df_fina_1 = df_fina_1.rename(columns={\n", " 'dochody podatkowe - podatek leśny': 'Dochody_podatek_lesny',\n", " 'dochody podatkowe - podatek od czynności cywilnoprawnych': 'Dochody_podatek_PCC',\n", - " 'dochody podatkowe - podatek od działalności gospodarczej osób fizycznych, opłacany w formie karty podatkowej': 'Dochody_podatek_...',\n", + " 'dochody podatkowe - podatek od działalności gospodarczej osób fizycznych, opłacany w formie karty podatkowej': 'Dochody_podatek_od_dzialalnosci_gospodarczej',\n", " 'dochody podatkowe - podatek od nieruchomości': 'Dochody_podatek_od_nieruchomosci',\n", " 'dochody podatkowe - podatek od spadków i darowizn': 'Dochody_podatek_od_spadkow',\n", " 'dochody podatkowe - podatek od środków transportowych': 'Dochody_podatek_od_srodkow_transportowych',\n", @@ -441,14 +454,14 @@ }, { "cell_type": "code", - "execution_count": 28, + "execution_count": 106, "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ - "C:\\Users\\micha\\AppData\\Local\\Temp\\ipykernel_26160\\2161929356.py:1: DtypeWarning: Columns (7) have mixed types. Specify dtype option on import or set low_memory=False.\n", + "C:\\Users\\micha\\AppData\\Local\\Temp\\ipykernel_28456\\2161929356.py:1: DtypeWarning: Columns (7) have mixed types. Specify dtype option on import or set low_memory=False.\n", " df_fina_2 = pd.read_csv(\n" ] }, @@ -816,7 +829,7 @@ "[47083 rows x 14 columns]" ] }, - "execution_count": 28, + "execution_count": 106, "metadata": {}, "output_type": "execute_result" } @@ -849,7 +862,7 @@ }, { "cell_type": "code", - "execution_count": 29, + "execution_count": 107, "metadata": {}, "outputs": [ { @@ -1066,7 +1079,7 @@ "[48611 rows x 8 columns]" ] }, - "execution_count": 29, + "execution_count": 107, "metadata": {}, "output_type": "execute_result" } @@ -1093,7 +1106,7 @@ }, { "cell_type": "code", - "execution_count": 30, + "execution_count": 108, "metadata": {}, "outputs": [ { @@ -1336,7 +1349,7 @@ "[48611 rows x 8 columns]" ] }, - "execution_count": 30, + "execution_count": 108, "metadata": {}, "output_type": "execute_result" } @@ -1363,7 +1376,7 @@ }, { "cell_type": "code", - "execution_count": 31, + "execution_count": 109, "metadata": {}, "outputs": [ { @@ -1593,7 +1606,7 @@ "[48611 rows x 8 columns]" ] }, - "execution_count": 31, + "execution_count": 109, "metadata": {}, "output_type": "execute_result" } @@ -1627,7 +1640,7 @@ }, { "cell_type": "code", - "execution_count": 32, + "execution_count": 110, "metadata": {}, "outputs": [], "source": [ @@ -1636,7 +1649,34 @@ }, { "cell_type": "code", - "execution_count": 33, + "execution_count": 111, + "metadata": {}, + "outputs": [], + "source": [ + "wojewodztwo_dictionary = {\n", + "'02': 'Dolnoslaskie',\n", + "'04': 'Kujawsko_Pomorskie',\n", + "'06': 'Lubelskie',\n", + "'08': 'Lubuskie',\n", + "'10': 'Lodzkie',\n", + "'12': 'Malopolskie',\n", + "'14': 'Mazowieckie',\n", + "'16': 'Opolskie',\n", + "'18': 'Podkarpackie',\n", + "'20': 'Podlaskie',\n", + "'22': 'Pomorskie',\n", + "'24': 'Slaskie',\n", + "'26': 'Swietokrzyskie',\n", + "'28': 'Warminsko_Mazurskie',\n", + "'30': 'Wielkopolskie',\n", + "'32': 'Zachodniopomorskie'}\n", + "\n", + "df_data = pd.concat([df_data, pd.get_dummies(df_data['Kod'].apply(lambda x: wojewodztwo_dictionary.get(x[:2], None)), prefix='Wojewodztwo').astype(int)], axis=1)" + ] + }, + { + "cell_type": "code", + "execution_count": 112, "metadata": {}, "outputs": [], "source": [ @@ -1646,7 +1686,7 @@ }, { "cell_type": "code", - "execution_count": 34, + "execution_count": 113, "metadata": {}, "outputs": [], "source": [ @@ -1656,22 +1696,31 @@ }, { "cell_type": "code", - "execution_count": 35, + "execution_count": 114, "metadata": {}, "outputs": [], "source": [ "df_data = df_data.merge(df_fina_1, left_on=[df_data['Kod'].str.slice(stop=-1), 'Rok'], right_on=[df_fina_1['Kod'].str.slice(stop=-1), 'Rok'], how='left', suffixes=(None, '_fina_1'))\n", - "df_data = df_data.drop(['key_0', 'Kod_fina_1'], axis=1)\n" + "df_data = df_data.drop(['key_0', 'Kod_fina_1'], axis=1)\n", + "\n", + "df_data = df_data.merge(df_fina_2, left_on=[df_data['Kod'].str.slice(stop=-1), 'Rok'], right_on=[df_fina_2['Kod'].str.slice(stop=-1), 'Rok'], how='left', suffixes=(None, '_fina_2'))\n", + "df_data = df_data.drop(['key_0', 'Kod_fina_2'], axis=1)\n" ] }, { "cell_type": "code", - "execution_count": 36, + "execution_count": 115, "metadata": {}, "outputs": [], "source": [ - "df_data = df_data.merge(df_fina_2, left_on=[df_data['Kod'].str.slice(stop=-1), 'Rok'], right_on=[df_fina_2['Kod'].str.slice(stop=-1), 'Rok'], how='left', suffixes=(None, '_fina_2'))\n", - "df_data = df_data.drop(['key_0', 'Kod_fina_2'], axis=1)" + "df_data = df_data.merge(df_ludn_1, left_on=[df_data['Kod'].str.slice(stop=-1), 'Rok'], right_on=[df_ludn_1['Kod'].str.slice(stop=-1), 'Rok'], how='left', suffixes=(None, '_ludn_1'))\n", + "df_data = df_data.drop(['key_0', 'Kod_ludn_1'], axis=1)\n", + "\n", + "df_data = df_data.merge(df_ludn_2, left_on=[df_data['Kod'].str.slice(stop=-1), 'Rok'], right_on=[df_ludn_2['Kod'].str.slice(stop=-1), 'Rok'], how='left', suffixes=(None, '_ludn_2'))\n", + "df_data = df_data.drop(['key_0', 'Kod_ludn_2'], axis=1)\n", + "\n", + "df_data = df_data.merge(df_ludn_3, left_on=[df_data['Kod'].str.slice(stop=-1), 'Rok'], right_on=[df_ludn_3['Kod'].str.slice(stop=-1), 'Rok'], how='left', suffixes=(None, '_ludn_3'))\n", + "df_data = df_data.drop(['key_0', 'Kod_ludn_3'], axis=1)" ] }, { @@ -1683,469 +1732,62 @@ }, { "cell_type": "code", - "execution_count": 37, + "execution_count": 116, "metadata": {}, "outputs": [ { "data": { - "text/html": [ - "
\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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \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", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - " \n", - "
KodRokSumaPowierzchniaWynagrodzenie_ogolemWynagrodzenie_w_relacji_do_sredniejDochody_podatek_lesnyDochody_podatek_PCCDochody_podatek_...Dochody_podatek_od_nieruchomosci...Dochody_z_uslugDochody_dofinansowanie_inwestycyjneDochody_dofinansowanie_razemUdzialy_w_podatkach_dochodowych_od_osob_fizycznychUdzialy_w_podatkach_dochodowych_od_osob_prywatnychUdzialy_w_podatkach_dochodowych_razemWplywy_z_innych_lokalnych_oplatWplywy_z_oplaty_eksploatacyjnejWplywy_z_oplaty_skarbowejWplywy_z_oplaty_targowej
0020101120142482706.3624.003422.9085.508755.971530935.8084220.5423823448.76...2380938.9161031.321900308.9927297399.001984447.8029281846.807018623.6828867.32928926.81188736.80
1020101120161016449.0324.003666.1985.4014900.551631451.8377726.7021961009.53...3748786.27111299.61284981.4031878605.003726450.7435605055.747277990.6231466.01475771.76158803.00
2020101120171507540.4424.003901.9486.2014988.072022884.7466169.1222107840.97...4137582.8489949.86118699.7434702412.002536379.1337238791.137339238.1424998.04511127.33131562.90
3020101120181125087.7524.004214.6687.2015221.032519471.8674351.8122767685.01...5556645.410.0024676.9239128194.001506913.1840635107.187494838.8816194.57479489.69124935.70
4020101120209052911.4524.004887.9588.5015459.782632509.9974425.1428336580.30...5344170.622640028.002660441.2040456699.002143819.1242600518.127627128.145661.00440259.9062502.50
..................................................................
972332630112017467956789.99197.004536.08100.20150527.435163900.56587305.9474099232.11...1859435.5820000.18212570.7047760120.001199589.0848959709.0810930683.1538789.78404331.07622509.60
97243263011201811972196.58202.004779.0998.80154462.395361951.37572868.36108107448.79...1996824.8025285.92237485.3452799183.002690098.1755489281.1710458871.304684.54434077.88608625.90
9725326301120192074346.69202.005222.62100.80150329.316088184.20468411.5138527846.59...2187576.470.00225831.8455319040.002770684.1758089724.1711369287.113456.95415686.53610059.50
9726326301120208314185.11202.005517.6899.90156556.525125090.74329522.1278767466.83...1917372.5521002107.0021192313.0553739656.003144444.3856884100.3812281916.715157.50355201.29507341.00
972732630112021752819.71202.005564.4192.70163778.369082482.28492045.2878491368.35...4110105.72888293.631072910.8363936763.003975531.9567912294.9517127683.5527746.70416473.030.00
\n", - "

9728 rows × 27 columns

\n", - "
" - ], "text/plain": [ - " Kod Rok Suma Powierzchnia Wynagrodzenie_ogolem \n", - "0 0201011 2014 2482706.36 24.00 3422.90 \\\n", - "1 0201011 2016 1016449.03 24.00 3666.19 \n", - "2 0201011 2017 1507540.44 24.00 3901.94 \n", - "3 0201011 2018 1125087.75 24.00 4214.66 \n", - "4 0201011 2020 9052911.45 24.00 4887.95 \n", - "... ... ... ... ... ... \n", - "9723 3263011 2017 467956789.99 197.00 4536.08 \n", - "9724 3263011 2018 11972196.58 202.00 4779.09 \n", - "9725 3263011 2019 2074346.69 202.00 5222.62 \n", - "9726 3263011 2020 8314185.11 202.00 5517.68 \n", - "9727 3263011 2021 752819.71 202.00 5564.41 \n", - "\n", - " Wynagrodzenie_w_relacji_do_sredniej Dochody_podatek_lesny \n", - "0 85.50 8755.97 \\\n", - "1 85.40 14900.55 \n", - "2 86.20 14988.07 \n", - "3 87.20 15221.03 \n", - "4 88.50 15459.78 \n", - "... ... ... \n", - "9723 100.20 150527.43 \n", - "9724 98.80 154462.39 \n", - "9725 100.80 150329.31 \n", - "9726 99.90 156556.52 \n", - "9727 92.70 163778.36 \n", - "\n", - " Dochody_podatek_PCC Dochody_podatek_... \n", - "0 1530935.80 84220.54 \\\n", - "1 1631451.83 77726.70 \n", - "2 2022884.74 66169.12 \n", - "3 2519471.86 74351.81 \n", - "4 2632509.99 74425.14 \n", - "... ... ... \n", - "9723 5163900.56 587305.94 \n", - "9724 5361951.37 572868.36 \n", - "9725 6088184.20 468411.51 \n", - "9726 5125090.74 329522.12 \n", - "9727 9082482.28 492045.28 \n", - "\n", - " Dochody_podatek_od_nieruchomosci ... Dochody_z_uslug \n", - "0 23823448.76 ... 2380938.91 \\\n", - "1 21961009.53 ... 3748786.27 \n", - "2 22107840.97 ... 4137582.84 \n", - "3 22767685.01 ... 5556645.41 \n", - "4 28336580.30 ... 5344170.62 \n", - "... ... ... ... \n", - "9723 74099232.11 ... 1859435.58 \n", - "9724 108107448.79 ... 1996824.80 \n", - "9725 38527846.59 ... 2187576.47 \n", - "9726 78767466.83 ... 1917372.55 \n", - "9727 78491368.35 ... 4110105.72 \n", - "\n", - " Dochody_dofinansowanie_inwestycyjne Dochody_dofinansowanie_razem \n", - "0 61031.32 1900308.99 \\\n", - "1 111299.61 284981.40 \n", - "2 89949.86 118699.74 \n", - "3 0.00 24676.92 \n", - "4 2640028.00 2660441.20 \n", - "... ... ... \n", - "9723 20000.18 212570.70 \n", - "9724 25285.92 237485.34 \n", - "9725 0.00 225831.84 \n", - "9726 21002107.00 21192313.05 \n", - "9727 888293.63 1072910.83 \n", - "\n", - " Udzialy_w_podatkach_dochodowych_od_osob_fizycznych \n", - "0 27297399.00 \\\n", - "1 31878605.00 \n", - "2 34702412.00 \n", - "3 39128194.00 \n", - "4 40456699.00 \n", - "... ... \n", - "9723 47760120.00 \n", - "9724 52799183.00 \n", - "9725 55319040.00 \n", - "9726 53739656.00 \n", - "9727 63936763.00 \n", - "\n", - " Udzialy_w_podatkach_dochodowych_od_osob_prywatnych \n", - "0 1984447.80 \\\n", - "1 3726450.74 \n", - "2 2536379.13 \n", - "3 1506913.18 \n", - "4 2143819.12 \n", - "... ... \n", - "9723 1199589.08 \n", - "9724 2690098.17 \n", - "9725 2770684.17 \n", - "9726 3144444.38 \n", - "9727 3975531.95 \n", - "\n", - " Udzialy_w_podatkach_dochodowych_razem Wplywy_z_innych_lokalnych_oplat \n", - "0 29281846.80 7018623.68 \\\n", - "1 35605055.74 7277990.62 \n", - "2 37238791.13 7339238.14 \n", - "3 40635107.18 7494838.88 \n", - "4 42600518.12 7627128.14 \n", - "... ... ... \n", - "9723 48959709.08 10930683.15 \n", - "9724 55489281.17 10458871.30 \n", - "9725 58089724.17 11369287.11 \n", - "9726 56884100.38 12281916.71 \n", - "9727 67912294.95 17127683.55 \n", - "\n", - " Wplywy_z_oplaty_eksploatacyjnej Wplywy_z_oplaty_skarbowej \n", - "0 28867.32 928926.81 \\\n", - "1 31466.01 475771.76 \n", - "2 24998.04 511127.33 \n", - "3 16194.57 479489.69 \n", - "4 5661.00 440259.90 \n", - "... ... ... \n", - "9723 38789.78 404331.07 \n", - "9724 4684.54 434077.88 \n", - "9725 3456.95 415686.53 \n", - "9726 5157.50 355201.29 \n", - "9727 27746.70 416473.03 \n", - "\n", - " Wplywy_z_oplaty_targowej \n", - "0 188736.80 \n", - "1 158803.00 \n", - "2 131562.90 \n", - "3 124935.70 \n", - "4 62502.50 \n", - "... ... \n", - "9723 622509.60 \n", - "9724 608625.90 \n", - "9725 610059.50 \n", - "9726 507341.00 \n", - "9727 0.00 \n", - "\n", - "[9728 rows x 27 columns]" + "Index(['Kod', 'Rok', 'Suma', 'Wojewodztwo_Dolnoslaskie',\n", + " 'Wojewodztwo_Kujawsko_Pomorskie', 'Wojewodztwo_Lodzkie',\n", + " 'Wojewodztwo_Lubelskie', 'Wojewodztwo_Lubuskie',\n", + " 'Wojewodztwo_Malopolskie', 'Wojewodztwo_Mazowieckie',\n", + " 'Wojewodztwo_Opolskie', 'Wojewodztwo_Podkarpackie',\n", + " 'Wojewodztwo_Podlaskie', 'Wojewodztwo_Pomorskie', 'Wojewodztwo_Slaskie',\n", + " 'Wojewodztwo_Swietokrzyskie', 'Wojewodztwo_Warminsko_Mazurskie',\n", + " 'Wojewodztwo_Wielkopolskie', 'Wojewodztwo_Zachodniopomorskie',\n", + " 'Powierzchnia', 'Wynagrodzenie_ogolem',\n", + " 'Wynagrodzenie_w_relacji_do_sredniej', 'Dochody_podatek_lesny',\n", + " 'Dochody_podatek_PCC', 'Dochody_podatek_od_dzialalnosci_gospodarczej',\n", + " 'Dochody_podatek_od_nieruchomosci', 'Dochody_podatek_od_spadkow',\n", + " 'Dochody_podatek_od_srodkow_transportowych', 'Dochody_podatek_rolny',\n", + " 'Dochody_podatek_odrebne_ustawy', 'Dochody_razem', 'Dochody_z_majatku',\n", + " 'Dochody_z_najmu_i_dzierzawy', 'Dochody_z_uslug',\n", + " 'Dochody_dofinansowanie_inwestycyjne', 'Dochody_dofinansowanie_razem',\n", + " 'Udzialy_w_podatkach_dochodowych_od_osob_fizycznych',\n", + " 'Udzialy_w_podatkach_dochodowych_od_osob_prywatnych',\n", + " 'Udzialy_w_podatkach_dochodowych_razem',\n", + " 'Wplywy_z_innych_lokalnych_oplat', 'Wplywy_z_oplaty_eksploatacyjnej',\n", + " 'Wplywy_z_oplaty_skarbowej', 'Wplywy_z_oplaty_targowej',\n", + " 'Ludnosc_ogolem', 'Ludnosc_w_wieku_poprodukcyjnym',\n", + " 'Ludnosc_w_wieku_produkcyjnym', 'Ludnosc_w_wieku_produkcyjnym_mobilnym',\n", + " 'Ludnosc_w_wieku_produkcyjnym_niemobilnym',\n", + " 'Ludnosc_w_wieku_przedprodukcyjnym', 'Ludnosc_mezczyzni',\n", + " 'Ludnosc_mezczyzni_w_wieku_poprodukcyjnym',\n", + " 'Ludnosc_mezczyzni_w_wieku_produkcyjnym',\n", + " 'Ludnosc_mezczyzni_w_wieku_produkcyjnym_mobilnym',\n", + " 'Ludnosc_mezczyzni_w_wieku_produkcyjnym_niemobilnym',\n", + " 'Ludnosc_mezczyzni_w_wieku_przedprodukcyjnym', 'Ludnosc_kobiety',\n", + " 'Ludnosc_kobiety_w_wieku_poprodukcyjnym',\n", + " 'Ludnosc_kobiety_w_wieku_produkcyjnym',\n", + " 'Ludnosc_kobiety_w_wieku_produkcyjnym_mobilnym',\n", + " 'Ludnosc_kobiety_w_wieku_produkcyjnym_niemobilnym',\n", + " 'Ludnosc_kobiety_w_wieku_przedprodukcyjnym'],\n", + " dtype='object')" ] }, - "execution_count": 37, + "execution_count": 116, "metadata": {}, "output_type": "execute_result" } ], "source": [ - "df_data" + "df_data.columns" ] }, { "cell_type": "code", - "execution_count": 38, + "execution_count": 117, "metadata": {}, "outputs": [], "source": [ @@ -2156,15 +1798,202 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Preprocessing" + "..." ] }, { "cell_type": "code", - "execution_count": null, + "execution_count": 118, "metadata": {}, - "outputs": [], - "source": [] + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Mean Squared Error: 294627671837056.8\n" + ] + } + ], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "from sklearn.tree import DecisionTreeRegressor, plot_tree\n", + "from sklearn.metrics import mean_squared_error\n", + "import matplotlib.pyplot as plt\n", + "\n", + "df_data.dropna(inplace=True)\n", + "\n", + "feature_names = [\n", + " 'Powierzchnia', # 1\n", + " 'Wynagrodzenie_ogolem', # 2\n", + " 'Wynagrodzenie_w_relacji_do_sredniej', # 3\n", + " 'Dochody_podatek_lesny', # 4\n", + " 'Dochody_podatek_PCC', # 5\n", + " 'Dochody_podatek_od_dzialalnosci_gospodarczej', # 6\n", + " 'Dochody_podatek_od_nieruchomosci', # 7\n", + " 'Dochody_podatek_od_spadkow', # 8\n", + " 'Dochody_podatek_od_srodkow_transportowych', # 9\n", + " 'Dochody_podatek_rolny', # 10\n", + " 'Dochody_podatek_odrebne_ustawy', # 11\n", + " 'Dochody_razem', # 12\n", + " 'Dochody_z_majatku', # 13\n", + " 'Dochody_z_najmu_i_dzierzawy', # 14\n", + " 'Dochody_z_uslug', # 15\n", + " 'Dochody_dofinansowanie_inwestycyjne', # 16\n", + " 'Dochody_dofinansowanie_razem', # 17\n", + " 'Udzialy_w_podatkach_dochodowych_od_osob_fizycznych', # 18\n", + " 'Udzialy_w_podatkach_dochodowych_od_osob_prywatnych', # 19\n", + " 'Udzialy_w_podatkach_dochodowych_razem', # 20\n", + " 'Wplywy_z_innych_lokalnych_oplat', # 21\n", + " 'Wplywy_z_oplaty_eksploatacyjnej', # 22\n", + " 'Wplywy_z_oplaty_skarbowej', # 23\n", + " 'Wplywy_z_oplaty_targowej', # 24\n", + " 'Ludnosc_ogolem', # 25\n", + " 'Ludnosc_w_wieku_poprodukcyjnym', # 26\n", + " 'Ludnosc_w_wieku_produkcyjnym', # 27\n", + " 'Ludnosc_w_wieku_produkcyjnym_mobilnym', # 28\n", + " 'Ludnosc_w_wieku_produkcyjnym_niemobilnym', # 29\n", + " 'Ludnosc_w_wieku_przedprodukcyjnym', # 30\n", + " 'Ludnosc_mezczyzni', # 31\n", + " 'Ludnosc_mezczyzni_w_wieku_poprodukcyjnym', # 32\n", + " 'Ludnosc_mezczyzni_w_wieku_produkcyjnym', # 33\n", + " 'Ludnosc_mezczyzni_w_wieku_produkcyjnym_mobilnym', # 34\n", + " 'Ludnosc_mezczyzni_w_wieku_produkcyjnym_niemobilnym', # 35\n", + " 'Ludnosc_mezczyzni_w_wieku_przedprodukcyjnym', # 36\n", + " 'Ludnosc_kobiety', # 37\n", + " 'Ludnosc_kobiety_w_wieku_poprodukcyjnym', # 38\n", + " 'Ludnosc_kobiety_w_wieku_produkcyjnym', # 39\n", + " 'Ludnosc_kobiety_w_wieku_produkcyjnym_mobilnym', # 40\n", + " 'Ludnosc_kobiety_w_wieku_produkcyjnym_niemobilnym', # 41\n", + " 'Ludnosc_kobiety_w_wieku_przedprodukcyjnym', # 42\n", + " 'Wojewodztwo_Dolnoslaskie', # 43\n", + " 'Wojewodztwo_Kujawsko_Pomorskie', # 44\n", + " 'Wojewodztwo_Lubelskie', # 45\n", + " 'Wojewodztwo_Lubuskie', # 46\n", + " 'Wojewodztwo_Lodzkie', # 47\n", + " 'Wojewodztwo_Malopolskie', # 48\n", + " 'Wojewodztwo_Mazowieckie', # 49\n", + " 'Wojewodztwo_Opolskie', # 50\n", + " 'Wojewodztwo_Podkarpackie', # 51\n", + " 'Wojewodztwo_Podlaskie', # 52\n", + " 'Wojewodztwo_Pomorskie', # 53\n", + " 'Wojewodztwo_Slaskie', # 54\n", + " 'Wojewodztwo_Swietokrzyskie', # 55\n", + " 'Wojewodztwo_Warminsko_Mazurskie', # 56\n", + " 'Wojewodztwo_Wielkopolskie', # 57\n", + " 'Wojewodztwo_Zachodniopomorskie'] # 58\n", + "\n", + "X = df_data[feature_names]\n", + "y = df_data['Suma']\n", + "\n", + "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)\n", + "\n", + "model = DecisionTreeRegressor(random_state=1)\n", + "model.fit(X_train, y_train)\n", + "\n", + "y_pred = model.predict(X_test)\n", + "mse = mean_squared_error(y_test, y_pred)\n", + "print(\"Mean Squared Error:\", mse)" + ] + }, + { + "cell_type": "code", + "execution_count": 119, + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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f79Y1EjU4sRpEG9UARArV64MfH/06FGhVqvFiRMnau03atQoMX369MD369atE5mZmUKtVgsAYsiQIeLMmTMxqppaq6VLlwoA4uOPP27wdp/PJzIyMsT48eOFEELY7XbRu3dvoVarxZ133inmz58vZs+eLS688EKxfft2IUTVrI/U1FTRs2dP8dZbb4klS5aIQ4cOCSGE+PLLLwUAcckll4h58+aJhx56SLRv31507dq11myQBQsWCADi97//vXj99dfFtGnTRGpqqujTp4/Iy8urVSOCmPXj99577wkAwmw2B15TTZmZmeLGG28Uc+fOFW+++ab4y1/+IiRJEvfee2+Tj+uf9fPBBx80uZ9/1k9xcXG92+bMmSMAiKFDh4pnnnlGzJs3T/z9738X3bt3F88++2xgP/8MpmHDhol//etf4oEHHhCpqamiS5cuZ531s337dmEymUTbtm3F9OnTxRtvvCH++c9/igEDBgT22bRpkwAgxo4dK959912xZMkSUV5eHpUaiVq6hAgqn332mQAgkpOTa31pNBpx4403CiGEOHnypOjevbt4+OGHxdatW8W3334rRo4cKUaNGlVrWiFRqMaPHy8MBoNwOByN7jNp0iSh1WpFSUmJEEKI06dPi3vuuUfk5OQInU4nOnToICZOnBi4XQghPvnkE9G7d2+h0WjqvVk+//zzIicnR+j1ejFs2DCxZcuWetOTZVkWs2fPFnl5eUKv14tzzjlHfPbZZ2LixInNCio2m00YjUYBQLz33nv1bn/qqafE4MGDRWpqqjAajaJXr15i1qxZwu12N/m4kQgqQgjx0UcfiYsuuijwd6BXr15i6tSpYt++fbX2e+2110Tnzp2FXq8XgwYNEuvXr693DBsKKkIIsWvXLnHttdeK1NRUYTAYRM+ePcWjjz5aa58nn3xS5OTkCJVKVW+qciRrJGrpJCHqnF9sBSRJwsqVKwOnnJctW4YJEyZg9+7d9QaomUwmtG/fHo8++ii+/PJLbN68OXDbr7/+itzcXGzcuBEXXnhhLF8CERERoRUNpm3KOeecA5/Ph6KiokAXz7oqKioCg2j9/KFGluWo10hERET1tZrBtOXl5di+fXtg2fvDhw9j+/btOHbsGHr06IEJEybg9ttvx4oVK3D48GFs2rQJc+bMwapVqwAA48aNw+bNm/HEE0/gwIED2Lp1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OGl1olumCTmpxjhVSERENTGoUEJRqSSM6dsOack6HCgqh93pgVeWYXd6cKCoHGnJOozu0479VIiIFIJBhRJOt0wzJg/rhL7ZFpRVeHCkxIGyCg/65Vg4NZmISGF4IZ4SUrdMM7pcbGJnWiIihWNQoYSlUknITUuKdxlERNQEXvohIiIixWJQISIiIsViUCEiIiLFYlAhIiIixWJQISIiIsViUCEiIiLFYlAhIiIixWJQISIiIsViUCEiIiLFYlAhIiIixWJQISIiIsViUCEiIiLFYlAhIiIixWJQISIiIsViUCEiIiLFYlAhIiIixWJQISIiIsViUCEiIiLFYlAhIiIixWJQISIiIsViUCEiIiLFYlAhIiIixWJQISIiIsViUCEiIiLFYlAhIiIixWJQISIiIsXSBLujzWYL+kFTUlLCKoaIiIiopqCDSmpqKiRJCmpfn88XdkFEREREfkEHlbVr1wb+/8iRI5g2bRomTZqEIUOGAAA2btyIRYsWYc6cOZGvkoiIiBKSJIQQod5p1KhRuOOOO3DzzTfX2v7+++/jjTfewLp16yJVX5NsNhssFgusVisvNxEREbUQobx/hzWYduPGjRg0aFC97YMGDcKmTZvCeUgiIiKiesIKKrm5uXjzzTfrbX/rrbeQm5vb7KKIiIiIgBDGqNT04osv4g9/+AO++OILXHDBBQCATZs24cCBA/joo48iWiARERElrrDOqIwdOxb79+/H+PHjUVpaitLSUowfPx779+/H2LFjI10jERERJaiwBtMqBQfTEhERtTxRH0wLAP/9739x6623YujQoThx4gQA4N///je+++67cB+SiIiIqJawgspHH32EMWPGwGg0YuvWrXC5XAAAq9WK2bNnR7RAIiIiSlxhBZWnnnoK8+fPx5tvvgmtVhvYPmzYMGzdujVixREREVFiCyuo7Nu3DyNGjKi33WKxoKysrLk1EREREQEIM6i0b98e+fn59bZ/99136NKlS7OLIiIiIgLCDCp33nkn7r//fvz444+QJAkFBQVYvHgxHnroIdx9992RrpGIiIgSVFgN36ZNmwZZljFq1ChUVFRgxIgR0Ov1eOihh3DvvfdGukYiIiJKUM3qo+J2u5Gfn4/y8nL07t0bJpMpkrWdFfuoEBERtTxR76MyZcoU2O126HQ69O7dG4MHD4bJZILD4cCUKVPCKpqIiIiorrCCyqJFi1BZWVlve2VlJd59991mF0VEREQEhDhGxWazQQgBIQTsdjsMBkPgNp/Ph88//xyZmZkRL5KIiIgSU0hBJTU1FZIkQZIk9OjRo97tkiTh8ccfj1hxRERElNhCCipr166FEAKXXnopPvroI6SlpQVu0+l0yMvLQ3Z2dsSLJCIiosQUUlAZOXIkAODw4cPo2LEjJEmKSlFEREREQJiDab/55ht8+OGH9bZ/8MEHWLRoUbOLIiIiIgLCDCpz5sxBenp6ve2ZmZlcPZmIiIgiJqygcuzYMXTu3Lne9ry8PBw7dqzZRREREREBYQaVzMxM7Nixo972n3/+GW3btm12UURERERAmEHl5ptvxn333Ye1a9fC5/PB5/Phm2++wf33348//vGPka6RiIiIElRYixI++eSTOHLkCEaNGgWNpuohZFnG7bffzjEqREREFDFhnVHR6XRYtmwZ9u7di8WLF2PFihU4ePAgFixYAJ1OF1YhTz/9NCRJwt/+9rew7k9EREStT1hnVPx69OjRYIfaUG3evBmvv/46+vfv3+zHIiIiotYj6KDy4IMP4sknn0RycjIefPDBJvd94YUXgi6gvLwcEyZMwJtvvomnnnoq6PsRERFR6xd0UNm2bRs8Hk/g/xsTarfaqVOnYty4cbjsssvOGlRcLhdcLlfge5vNFtJzUfzIssCJsko43F4k6zTISTVCpWJnYyIialrQQWXt2rUN/n9zLF26FFu3bsXmzZuD2n/OnDlc9LAFyi+y46tdhThYXA6n1weDRo2uGSaM6dsO3TLN8S6PiIgULKzBtJFw/Phx3H///Vi8eDEMBkNQ95k+fTqsVmvg6/jx41Gukporv8iOhRuOYFeBFalJWnRJNyE1SYtdBVYs3HAE+UX2eJdIREQKFvQZleuuuy7oB12xYsVZ9/npp59QVFSEc889N7DN5/Nh/fr1eOWVV+ByuaBWq2vdR6/XQ6/XB10HxZcsC3y1qxClDje6Z5oClwXNBi1Meg0OFJVj9e5CdEk38TIQERE1KOigYrFYAv8vhMDKlSthsVgwaNAgAFXBo6ysLOhAM2rUKOzcubPWtsmTJ6NXr174xz/+US+kUMtzoqwSB4vLkWUx1Bu7JEkSsiwG5BeV40RZJXLTkuJUJRERKVnQQWXhwoWB///HP/6BG2+8EfPnzw8ECp/Ph7/+9a9ISUkJ6vHMZjP69u1ba1tycjLatm1bbzu1TA63F06vD0k6Y4O3G3VqFNqccLi9Ma6MiIhairDGqCxYsAAPPfRQrbMearUaDz74IBYsWBCx4qhlS9ZpYNCoUdFIEKl0+6DXqJGsa1Y7HyIiasXCeofwer3Yu3cvevbsWWv73r17Icty2MWsW7cu7PuS8uSkGtE1w4RdBVaY9Jpal3+EEDhpdaJfjgU5qQ2fcSEiIgorqEyePBl/+tOfcPDgQQwePBgA8OOPP+Lpp5/G5MmTI1ogtVwqlYQxfduhwFqJA0VVY1WMOjUq3T6ctDqRlqzD6D7tOJCWiIgaFVZQee6559C+fXs8//zzOHnyJAAgKysLDz/8MP7nf/4nogVSy9Yt04zJwzoF+qgU2pzQa9Tol2PB6D7so0JERE2ThBCiOQ/g7w4b7CDaSLLZbLBYLLBarXF5fgoeO9MSEZFfKO/fYY9i9Hq9WLduHQ4ePIhbbrkFAFBQUICUlBSYTKZwH5ZaKZVK4hRkIiIKWVhB5ejRo7jiiitw7NgxuFwuXH755TCbzZg7dy5cLhfmz58f6TqJiIgoAYU1Pfn+++/HoEGDcObMGRiNv83YuPbaa7FmzZqIFUdERESJLawzKv/973/x/fffQ6fT1dreqVMnnDhxIiKFKRHHWRAREcVWWEFFlmX4fL5623/99VeYza1zFgdXACYiIoq9sC79jB49Gi+99FLge0mSUF5ejhkzZmDs2LGRqk0xuAIwERFRfITdR+WKK65A79694XQ6ccstt+DAgQNIT0/HkiVLIl1jXHEFYCIiovgJK6jk5ubi559/xrJly/Dzzz+jvLwcf/rTnzBhwoRag2tbA64ATEREFD8hBxWPx4NevXrhs88+w4QJEzBhwoRo1KUYXAGYiIgofkIeo6LVauF0OqNRiyJxBWAiIqL4CWsw7dSpUzF37lx4va3/LIJ/BeCTVifqrjbgXwG4W6aJKwATERFFQVinATZv3ow1a9Zg9erV6NevH5KTk2vdvmLFiogUpwRcAZiIiCh+wgoqqamp+MMf/hDpWhSLKwBTqMrsTkz/ZCdOnHEip40Bc67uh1SzId5lERG1OCEFFVmW8eyzz2L//v1wu9249NJLMXPmzFY306ch3TLN6HKxiZ1p6ayun7cBW46WBb7fccKGL3atwaC8VHx497D4FUZE1AKFNEZl1qxZ+Oc//wmTyYScnBz861//wtSpU6NVm+L4VwDu1T4FuWlJDClUT92QUtOWo2W4ft6G2BZERNTChRRU3n33Xbz22mv46quv8PHHH+M///kPFi9eDFmWo1UfKYgsCxwvrcDeUzYcL62ALIuz3ymG4l1fmd3ZaEjx23K0DGX2xJk1R0TUXCFd+jl27FitFvmXXXYZJElCQUEBOnToEPHiSDmUvtaREuqb/snOoPebd+v5Ua6GiKh1CCmoeL1eGAy1BwRqtVp4PJ6IFkXK4l/rqNThRpbFgCSdERVuL3YVWFFgrcTkYZ3iGlaUUt+JM8GdKQl2PyIiCjGoCCEwadIk6PX6wDan04m77rqr1hTl1jQ9OdEpfa0jJdWX08aAHSdsQe1HRETBCSmoTJw4sd62W2+9NWLFkPIofa0jJdU35+p++GLXmqD2o8bJsuDsOiIKCCmoLFy4MFp1kEIpfa0jJdWXajZgUF5qkwNqB+Wlsp9KE5Qw1oiIlCWsFvrUsHjPOomGeK91dLZjGu/66vrw7mEYlJfa4G3so9I0/1ijXQVWpCZp0SXdhNQkLXYVWLFwwxHkF9njXSIRxQFX0ouQ1vpJ0L/W0a4CK0x6Ta3LK/61jvrlWKKy1lEwxzSe9TXmw7uHsTNtiJQ01oiIlIVBJQKUMuskGuK11lGwx1SpazGlmg2cghwCJY01IiJl4aWfZqr7SdBs0EKtkmA2aNE904RShxurdxe26MtA/rWO+mZbUFbhwZESB8oqPOiXY4lKCAv1mMa6Poq838YaNfzZyahTw+X1xW0sFBHFD8+oNFOifBKM5VpH4RxTrsXUstUca2Q2aOvdHuuxRkSkHPytbyYlzTqJNv9aR9EW7jGNVX0UeUoca0REysBLP82ktFknrQGPaeLxjzVKS9bhQFE57E4PvLIMu9ODA0XlcRtrRETxx6DSTP5PgietTghRexyK/5Ngt0wTPwmGgMc0MXGsERE1hB9Jm0mps05aMh7T1ifYbrMca0REdUmi7kfWFsRms8FiscBqtSIlJSWutdTs+eHyVl2a6JZpwug+LbuPSjzxmLYOrbXHEBGFL5T3bwaVCOIaJZHHY9qy1e+Ho0GF2xs4M8ZLOkSJKZT3b176iSDOOok8HtOWi91miSgSOJiWiKIilH44RESN4RkVSlhOpxfLth4LrMdz07kdYTDwVyJSEqnHEBFFD/8qU0J6fvU+vPv9UZS7PJAFoJKAF1bn4/ahefif0T3jXV6rwG6zRBQJvPRDCef51fsw/9uDsLk80KgkGLUSNCoJNpcH8789iOdX74t3ia0C++EQUSQwqFBCcTq9ePf7o/DKAkkaCTqNCmqVCjqNCkkaCV5Z4N8bj8Lp5OWI5mK3WSKKBAYVSijLth5DucsDnUqCSlX7x1+lUkGnkmB3erBs67E4Vdi6sNssETUXLw5TQjlxxglZAOpGIrpaBbh9VftRZLDbLBE1B4MKJZScNgaoJMAnNxxWfHLVwNqcNobYF9eKsR8OEYWLl34oodx0bkeY9Fq4ZQFZlmvdJssy3LKA2aDFTed2jFOFRERUE4MKRYwsCxwvrcDeUzYcL62ALCtvdQaDQYPbh+ZBo5JQ4RVwe2X4ZBlur4wKr4BWJeG2IXnsp0JEpBD8a0wR0ZIWnvP3SfH3UXH7qi73WAxa3DaEfVSIiJSEixJSs7XUhefYmZaIKD64KCHFjJIWnrOVu/DEF3vwa6kTHdIMeOzK3kgx6Rvd32DQYOLQLlGtiYiImodBJUSyLDjNsoZQFp6L5qyPiQt+xPr9JQicHjwMfPRTAUb0SMeiKRdE7XmJiForpbzfMaiEoCWNw4gVJSw8N3HBj/h2f0m97QLAt/tLMHHBjwwrREQhUNL7HYNKkOqPwzCiwu3FrgIrCqyVih2HEW3xXnjOVu7C+gZCSk3r95fAVu5q8jIQERFVUdr7HacnB6HuOAyzQQu1SoLZoEX3TBNKHW6s3l2oyOm40Rbvheee+GIPznbURfV+RETUNCW+3/GMShCCGYdxoNCOLUdLkWLUJtTYFf/CcwXWShwoqjpGRp0alW5fYNZPNBaeK7VV4oEPf8YPh0qD2v/XUrbEJyI6G6WMO6yJQSUIZxuH4fT4sPukDa9/ewh6rSrhxq74F57zX88stDmh16jRL8eC0X0ifwzG/Ws9dhfYQ7pPhzS2xCciOhsljDusi0ElCE2Nwyh1uPDT0TMod3qRlqxFu5TEHLsSq4XnwgkpEoDHruwd0TqIiFqjeI87bAjHqAShsXEYQgjkF5ajrNKDvLZJyLIY434tL578C8/1ap+C3LSkqFzuCTWkAMCIHukcSEtEFIR4jztsCINKEPzjMNKSdThQVA670wOvLOOk1YmjpRVITdKhW6a51vW8utfyqPke+PDnkPaXAIxkHxUioqA19n5nd3pwoKg8auMOm8JLP0FqaByG0+OD2aDBeR3bIC1ZV+8+8biW15oVlAU3IFavkTB+QNZZO9MSEVF9sR53eDYMKiGoOw7DVunBkh+PwaBt+MRUPK7ltWbZqQYcKHKcdb8Lu6ThuRvOiUFFREStU6zGHQaD76Ah8o/DAKrmm28+fAa7Cqww6TW1Lv0IIVBQVom8tsmwOz04XlrR4D+yUloUK1HdRQPnXNMHQ59Zf9b7vXj9gBhUR0TUutV8v4snBpVmaKqHyIHCcticHnhlgVfW5jc4ZVlJLYqVZtZnO7Dwu+OoedHshdX5SE/WosThafR+fbLNSEuJ3SAvIiKKLgaVZmroWp7LK8Pm9CDFqEXHtCQk6TT1piwDUFSLYiUZMvtrnLS56223Oj3QqqVGw0qfbDNW3TciFiUSEVGMMKhEQM1reXaXBx9vPQGNSoUe7UyBy0FmgxYmvQYHisrx1a5CCCECLYob2mf17kJ0STcl3GWgP7z6XYMhxc/jE/DKwPd/H4HpH+9GQZkT2akGvHj9AJ5JISJqhRhUIsR/Le94aQVKyt3ITm28/fCOE2WAAHLaGBXTolgJyuxO/HTcevb9Kj34em8xFk25MAZVERFRPLGPSoT91n644Qxo1KlR4fbB4fE2uY/L60u4ac3TP9kZ9L4nznDtHiKiRMCgEmE12w83pNLtQ5JOjWStpsl9EnFacyjhI6cN1+4hIkoEDCoRFkz74f45qeiXY1FUi2IlCDZ8aCTgpnM7RrkaIiJSAgaVCAum/fCYvu1wRb/2impRrARzru4X1H6Th+XCYEiss01ERImKQSUK/FOW+2ZbUFbhwZESB8443MhNM2JkzwzoNWp0STfV26eswoN+OZaEnZqcajZgUF5qk/tkpejwyFX9Y1MQERHFnSTqXntoQWw2GywWC6xWK1JSUuJdTj3+rrO/nLRhy5EzKLY74fLJtRq7dUlXRotiJbl+3gZsOVpWb/t5uRZ8NPWi2BdEREQRFcr7d1zPn8+ZMwcrVqzA3r17YTQaMXToUMydOxc9e/aMZ1kRo1JJcHl9+HZ/cY3GbvWbvyXi2ZOmfHj3MJTZnZj+yc7f2udf3Q+pZg6gJSJKNHENKt9++y2mTp2K888/H16vF//85z8xevRo7NmzB8nJyfEsLSJkWeCrXYVs7BaGVLMB8249P95lEBFRnMU1qHz55Ze1vn/nnXeQmZmJn376CSNGtPxW6CfKKnGwuGoNIDZ2IyIiCp2ipk5YrVVdSdPS0hq83eVyweVyBb632WwxqStcvzV/a3iasVGnRqHNmXCN3YiIiIKlmFk/sizjb3/7G4YNG4a+ffs2uM+cOXNgsVgCX7m5uTGuMjTBNH9LxMZuREREwVJMUJk6dSp27dqFpUuXNrrP9OnTYbVaA1/Hjx+PYYWhC6b5WyI2diMiIgqWIj7K33PPPfjss8+wfv16dOjQodH99Ho99Hp9DCtrHn/ztwJrJQ4UVY1VMerUqHT7cNLqTNjGbkRERMGKa1ARQuDee+/FypUrsW7dOnTu3Dme5QTN3x8lmN4n/uZvX+0qxMHichTanNBr1OiXY8HoPu04NZmIiKgJcQ0qU6dOxfvvv49PPvkEZrMZp06dAgBYLBYYjcq8HJJfZA+EDqfXV6t5W2Oho1umGV0uZmM3IiKiUMW1M23dKbt+CxcuxKRJk856/1h3ps0vsmPhhiP1mrf5L+OweRsREdHZtZjOtC2pez+btxEREcWeYmb9KF0ozdvqkmWB46UV2HvKhuOlFZDllhPQiIiI4kkRs35agnCbt4UzpoWIiIiqMKgEqWbzNpNeA7vTC7dPhk6tgtmgabB5W/0xLcZWsSBhqa0SD3z4MwrKnMhONeDF6wcgLUWZg5+JiKhlY1AJkr952w+HT8PrlXGm0gOvLEOjUqGNUQuNRoUhXdoGmre11jEtY19ahz2nHIHvDxQ5cO7sb9An24xV97X89ZmIiEhZOEYlSCqVhF5ZZpy0OnHotAMqCbAYtVBJwKHTDpyyOtGzvTkQOpozpkWpBj25ulZIqWl3gR3j/rU+xhUREVFrx6ASJFkW2HvSjqwUA7qkJ0MWgLXSA1kAXdKT0T7FgH2n7IGBsr+NaWn4pJVRp4bL62sxCxI+9uEWlDg8Te6zu8COUlvLCV5ERKR8vPQTJP8Zku7tTA2OUSl3eQNnSHLTkmqNaTEbtPUeryUtSHjTa//Fj8eCW6n6gQ9/xqIpF0a5IiIiShTKf5dUiJqzfiRJQoqxdvioO+vHP6ZlV4EVJr2m1uUf/4KE/XIsil+QsN+ML2F3+YLev6DMGcVqiIgo0fDST5BqniFpSN0zJP4FCdOSdThQVA67s2rwrd3pwYGi8haxIOG1L38bUkgBgOxUQ5SqISKiRMSgchb+Zm12lwfpJh0Kypz1Our6z5B0yzTVOkPiX5Cwb7YFZRUeHClxoKzCg345FsVPTS6zO7HtRHnI93vx+gFRqIaIiBIVL/00oW6zNrdXRrHdBYfbi+6ZJhh1alS6fYG1fho6QxLsgoShrMgcC9M/2RnyfXq3T2Y/FSIiiigGlUY01qzN5ZFhq/TgWGkF9BoV9Bo1+uVYMLpP451mVSoJuWlJTT6XUrrXltmdmP7JTnyztzik+6Una/H53y6OTlFERJSwGFQa0FSztnM6pmJ/oR15bZNx9cBsmA3aZp39UFL32uvnbcCWo2Uh3+/2Qe3wxPWDIlKD0s4sEVH4+PtMkcCg0oDGmrUJIWB3emHQqnGkxIFkvabJMyVno6TuteGGlAs6pkQspCjpzBIRNQ9/nylSGFQa0NAChKUON/KLynGmwg2PT4bT48PCDYdx64V5Yf/ShdK9tjmB6GzK7M6wQopZr8ayvw6PSA1KOrNERM3D32eKJM76aUDdqcilDje2Hy9Dsd0Jg1aNZL0aBq0ah0scWLjhCPKL7GE9T7y715bZnbj7vc0Y/tzakO97To4JOx+/IiJ11D2zZDZooVZJMBu06J5pQqnDjdW7CwNdf4lIufj7TJHGMyoNqNmsLVmnRn5ROSrdXqQl6wAApQ4f2qUY0D/HgvxiR9iXZ+LZvTacSz16jYRLe2VgztX9kGqOXL8UpZxZIqLm4+8zRRrPqDSgZrO2HSesKLI7kazXwO2TUepww6hTo2tGMlQqVbMWF/QHopPW4HuzRMJ1r64P61LPpb0yMO/W8yMaUoD4n1kiosjh7zNFGoNKI/zN2jq3NcHp9sHh8sDpkZGZYsDA3FSkJesBNO+XLh7da/84/7/Yejy8S1Vzru4XsTpqCrXrLxEpF3+fKdL4k9KEbplmTLmoE07aKpGkVSM1SQezofa6Pc39pfMHIv/o+EKbM6jeLOGYuOBH/HAkuMUF6xqUlxrxMyl+rWVdJCLi7zNFHoPKWXRok4T+OanYVWCtF1Ii9UsXbPfa5igotePb/SVh3XdQXio+vHtYxGqpy39mqcBaiQNFVde2g+n6S0TKw99nijRJ1B0c0YLYbDZYLBZYrVakpKRE7XnqTrWr+0un9Kl297y/FZ/tOBnSfcx6FS7qnh7xgbNNqdl3weWtOlPVLdMU8TNLRBR9/H2mpoTy/s2gEqSW+kt397ub8MWe0NrhA8D2R0bFLKDUVLOTZZJWDQGg0uNjV0uiFoidaakxobx/89JPAxr65eqWaUanEcnYevwMTjvcaJusw7m5baDRBDceOR6/sE+u3B5WSInmeJSz8a+LlF9kx39+PsmulkQt2NnWOSMKBoNKHY21fe6VZcbek/Za2zcfPhPUG2c8WkmPeeEb7CsKfcr0ubnmqI5HCQa7WhIRkR+DSg2NvUH+cOg0Vm4/gSyLAd0zTSG9ccb6TbeiwoML5qyG3RP6fS/slIKld0WmJX64lLT+ERERxR/7qFRrrO2zSa8J9Dbx+mSY9Jqg20HHupX0Iyt3ovcT4YWUkT3S4x5SgNC6WhIRUevHMyrVGnuDtDu9OFPhQdtkHc5UeGB3epFirGp3f7Z20LFsJf3Iyp1Y/OOxsO77/d9HIDtNGZdSGloQsiajTo1Cm5NdLYmIEgTPqFRrrO2z2yfD65Nh1Knhk2W4fXKt25vqTBurVtIVFR4sCTOkXNU/SzEhBWBXy0iQZYHjpRXYe8qG46UVXPyNiFo0/rWv1tgCgTq1Chq1CpVuH9QqFXTq2tmuqTfOWC06OO+7g5DPvls9V/bOwCu3nNus5440drVsnngM3CYiiiaeUalWc4FAWZZhq/SgpNwFIQRSjRqcdrjRJkkLs+G3UHG2hQP9j1lQ5oS1wo2SchdslR4IISK66OCPh0pDvs+fLsjBvNsHN+t5oyEe6x+1Fv6B27sKrEhN0qJLugmpSVrsKrBi4YYjyC8Kb40nIqJ44hmVav43yF9O2fDl7lNweWXIAlBJgARAr1FDo1ah3OUNuh20SiWhV5YZq/ecwo5fy6DVSNBr1DDrNUjSa9AxLSnsN92iMgf+tGgTDp92otId2vmUnplGPHrtwJCfM1Ziuf5Ra8HZUkTUWjGo1GF3elDq8MDl9UEIAUmqChed05PQPdOEsgpP0G+c+UV2fLO3CCkGLTQqCeUuL1xeGSedTmSY9bi0V2ZYb7oj5q7BsTPOsF5frkWLrx68NKz7xlIs1j9qTWI5cJuIKJYYVKrJssD7PxzDoWIHUo1a6DV6SCpAyIDLK6PQ5gKEwN8u646KIFq61/yEe07HVABVM4jcPhlalYRTNif2nbLjkp6ZIb35Dp29GgW2MOYfA7DoVfjv9NFh3Tce2NUyeJwtRUStFceoVDt+pgI/HC6FSpLQ1qSD2aiFSa+F2ahFW5MOKknCD4fPQADo1T4FuWlJTQaMup9wJUlCilGLdJMeliQdslONIfcDGf3Ml2GHlEyTBj8/fmVY9yXl42wpImqt+Fer2uESB8oq3cgw6QOnzoUQcHtl+ISAUatGWYUbh0scyGubfNbHq/sJVwgROKOiU6tg1KlCmprcZdqqsGb2aAH8zxVdcdfFvRq8nYuGRVesji9nSxFRa8WgUoMkAIGqGTk2pwdnHB64vTIgVf2x98kCJ4M8A1LzE67HJ5BfVI4zFW54fTI0ahWSdWq0SdYF9Qm307RVIb+WCzun4dYhHTG6V3vodOoG9+FU1uiK5fH1DwYvsFbiQFHVmbxgB30TESkZg0q1LunJsCRpUVLuhs8no6zSA1kG1CoJGrUEWQioJQkbD53G+Z3TzvpG4/+E+8Oh0zhT4YbT44PJoIXWoIHHK+PXskp4ZYFKt6/JxwknpADAlf3a4ar+OY3ezoX/oisex5ezpYioNWJQqdahTRJ6tjdj9e5CuLw+qCQJOo0EWQBOtw+SSkLH9GS4vXJQ0zxVKgmX98nE6j2nUFzuQvsUPbRqCR6fjHKXFxkmHVKMWvzfL4Xolln/sWzlLvR/6v/Cei1mnYSbzu3Y6O2cyhpd8Ty+nC1FRK0Ng0oNbYw6JOnU8PhkSAC8PgFIgFajglqSYNCpQprmadRqkGHWQ6OS4HD7UOF2Q61SITPFgK4ZydCqVQ0+1q1vbMB3h8rCfh2TLuoKg6Hxf1pOZY2ueB9fzpYiotaEQaXaibJKlFV60L+DBVuPlcHnE/AJUbXasV4Ns1ELp0eGVxZBD4J1uL3QaVS4sEtbVLh9gYG0ZkPVYEevLNebMjpk9tc4aXOH/TruvbQb/md0z7PWxams0cPjS0QUOQwq1fxvLia9BioJ8EmAWpICZ1a8PhkeWcBW6Ql6mqd/QG2lxxdYcbmmulNGH/5gW7NCyvZHRiHVbAi6rmivQZSoeHyJiCKHfVSqJes0cHtl7D1lhwAAIaCSgEqPF8XlbhwurkCh1Yntx8vQJknb4DTPuqvWZqUYAusHCVF7Bdu6a/2U2irxwU8FYdd/76XdggopQO11jc5WF4WOx5eiiatjU6LhR7pqWSkGuDxVs33SkrQ4fqYSLlftPwA+r8Bpuxv5xeU4VFJeaxZFY1NRe2WZzzpl9MX/24+Xv8kPu/ZgLvfUxKms0cXjS9HClgKUiCRR9yNfC2Kz2WCxWGC1WpGSktKsxzpeWoHH/7Mb+UXlKLI54fTIDTZYM2hVSDVqMa5fFh4Z1xsqldTAVFQNKtzewJvSpb0ysfekHQeLy+HyVp3275Zpwug+7bDsxyN4c8OxsOveO3NMkwNnm1Lzj17duvhHr/l4fCmSzvZ3hi0FqCUJ5f2bZ1SqOdxeaNUSUgwaFJypH1IkAAKAkAUqPT58f/A0jp+pQG6bJHy56xR+PVOBbIsBtkoPnJ7qN6WMZOQXO7DvlB1/GdEFJ6sHUPqnjF73yjpsL6gIu+b/e3BE2CEF4FTWaOPxpUhhSwFKZAwq1ZJ1GsgyUGx31QopUvWXf5tPCAhZoNThwuESB46XVuDznSdhd3qx84QVXp+ARiXBYtSiTbIObZK0+PnXMhRYK9GxRuv9QU98iZKKppu9NebqfulwCw0WbjjS7E9RnMoaXTy+FAnxnvJOFE8MKtVyUo1on2LA+koP/GPT/H8OagYXrwxUeHyAJGH3CSt2FVhRaHNCAJAFoNOo4PL4cMrmRKHdBY1KgkGrwoLvjuDWIR3RLdOMrtNWIbyIAvyuXTI6ZbaBEIKfomKAayGREnDKOyUyBpVqKpWEgR1Tsfyn44GA0tjgHa8MlLu8WLr5GFSSBJ9ctW+yTgWvXLUmkNcnUDX7VILXJ3CopOr68uIfwx+PYtJJGN03GwA/RcUCBy6SUnDKOyUyTk+uoWd7MzLNeqiD+MAsAThT7kal24cKtxc+ueq8S6W7arVljVqCxyfgk2WoVBI6t01uVkgx61X40/ButbYZdeomm89xGmP4/AMXdxVYkZqkRZd0E1KTtNhVYMXCDUeQX2SPd4mUQDjlnRIZ43cNZoMW2alGFNtdcMsNzfmpoq2Odw6PDJ/wwCsLyG4fIAC3T4YQAl4hIIuqPyIatYxFP4QfUnQAplzUtd72pj5FteazAdG+HMOBi6Q0nPJOiYxBpYasFAOslR64fGc/8+D/UKNRq+ATMnyygMsnw+sTkKSqMy4qCTBq1bBWhn/dWANgVN/2EELUGkTn/xTVL8dS71NUa14ZORYBjAMXSYm4OjYlKgaVGjYcKsGvpRUQsoAKaLCPClA1RkWtAiCqPn1XDaCVq8MEoFNLEFXrGcLmCnfYLNCrXRJemTAICzccCfpTVGs+GxCrAMaBi6RUnPJOiYhBpZosC3y6vQCVHh8kCWjqpIpAVViRUH1GRRa/zWEWgMcnoJYAV+NXj85q07SLkZlaNZ05lE9RrfVsQCwDGAcukpJxyjslGv6lrXairBK7C6zwhBAuVBKgUUlQqQBJUqHSUzVOxSeaDjpnM7JHBmxuGZnV34fyKaq1ng2IZQDzD1zcVWCFSa8J+pIbERFFHmf9VLNWunG8NLQusZIEWJ1eGLUaZKYYoFVJjV4uCtaY3hlI0qmxendhrVk6/k9RvdqnIDctqdGzBjXPBjSkpZ4N+C2ANVz32WZAhcI/cDEtWYcDReWwOz3wyjLsTg8OFJVz4CIRUQwxqFQ7WFyOCndoMUOWqz5hlzs9cHm8qPQ2b/pvxzZG9MpKrXV2IFStdRpjrAOYf+Bi32wLyio8OFLiQFmFB/1yLC16MDIRUUvTsj5WR9HhEkejDd4aIwOAAOwuX7MGzQJAXpoR15zTAUDzLs+01mmM8bgcw4GLRETxx6BSzVbpCfu+zW2jdsvgDsgw//YG25yzA7IsoNeoMbxHOr7dW4QjJQ4ICKQadS16GmO8AhgHLhIRxReDSrVUfXwORbeMJEjSb1fgmnN2wN9jZNvxMzhWWoFKtw8alYR2KQZ0z9Tjst+1zJDixz4SRESJh0GlWn5x7Fui92xngt3phdsrwyvLzTo74O8xcux0BYrsTvh8AmaDBi6PD2WVbvxyyo5FG5u/2nK88XIMEVFiYVCpVmxzxvT5ru6fhdIKDzJTAK9PxpESR62zA13STTheWhHUm7G/x8jpche8clWX3LYmHSRJgkmvQanDDa9Pxulyd8SbvcVjdWFejiEiShwMKtVO2lwxey4VgB8Pn0bvHAtuPD8XaUk6mPQamA1a5KQacaikHPPWHQy6Tby/x4jZoMGR0xUwGbSBwaaSJMFk0OBMhQcd2iRFtNlba15PiIiIlIFBpVoTaxBGhcMt4+jpCnyy7QSMWk3gDf5QSXnIbeL9PUZSDFp4fTK0htr/rFq1Cg6XF2qVhAq3NyK9RhprZ7/zRBn2F9kxrl8WfpeVwssyBCA+Z96IqHVgUKlm0Kqj/hwSAJ1GgtcnoFEBHp+M9GQ9tBoVdhVYcaKsAgatOuQ28f4eIz5ZhkatgscnoNf8drvHJ0Otqmr1H4leI421s/f4BKyVHhz91Yq9J23onZWCbplmnmFJcDzzRkTNwYZv1fpmRXfMg0YFqCXA7RWQRdW4lFKHGz+fsMLjE+ieWTVA9MdDp9E+5ext4mvy9xixO71ok6RFudMTaPZW1ZCuarvd6Y1Is7eG2tmXOtzYfrwMxXYXUpOq1sfRqqsC2MINR5BfFPvByhR//jNvuwqsSE3Soku6CalJWv5cEFHQGFSqlVa6o/bYOjWgUUv+NQuhlgCjTgOtWgVrRdUb/JkKD9ok6VBW4ala5LABjbWJ9/cYaWvSQ6NSQa2ScLrcDbvTg9PlLqhVEjRqFdqaItNrpG47eyEE8ovKUen2Ii1Zh2S9BrIQ0GpU6J5pQqnDXW9JAGr96p55Mxu0UKskmA1a/lwQUdAYVKptOWKL2mN7fIDTIyCqF1lWqQCXT0ayToNMsx6Vbi8OFpfDpFcDEmB3VjWfE0LAWuHGkRIHjpx2oNBaCZ1a1eClG3+PkQu7tEVuWhI0agl2pxcatQq5aUkY0qUtJg7Ng16jxt5TNhwvrQj7DaJuO3u704szFe7AIF7/pSadWtXkmSBq3UJZSJKIqDEco1KtPIqLCYsa/9VIgCwkqFUS0pJ1UKlUMBmqphBnWwywGHUorXAjWa/BrgIrfj1TCaenuj2/EOiUkYw9BVWhqu6AxJo9RuwuD8qd3sBsokq3D1/vbnqcQLADHuu2s3f75MAgXv+lpswUA8zVg3pb6orN1DytdSVvIootBpUYkFAVUiQAPgFIQkAlBKyVLri9GiTpVKh0e5FfZEfntkbYKr34avcpVHp8UEsS9BoVXB4f3D6B/CIHZny6C31zLDgnt029AYkN9RjJL6pq9tbUTCIAQQ94rNvO3qRXQ6WS4HBVNa8z6tTompEc+BTdUldsjrXWNjOm5pk3s0Fb73b+XBBRMPgXIgZEA/8tqfCipMILCYAkVYWYknI3TlqdcHrkwGUVo04NryxBQIJBK0GCBJfXhzMON3aeaHzKst9vzeDcaJ+ih8srQwgvzAYNumUkY8cJK175Jh+yEHB7ZWSnGoOaEl2znX1+kR0SgLIKD/LaJqFbpglpyfqq1xqlBQNbm9Y4MyYeC0kSUeujiKDy6quv4tlnn8WpU6cwYMAAvPzyyxg8eHC8y4oJAaB6gg7cXh88GhXcPhmSJEGjkqCSJGjUElSSCkatCj4BuL0yyio86JdjQaHd1WS32RNlldh2/AzOONw4ctoBryxDo1LBoFFVjYep9GDr0TPVZ0FMyDAbAgMem5oSDdS+1PTLKRtW/XwSLq8MrVrV7CUBEkljPWmaCootQWtdyZuIYivug2mXLVuGBx98EDNmzMDWrVsxYMAAjBkzBkVFRfEuLeZkAbh9Mjzeqjb4apUEnyzgcHkDA1PV/p4lsgyPLM46IPGXkzbsP2VHWYUbBq0KbZJ0AAQOlThwqNhRFZQAmPQaFNtd2H68DKWOqhlQwQx49F9qGt27Pe4d1Q39ciwoq/DgSIkjEKZa6httLLT2mTH+M299s/lzQUThifsZlRdeeAF33nknJk+eDACYP38+Vq1ahQULFmDatGlxri62fALQqCRAkiBkAbdPwKhVwemVq/uiSPBVn37RVs+qaWpAoiwLbDlyBl5ZIC1ZB71GXT3Y1Qe1SgKEgK2y6n4mvSbQbO5gcTnaJLWBJEkhDXjkgoGhC2VmTEtd34g/F0TUHHENKm63Gz/99BOmT58e2KZSqXDZZZdh48aN9fZ3uVxwuX5bk8dmi96U4niRBaDXqFDh9sHnkyHpVNWDcAU01Zd9JAlol6KH2aBBucvb6IDEE2WVKLY7kWUxwFrpgU6jgtsro9Ljg06jghACDpcPeo2qapxM9bpApQ437E4vUozakAc8csHA0CTKzBj+XBBRuOJ66aekpAQ+nw/t2rWrtb1du3Y4depUvf3nzJkDi8US+MrNzY1VqTGjkoAknRpqFSAkwOXxQZKqAkq5s6oZXNtkPbpmmgAAJ63ORrvNOtxeuHwyerZPgVFXFUAqPT74ZBkQgNtXdXkpw6yHw+WDECIwvsTtkwMDHiPRzZYaVrcnTV2cGUNEiS7uY1RCMX36dFit1sDX8ePH411SxFWNRQF0GjXSknRVg2klCT4BCEjIbWPE+Z3aQKtW4UBReZMDEv1vggatCgNzU5FhNsDrE/DKAm6fDIO2qltt7+wUGHVVl30cLi9UkgS313fWx6fm88+MOWl1BpY98GNQJCKK86Wf9PR0qNVqFBYW1tpeWFiI9u3b19tfr9dDr9fHqryY06oAWQhUumUk6dTo0c6EtiY9hnRpCwHgcIkDJXYXrJUeOD0y+uVYMLpP49NXa04P7Z5pwvmd2sBW6cHW42Uoq3BDIwHtLUbktkmCSa9BfmE5jpZWwGzQwOsTZ318aj7OjCEialpcg4pOp8N5552HNWvW4JprrgEAyLKMNWvW4J577olpLUeeHodO01bF9Dn9VKhaVVmrVsHhrho/0j3ThGHdMmoFhVAbgjX0Jphc3T9l8xE3PAJon6KHr/qSjyVJh/MtBozrn4XftU/hgMcYqdmT5mBxOQptTug1agZFIiIAkqh7vjnGli1bhokTJ+L111/H4MGD8dJLL2H58uXYu3dvvbErddlsNlgsFlitVqSkpESknkiFFf/be92Dq1EBJp0Geo0KOq0EFapm1qQYdTDpNWhn0WNkz0z0ybJELCjUbCbm8laNeWiTpIVAVZM2/7ZumSa+McZRa+tMS0TUmFDev+M+Qu+mm25CcXExHnvsMZw6dQoDBw7El19+edaQEi2hnFlJNwI926egV7YFSXotPF4BnVaCUatFt0wTTDoNbC4Pth8rAyDQLsWA8zqmwVIdEio9Phi1akgAKjy+qL05NTY9FADfGBWEM2OIiOqL+xmV5ojGGRUiIiKKrlDev1vUrB8iIiJKLAwqREREpFgMKkRERKRYDCpERESkWAwqREREpFgMKkRERKRYDCpERESkWAwqREREpFgMKkRERKRYcW+h3xz+pro2my3OlRAREVGw/O/bwTTHb9FBxW63AwByc3PjXAkRERGFym63w2KxNLlPi17rR5ZlFBQUwGw2Q5Iiu5iezWZDbm4ujh8/znWEIozHNrp4fKOLxzd6eGyjS0nHVwgBu92O7OxsqFRNj0Jp0WdUVCoVOnToENXnSElJifs/aGvFYxtdPL7RxeMbPTy20aWU43u2Myl+HExLREREisWgQkRERIrFoNIIvV6PGTNmQK/Xx7uUVofHNrp4fKOLxzd6eGyjq6Ue3xY9mJaIiIhaN55RISIiIsViUCEiIiLFYlAhIiIixWJQISIiIsVK6KDy6quvolOnTjAYDLjggguwadOmJvf/4IMP0KtXLxgMBvTr1w+ff/55jCpteUI5tm+++SaGDx+ONm3aoE2bNrjsssvO+m+R6EL92fVbunQpJEnCNddcE90CW7BQj21ZWRmmTp2KrKws6PV69OjRg38bmhDq8X3ppZfQs2dPGI1G5Obm4oEHHoDT6YxRtS3H+vXrMX78eGRnZ0OSJHz88cdnvc+6detw7rnnQq/Xo1u3bnjnnXeiXmdYRIJaunSp0Ol0YsGCBWL37t3izjvvFKmpqaKwsLDB/Tds2CDUarV45plnxJ49e8T//u//Cq1WK3bu3BnjypUv1GN7yy23iFdffVVs27ZN/PLLL2LSpEnCYrGIX3/9NcaVtwyhHl+/w4cPi5ycHDF8+HBx9dVXx6bYFibUY+tyucSgQYPE2LFjxXfffScOHz4s1q1bJ7Zv3x7jyluGUI/v4sWLhV6vF4sXLxaHDx8WX331lcjKyhIPPPBAjCtXvs8//1w88sgjYsWKFQKAWLlyZZP7Hzp0SCQlJYkHH3xQ7NmzR7z88stCrVaLL7/8MjYFhyBhg8rgwYPF1KlTA9/7fD6RnZ0t5syZ0+D+N954oxg3blytbRdccIH4y1/+EtU6W6JQj21dXq9XmM1msWjRomiV2KKFc3y9Xq8YOnSoeOutt8TEiRMZVBoR6rGdN2+e6NKli3C73bEqsUUL9fhOnTpVXHrppbW2Pfjgg2LYsGFRrbOlCyao/P3vfxd9+vSpte2mm24SY8aMiWJl4UnISz9utxs//fQTLrvsssA2lUqFyy67DBs3bmzwPhs3bqy1PwCMGTOm0f0TVTjHtq6Kigp4PB6kpaVFq8wWK9zj+8QTTyAzMxN/+tOfYlFmixTOsf30008xZMgQTJ06Fe3atUPfvn0xe/Zs+Hy+WJXdYoRzfIcOHYqffvopcHno0KFD+PzzzzF27NiY1NyataT3tBa9KGG4SkpK4PP50K5du1rb27Vrh7179zZ4n1OnTjW4/6lTp6JWZ0sUzrGt6x//+Aeys7Pr/RJReMf3u+++w9tvv43t27fHoMKWK5xje+jQIXzzzTeYMGECPv/8c+Tn5+Ovf/0rPB4PZsyYEYuyW4xwju8tt9yCkpISXHTRRRBCwOv14q677sI///nPWJTcqjX2nmaz2VBZWQmj0RinyupLyDMqpFxPP/00li5dipUrV8JgMMS7nBbPbrfjtttuw5tvvon09PR4l9PqyLKMzMxMvPHGGzjvvPNw00034ZFHHsH8+fPjXVqrsG7dOsyePRuvvfYatm7dihUrVmDVqlV48skn410axVBCnlFJT0+HWq1GYWFhre2FhYVo3759g/dp3759SPsnqnCOrd9zzz2Hp59+Gv/3f/+H/v37R7PMFivU43vw4EEcOXIE48ePD2yTZRkAoNFosG/fPnTt2jW6RbcQ4fzsZmVlQavVQq1WB7b97ne/w6lTp+B2u6HT6aJac0sSzvF99NFHcdttt+GOO+4AAPTr1w8OhwN//vOf8cgjj0Cl4mftcDX2npaSkqKosylAgp5R0el0OO+887BmzZrANlmWsWbNGgwZMqTB+wwZMqTW/gDw9ddfN7p/ogrn2ALAM888gyeffBJffvklBg0aFItSW6RQj2+vXr2wc+dObN++PfD1+9//Hpdccgm2b9+O3NzcWJavaOH87A4bNgz5+fmB8AcA+/fvR1ZWFkNKHeEc34qKinphxB8KBZepa5YW9Z4W79G88bJ06VKh1+vFO++8I/bs2SP+/Oc/i9TUVHHq1CkhhBC33XabmDZtWmD/DRs2CI1GI5577jnxyy+/iBkzZnB6ciNCPbZPP/200Ol04sMPPxQnT54MfNnt9ni9BEUL9fjWxVk/jQv12B47dkyYzWZxzz33iH379onPPvtMZGZmiqeeeipeL0HRQj2+M2bMEGazWSxZskQcOnRIrF69WnTt2lXceOON8XoJimW328W2bdvEtm3bBADxwgsviG3btomjR48KIYSYNm2auO222wL7+6cnP/zww+KXX34Rr776KqcnK9HLL78sOnbsKHQ6nRg8eLD44YcfAreNHDlSTJw4sdb+y5cvFz169BA6nU706dNHrFq1KsYVtxyhHNu8vDwBoN7XjBkzYl94CxHqz25NDCpNC/XYfv/99+KCCy4Qer1edOnSRcyaNUt4vd4YV91yhHJ8PR6PmDlzpujataswGAwiNzdX/PWvfxVnzpyJfeEKt3bt2gb/jvqP58SJE8XIkSPr3WfgwIFCp9OJLl26iIULF8a87mBIQvD8GRERESlTQo5RISIiopaBQYWIiIgUi0GFiIiIFItBhYiIiBSLQYWIiIgUi0GFiIiIFItBhYiIiBSLQYWIWj1JkvDxxx/HuwyiFmP9+vUYP348srOzw/79Wb58OQYOHIikpCTk5eXh2WefDasWBhUiiqiNGzdCrVZj3LhxId2vU6dOeOmll6JTFBGFxOFwYMCAAXj11VfDuv8XX3yBCRMm4K677sKuXbvw2muv4cUXX8Qrr7wS8mMxqBBRRL399tu49957sX79ehQUFMS7HCIKw5VXXomnnnoK1157bYO3u1wuPPTQQ8jJyUFycjIuuOACrFu3LnD7v//9b1xzzTW466670KVLF4wbNw7Tp0/H3LlzQ15QkkGFiCKmvLwcy5Ytw913341x48bhnXfeqXX7f/7zH5x//vkwGAxIT08P/BG8+OKLcfToUTzwwAOQJAmSJAEAZs6ciYEDB9Z6jJdeegmdOnUKfL9582ZcfvnlSE9Ph8ViwciRI7F169ZovkyihHfPPfdg48aNWLp0KXbs2IEbbrgBV1xxBQ4cOACgKsgYDIZa9zEajfj1119x9OjRkJ6LQYWIImb58uXo1asXevbsiVtvvRULFiwIfHpatWoVrr32WowdOxbbtm3DmjVrMHjwYADAihUr0KFDBzzxxBM4efIkTp48GfRz2u12TJw4Ed999x1++OEHdO/eHWPHjoXdbo/KayRKdMeOHcPChQvxwQcfYPjw4ejatSseeughXHTRRVi4cCEAYMyYMVixYgXWrFkDWZaxf/9+PP/88wAQ0u83AGgi/gqIKGG9/fbbuPXWWwEAV1xxBaxWK7799ltcfPHFmDVrFv74xz/i8ccfD+w/YMAAAEBaWhrUajXMZjPat28f0nNeeumltb5/4403kJqaim+//RZXXXVVM18REdW1c+dO+Hw+9OjRo9Z2l8uFtm3bAgDuvPNOHDx4EFdddRU8Hg9SUlJw//33Y+bMmVCpQjtHwqBCRBGxb98+bNq0CStXrgQAaDQa3HTTTXj77bdx8cUXY/v27bjzzjsj/ryFhYX43//9X6xbtw5FRUXw+XyoqKjAsWPHIv5cRFR1iVetVuOnn36CWq2udZvJZAJQNdNu7ty5mD17Nk6dOoWMjAysWbMGANClS5eQno9BhYgi4u2334bX60V2dnZgmxACer0er7zyCoxGY8iPqVKp6g2883g8tb6fOHEiTp8+jf/3//4f8vLyoNfrMWTIELjd7vBeCBE16ZxzzoHP50NRURGGDx/e5L5qtRo5OTkAgCVLlmDIkCHIyMgI6fkYVIio2bxeL9599108//zzGD16dK3brrnmGixZsgT9+/fHmjVrMHny5AYfQ6fTwefz1dqWkZGBU6dOQQgRGGC7ffv2Wvts2LABr732GsaOHQsAOH78OEpKSiL0yogSU3l5OfLz8wPfHz58GNu3b0daWhp69OiBCRMm4Pbbb8fzzz+Pc845B8XFxVizZg369++PcePGoaSkBB9++CEuvvhiOJ3OwJiWb7/9NvRiBBFRM61cuVLodDpRVlZW77a///3vYtCgQWLt2rVCpVKJxx57TOzZs0fs2LFDPP3004H9Lr/8cvH73/9e/Prrr6K4uFgIIcSePXuEJEni6aefFvn5+eKVV14Rbdq0EXl5eYH7nXPOOeLyyy8Xe/bsET/88IMYPny4MBqN4sUXXwzsA0CsXLkyWi+fqNVZu3atAFDva+LEiUIIIdxut3jsscdEp06dhFarFVlZWeLaa68VO3bsEEIIUVxcLC688EKRnJwskpKSxKhRo8QPP/wQVi0MKkTUbFdddZUYO3Zsg7f9+OOPAoD4+eefxUcffSQGDhwodDqdSE9PF9ddd11gv40bN4r+/fsLvV4van6GmjdvnsjNzRXJycni9ttvF7NmzaoVVLZu3SoGDRokDAaD6N69u/jggw9EXl4egwpRKyEJEWLnFSIiIqIYYR8VIiIiUiwGFSIiIlIsBhUiIiJSLAYVIiIiUiwGFSIiIlIsBhUiIiJSLAYVIiIiUiwGFSIiIlIsBhUiIiJSLAYVIiIiUiwGFSIiIlIsBhUiIiJSrP8POVViujEH7T0AAAAASUVORK5CYII=", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "plt.scatter(y_test, y_pred, alpha=0.5)\n", + "plt.xlabel('Actual')\n", + "plt.ylabel('Predicted')\n", + "plt.title('Actual vs Predicted')\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "0.39277 — Dochody_z_majatku\n", + "0.09099 — Ludnosc_mezczyzni_w_wieku_produkcyjnym_mobilnym\n", + "0.06227 — Wynagrodzenie_w_relacji_do_sredniej\n", + "0.05967 — Ludnosc_w_wieku_produkcyjnym_niemobilnym\n", + "0.04757 — Wynagrodzenie_ogolem\n", + "0.02963 — Dochody_podatek_od_nieruchomosci\n", + "0.02897 — Dochody_podatek_rolny\n", + "0.02743 — Udzialy_w_podatkach_dochodowych_razem\n", + "0.02328 — Dochody_z_uslug\n", + "0.02201 — Wplywy_z_oplaty_skarbowej\n", + "0.02172 — Wplywy_z_oplaty_targowej\n", + "0.02024 — Dochody_z_najmu_i_dzierzawy\n", + "0.02010 — Udzialy_w_podatkach_dochodowych_od_osob_fizycznych\n", + "0.01977 — Wplywy_z_oplaty_eksploatacyjnej\n", + "0.01961 — Ludnosc_kobiety_w_wieku_produkcyjnym_niemobilnym\n", + "0.01413 — Ludnosc_mezczyzni_w_wieku_przedprodukcyjnym\n", + "0.01349 — Dochody_podatek_od_dzialalnosci_gospodarczej\n", + "0.01158 — Wojewodztwo_Lubelskie\n", + "0.00762 — Dochody_podatek_od_srodkow_transportowych\n", + "0.00673 — Dochody_dofinansowanie_inwestycyjne\n", + "0.00610 — Wplywy_z_innych_lokalnych_oplat\n", + "0.00588 — Dochody_podatek_lesny\n", + "0.00567 — Dochody_podatek_PCC\n", + "0.00555 — Udzialy_w_podatkach_dochodowych_od_osob_prywatnych\n", + "0.00449 — Dochody_podatek_od_spadkow\n", + "0.00406 — Dochody_razem\n", + "0.00401 — Dochody_dofinansowanie_razem\n", + "0.00381 — Ludnosc_mezczyzni_w_wieku_poprodukcyjnym\n", + "0.00297 — Powierzchnia\n", + "0.00270 — Wojewodztwo_Dolnoslaskie\n", + "0.00267 — Dochody_podatek_odrebne_ustawy\n", + "0.00177 — Wojewodztwo_Swietokrzyskie\n", + "0.00123 — Ludnosc_kobiety_w_wieku_przedprodukcyjnym\n", + "0.00115 — Ludnosc_mezczyzni_w_wieku_produkcyjnym_niemobilnym\n", + "0.00101 — Ludnosc_mezczyzni_w_wieku_produkcyjnym\n", + "0.00096 — Wojewodztwo_Podkarpackie\n", + "0.00092 — Wojewodztwo_Wielkopolskie\n", + "0.00091 — Ludnosc_w_wieku_przedprodukcyjnym\n", + "0.00089 — Wojewodztwo_Slaskie\n", + "0.00075 — Wojewodztwo_Opolskie\n", + "0.00072 — Wojewodztwo_Warminsko_Mazurskie\n", + "0.00061 — Wojewodztwo_Podlaskie\n", + "0.00051 — Wojewodztwo_Malopolskie\n", + "0.00030 — Ludnosc_w_wieku_produkcyjnym_mobilnym\n", + "0.00017 — Ludnosc_kobiety_w_wieku_produkcyjnym\n", + "0.00017 — Ludnosc_kobiety_w_wieku_poprodukcyjnym\n", + "0.00009 — Ludnosc_kobiety\n", + "0.00005 — Ludnosc_ogolem\n", + "0.00005 — Wojewodztwo_Lubuskie\n", + "0.00004 — Ludnosc_mezczyzni\n", + "0.00004 — Ludnosc_kobiety_w_wieku_produkcyjnym_mobilnym\n", + "0.00004 — Wojewodztwo_Kujawsko_Pomorskie\n", + "0.00004 — Wojewodztwo_Lodzkie\n", + "0.00003 — Ludnosc_w_wieku_poprodukcyjnym\n", + "0.00002 — Ludnosc_w_wieku_produkcyjnym\n", + "0.00002 — Wojewodztwo_Zachodniopomorskie\n", + "0.00001 — Wojewodztwo_Pomorskie\n", + "0.00001 — Wojewodztwo_Mazowieckie\n" + ] + } + ], + "source": [ + "feature_importance = dict(zip(feature_names, model.feature_importances_))\n", + "for feature, importance in sorted(feature_importance.items(), key=lambda x: x[1], reverse=True):\n", + " print(f\"{importance:.5f} \\u2014 {feature}\")" + ] } ], "metadata": {