fuzzy-rules-generator/distress.ipynb

3062 lines
192 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{
"cells": [
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Financial Distress</th>\n",
" <th>x1</th>\n",
" <th>x2</th>\n",
" <th>x3</th>\n",
" <th>x4</th>\n",
" <th>x5</th>\n",
" <th>x6</th>\n",
" <th>x7</th>\n",
" <th>x8</th>\n",
" <th>x9</th>\n",
" <th>...</th>\n",
" <th>x74</th>\n",
" <th>x75</th>\n",
" <th>x76</th>\n",
" <th>x77</th>\n",
" <th>x78</th>\n",
" <th>x79</th>\n",
" <th>x80</th>\n",
" <th>x81</th>\n",
" <th>x82</th>\n",
" <th>x83</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.010636</td>\n",
" <td>1.2810</td>\n",
" <td>0.022934</td>\n",
" <td>0.87454</td>\n",
" <td>1.21640</td>\n",
" <td>0.060940</td>\n",
" <td>0.188270</td>\n",
" <td>0.52510</td>\n",
" <td>0.018854</td>\n",
" <td>0.182790</td>\n",
" <td>...</td>\n",
" <td>85.437</td>\n",
" <td>27.07</td>\n",
" <td>26.102</td>\n",
" <td>16.000</td>\n",
" <td>16.0</td>\n",
" <td>0.2</td>\n",
" <td>22</td>\n",
" <td>0.060390</td>\n",
" <td>30</td>\n",
" <td>49</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-0.455970</td>\n",
" <td>1.2700</td>\n",
" <td>0.006454</td>\n",
" <td>0.82067</td>\n",
" <td>1.00490</td>\n",
" <td>-0.014080</td>\n",
" <td>0.181040</td>\n",
" <td>0.62288</td>\n",
" <td>0.006423</td>\n",
" <td>0.035991</td>\n",
" <td>...</td>\n",
" <td>107.090</td>\n",
" <td>31.31</td>\n",
" <td>30.194</td>\n",
" <td>17.000</td>\n",
" <td>16.0</td>\n",
" <td>0.4</td>\n",
" <td>22</td>\n",
" <td>0.010636</td>\n",
" <td>31</td>\n",
" <td>50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-0.325390</td>\n",
" <td>1.0529</td>\n",
" <td>-0.059379</td>\n",
" <td>0.92242</td>\n",
" <td>0.72926</td>\n",
" <td>0.020476</td>\n",
" <td>0.044865</td>\n",
" <td>0.43292</td>\n",
" <td>-0.081423</td>\n",
" <td>-0.765400</td>\n",
" <td>...</td>\n",
" <td>120.870</td>\n",
" <td>36.07</td>\n",
" <td>35.273</td>\n",
" <td>17.000</td>\n",
" <td>15.0</td>\n",
" <td>-0.2</td>\n",
" <td>22</td>\n",
" <td>-0.455970</td>\n",
" <td>32</td>\n",
" <td>51</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-0.566570</td>\n",
" <td>1.1131</td>\n",
" <td>-0.015229</td>\n",
" <td>0.85888</td>\n",
" <td>0.80974</td>\n",
" <td>0.076037</td>\n",
" <td>0.091033</td>\n",
" <td>0.67546</td>\n",
" <td>-0.018807</td>\n",
" <td>-0.107910</td>\n",
" <td>...</td>\n",
" <td>54.806</td>\n",
" <td>39.80</td>\n",
" <td>38.377</td>\n",
" <td>17.167</td>\n",
" <td>16.0</td>\n",
" <td>5.6</td>\n",
" <td>22</td>\n",
" <td>-0.325390</td>\n",
" <td>33</td>\n",
" <td>52</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1.357300</td>\n",
" <td>1.0623</td>\n",
" <td>0.107020</td>\n",
" <td>0.81460</td>\n",
" <td>0.83593</td>\n",
" <td>0.199960</td>\n",
" <td>0.047800</td>\n",
" <td>0.74200</td>\n",
" <td>0.128030</td>\n",
" <td>0.577250</td>\n",
" <td>...</td>\n",
" <td>85.437</td>\n",
" <td>27.07</td>\n",
" <td>26.102</td>\n",
" <td>16.000</td>\n",
" <td>16.0</td>\n",
" <td>0.2</td>\n",
" <td>29</td>\n",
" <td>1.251000</td>\n",
" <td>7</td>\n",
" <td>27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3667</th>\n",
" <td>0.438020</td>\n",
" <td>2.2605</td>\n",
" <td>0.202890</td>\n",
" <td>0.16037</td>\n",
" <td>0.18588</td>\n",
" <td>0.175970</td>\n",
" <td>0.198400</td>\n",
" <td>2.22360</td>\n",
" <td>1.091500</td>\n",
" <td>0.241640</td>\n",
" <td>...</td>\n",
" <td>100.000</td>\n",
" <td>100.00</td>\n",
" <td>100.000</td>\n",
" <td>17.125</td>\n",
" <td>14.5</td>\n",
" <td>-7.0</td>\n",
" <td>37</td>\n",
" <td>0.436380</td>\n",
" <td>4</td>\n",
" <td>41</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3668</th>\n",
" <td>0.482410</td>\n",
" <td>1.9615</td>\n",
" <td>0.216440</td>\n",
" <td>0.20095</td>\n",
" <td>0.21642</td>\n",
" <td>0.203590</td>\n",
" <td>0.189870</td>\n",
" <td>1.93820</td>\n",
" <td>1.000100</td>\n",
" <td>0.270870</td>\n",
" <td>...</td>\n",
" <td>91.500</td>\n",
" <td>130.50</td>\n",
" <td>132.400</td>\n",
" <td>20.000</td>\n",
" <td>14.5</td>\n",
" <td>-16.0</td>\n",
" <td>37</td>\n",
" <td>0.438020</td>\n",
" <td>5</td>\n",
" <td>42</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3669</th>\n",
" <td>0.500770</td>\n",
" <td>1.7099</td>\n",
" <td>0.207970</td>\n",
" <td>0.26136</td>\n",
" <td>0.21399</td>\n",
" <td>0.193670</td>\n",
" <td>0.183890</td>\n",
" <td>1.68980</td>\n",
" <td>0.971860</td>\n",
" <td>0.281560</td>\n",
" <td>...</td>\n",
" <td>87.100</td>\n",
" <td>175.90</td>\n",
" <td>178.100</td>\n",
" <td>20.000</td>\n",
" <td>14.5</td>\n",
" <td>-20.2</td>\n",
" <td>37</td>\n",
" <td>0.482410</td>\n",
" <td>6</td>\n",
" <td>43</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3670</th>\n",
" <td>0.611030</td>\n",
" <td>1.5590</td>\n",
" <td>0.185450</td>\n",
" <td>0.30728</td>\n",
" <td>0.19307</td>\n",
" <td>0.172140</td>\n",
" <td>0.170680</td>\n",
" <td>1.53890</td>\n",
" <td>0.960570</td>\n",
" <td>0.267720</td>\n",
" <td>...</td>\n",
" <td>92.900</td>\n",
" <td>203.20</td>\n",
" <td>204.500</td>\n",
" <td>22.000</td>\n",
" <td>22.0</td>\n",
" <td>6.4</td>\n",
" <td>37</td>\n",
" <td>0.500770</td>\n",
" <td>7</td>\n",
" <td>44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3671</th>\n",
" <td>0.518650</td>\n",
" <td>1.6148</td>\n",
" <td>0.176760</td>\n",
" <td>0.36369</td>\n",
" <td>0.18442</td>\n",
" <td>0.169550</td>\n",
" <td>0.197860</td>\n",
" <td>1.58420</td>\n",
" <td>0.958450</td>\n",
" <td>0.277780</td>\n",
" <td>...</td>\n",
" <td>91.700</td>\n",
" <td>227.50</td>\n",
" <td>214.500</td>\n",
" <td>21.000</td>\n",
" <td>20.5</td>\n",
" <td>8.6</td>\n",
" <td>37</td>\n",
" <td>0.611030</td>\n",
" <td>8</td>\n",
" <td>45</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>3672 rows × 84 columns</p>\n",
"</div>"
],
"text/plain": [
" Financial Distress x1 x2 x3 x4 x5 \\\n",
"0 0.010636 1.2810 0.022934 0.87454 1.21640 0.060940 \n",
"1 -0.455970 1.2700 0.006454 0.82067 1.00490 -0.014080 \n",
"2 -0.325390 1.0529 -0.059379 0.92242 0.72926 0.020476 \n",
"3 -0.566570 1.1131 -0.015229 0.85888 0.80974 0.076037 \n",
"4 1.357300 1.0623 0.107020 0.81460 0.83593 0.199960 \n",
"... ... ... ... ... ... ... \n",
"3667 0.438020 2.2605 0.202890 0.16037 0.18588 0.175970 \n",
"3668 0.482410 1.9615 0.216440 0.20095 0.21642 0.203590 \n",
"3669 0.500770 1.7099 0.207970 0.26136 0.21399 0.193670 \n",
"3670 0.611030 1.5590 0.185450 0.30728 0.19307 0.172140 \n",
"3671 0.518650 1.6148 0.176760 0.36369 0.18442 0.169550 \n",
"\n",
" x6 x7 x8 x9 ... x74 x75 x76 \\\n",
"0 0.188270 0.52510 0.018854 0.182790 ... 85.437 27.07 26.102 \n",
"1 0.181040 0.62288 0.006423 0.035991 ... 107.090 31.31 30.194 \n",
"2 0.044865 0.43292 -0.081423 -0.765400 ... 120.870 36.07 35.273 \n",
"3 0.091033 0.67546 -0.018807 -0.107910 ... 54.806 39.80 38.377 \n",
"4 0.047800 0.74200 0.128030 0.577250 ... 85.437 27.07 26.102 \n",
"... ... ... ... ... ... ... ... ... \n",
"3667 0.198400 2.22360 1.091500 0.241640 ... 100.000 100.00 100.000 \n",
"3668 0.189870 1.93820 1.000100 0.270870 ... 91.500 130.50 132.400 \n",
"3669 0.183890 1.68980 0.971860 0.281560 ... 87.100 175.90 178.100 \n",
"3670 0.170680 1.53890 0.960570 0.267720 ... 92.900 203.20 204.500 \n",
"3671 0.197860 1.58420 0.958450 0.277780 ... 91.700 227.50 214.500 \n",
"\n",
" x77 x78 x79 x80 x81 x82 x83 \n",
"0 16.000 16.0 0.2 22 0.060390 30 49 \n",
"1 17.000 16.0 0.4 22 0.010636 31 50 \n",
"2 17.000 15.0 -0.2 22 -0.455970 32 51 \n",
"3 17.167 16.0 5.6 22 -0.325390 33 52 \n",
"4 16.000 16.0 0.2 29 1.251000 7 27 \n",
"... ... ... ... ... ... ... ... \n",
"3667 17.125 14.5 -7.0 37 0.436380 4 41 \n",
"3668 20.000 14.5 -16.0 37 0.438020 5 42 \n",
"3669 20.000 14.5 -20.2 37 0.482410 6 43 \n",
"3670 22.000 22.0 6.4 37 0.500770 7 44 \n",
"3671 21.000 20.5 8.6 37 0.611030 8 45 \n",
"\n",
"[3672 rows x 84 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"<Axes: >"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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FSIiInIR1hEkQ8LCwlCtWjV3d4OIiIhciBNBMmTKlCmYOHEiCgoK3N0VIiIichHeGiZDWrVqhaNHj0IIgdjYWPj4+Gge37Vrl5t6RkREROXFxSJkSLdu3dzdBSIiInIxXhEkIiIiqqKYI0hERERURfHWMBlit9vx7rvv4ssvv8TJkyed3zf8l4sXL7qpZ0RERFRevCJIhrz66qt455130Lt3b2RnZ2PMmDHo0aMHzGYzJk+e7O7uERERUTkwR5AMqV+/PmbPno1//OMfCAoKQmpqqrNt+/btWLhwobu7SERERGXEK4JkSHp6Olq0aAEACAwMRHZ2NgDggQcewOrVq93ZNSIiIionTgTJkFq1aiEtLQ3ApauD69evBwD8/PPPsFqt7uwaERERlRMngmRI9+7dsXHjRgDA008/jVdeeQUNGzbEY489hkGDBrm5d0RERFQezBGkcvnxxx/x448/omHDhujatau7u0NERETlwIkgERERURXFOoJk2OHDh7Fp0yacO3cODodD89jEiRPd1CsiIiIqL14RJEM++eQTDB8+HNWrV0dUVBRMJpPzMZPJhF27drmxd0RERFQenAiSIXXr1sWIESMwbtw4d3eFiIiIXIQTQTIkODgYqampqFevnru7QkRERC7C8jFkSM+ePZ21A4mIiOjGwMUiZEiDBg3wyiuvYPv27WjRogV8fHw0j48aNcpNPSMiIqLy4q1hMiQuLu6yj5lMJhw7duw69oaIiIhcgRNBIiIioiqKOYJEREREVRRzBOmyxowZgylTpiAgIABjxoy54r7vvPPOdeoVERERuQongnRZv/76K2w2m/P/L+fvxaWJiIjIczBHkK7o2LFjiIuL42SPiIjoBsQcQbqihg0bIiMjw7ndu3dvnD171o09IiIiIlfhRJCuSH/BeM2aNcjPz3dTb4iIiMiVOBEkIiIiqqI4EaQrMplMUn4g8wWJiIhuDFw1TFckhMCAAQNgtVoBAEVFRRg2bBgCAgI0+y1fvtwd3SMiIqIK4ESQrujxxx/XbPfr189NPSEiIiJXY/kYIiIioiqKOYJEREREVRQngkRERERVFCeCRERERFUUJ4JEREREVRQngkRERERVFCeCRERERFUUJ4JEREREVRQngkRERERV1P8DB206+rMJan4AAAAASUVORK5CYII=",
"text/plain": [
"<Figure size 640x480 with 2 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import seaborn as sns\n",
"\n",
"random_state = 9\n",
"\n",
"df = pd.read_csv(\"data-distress/FinancialDistress.csv\").drop([\"Company\", \"Time\"], axis=1)\n",
"corr = df.corr()\n",
"display(df)\n",
"sns.heatmap(corr)"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(68,)"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"columns = np.full((corr.shape[0],), True, dtype=bool)\n",
"for i in range(corr.shape[0]):\n",
" for j in range(i + 1, corr.shape[0]):\n",
" if corr.iloc[i, j] >= 0.9 or corr.iloc[i, j] <= -0.9: # type: ignore\n",
" if columns[j]:\n",
" columns[j] = False\n",
"\n",
"selected_columns = df.columns[columns]\n",
"selected_columns.shape"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Financial Distress</th>\n",
" <th>x1</th>\n",
" <th>x2</th>\n",
" <th>x3</th>\n",
" <th>x4</th>\n",
" <th>x5</th>\n",
" <th>x6</th>\n",
" <th>x8</th>\n",
" <th>x9</th>\n",
" <th>x10</th>\n",
" <th>...</th>\n",
" <th>x69</th>\n",
" <th>x70</th>\n",
" <th>x71</th>\n",
" <th>x72</th>\n",
" <th>x73</th>\n",
" <th>x74</th>\n",
" <th>x78</th>\n",
" <th>x80</th>\n",
" <th>x82</th>\n",
" <th>x83</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.010636</td>\n",
" <td>1.2810</td>\n",
" <td>0.022934</td>\n",
" <td>0.87454</td>\n",
" <td>1.21640</td>\n",
" <td>0.060940</td>\n",
" <td>0.188270</td>\n",
" <td>0.018854</td>\n",
" <td>0.182790</td>\n",
" <td>0.006449</td>\n",
" <td>...</td>\n",
" <td>364.9500</td>\n",
" <td>15.8</td>\n",
" <td>61.476</td>\n",
" <td>4.0</td>\n",
" <td>36.0</td>\n",
" <td>85.437</td>\n",
" <td>16.0</td>\n",
" <td>22</td>\n",
" <td>30</td>\n",
" <td>49</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>-0.455970</td>\n",
" <td>1.2700</td>\n",
" <td>0.006454</td>\n",
" <td>0.82067</td>\n",
" <td>1.00490</td>\n",
" <td>-0.014080</td>\n",
" <td>0.181040</td>\n",
" <td>0.006423</td>\n",
" <td>0.035991</td>\n",
" <td>0.001795</td>\n",
" <td>...</td>\n",
" <td>0.1896</td>\n",
" <td>15.6</td>\n",
" <td>24.579</td>\n",
" <td>0.0</td>\n",
" <td>36.0</td>\n",
" <td>107.090</td>\n",
" <td>16.0</td>\n",
" <td>22</td>\n",
" <td>31</td>\n",
" <td>50</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>-0.325390</td>\n",
" <td>1.0529</td>\n",
" <td>-0.059379</td>\n",
" <td>0.92242</td>\n",
" <td>0.72926</td>\n",
" <td>0.020476</td>\n",
" <td>0.044865</td>\n",
" <td>-0.081423</td>\n",
" <td>-0.765400</td>\n",
" <td>-0.054324</td>\n",
" <td>...</td>\n",
" <td>11.9460</td>\n",
" <td>15.2</td>\n",
" <td>20.700</td>\n",
" <td>0.0</td>\n",
" <td>35.0</td>\n",
" <td>120.870</td>\n",
" <td>15.0</td>\n",
" <td>22</td>\n",
" <td>32</td>\n",
" <td>51</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>-0.566570</td>\n",
" <td>1.1131</td>\n",
" <td>-0.015229</td>\n",
" <td>0.85888</td>\n",
" <td>0.80974</td>\n",
" <td>0.076037</td>\n",
" <td>0.091033</td>\n",
" <td>-0.018807</td>\n",
" <td>-0.107910</td>\n",
" <td>-0.065316</td>\n",
" <td>...</td>\n",
" <td>-18.7480</td>\n",
" <td>10.4</td>\n",
" <td>47.429</td>\n",
" <td>4.0</td>\n",
" <td>33.0</td>\n",
" <td>54.806</td>\n",
" <td>16.0</td>\n",
" <td>22</td>\n",
" <td>33</td>\n",
" <td>52</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>1.357300</td>\n",
" <td>1.0623</td>\n",
" <td>0.107020</td>\n",
" <td>0.81460</td>\n",
" <td>0.83593</td>\n",
" <td>0.199960</td>\n",
" <td>0.047800</td>\n",
" <td>0.128030</td>\n",
" <td>0.577250</td>\n",
" <td>0.094075</td>\n",
" <td>...</td>\n",
" <td>364.9500</td>\n",
" <td>15.8</td>\n",
" <td>61.476</td>\n",
" <td>4.0</td>\n",
" <td>36.0</td>\n",
" <td>85.437</td>\n",
" <td>16.0</td>\n",
" <td>29</td>\n",
" <td>7</td>\n",
" <td>27</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3667</th>\n",
" <td>0.438020</td>\n",
" <td>2.2605</td>\n",
" <td>0.202890</td>\n",
" <td>0.16037</td>\n",
" <td>0.18588</td>\n",
" <td>0.175970</td>\n",
" <td>0.198400</td>\n",
" <td>1.091500</td>\n",
" <td>0.241640</td>\n",
" <td>0.226860</td>\n",
" <td>...</td>\n",
" <td>14.5290</td>\n",
" <td>21.5</td>\n",
" <td>33.768</td>\n",
" <td>2.0</td>\n",
" <td>22.0</td>\n",
" <td>100.000</td>\n",
" <td>14.5</td>\n",
" <td>37</td>\n",
" <td>4</td>\n",
" <td>41</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3668</th>\n",
" <td>0.482410</td>\n",
" <td>1.9615</td>\n",
" <td>0.216440</td>\n",
" <td>0.20095</td>\n",
" <td>0.21642</td>\n",
" <td>0.203590</td>\n",
" <td>0.189870</td>\n",
" <td>1.000100</td>\n",
" <td>0.270870</td>\n",
" <td>0.213610</td>\n",
" <td>...</td>\n",
" <td>3.8523</td>\n",
" <td>30.5</td>\n",
" <td>-10.665</td>\n",
" <td>0.0</td>\n",
" <td>28.0</td>\n",
" <td>91.500</td>\n",
" <td>14.5</td>\n",
" <td>37</td>\n",
" <td>5</td>\n",
" <td>42</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3669</th>\n",
" <td>0.500770</td>\n",
" <td>1.7099</td>\n",
" <td>0.207970</td>\n",
" <td>0.26136</td>\n",
" <td>0.21399</td>\n",
" <td>0.193670</td>\n",
" <td>0.183890</td>\n",
" <td>0.971860</td>\n",
" <td>0.281560</td>\n",
" <td>0.210970</td>\n",
" <td>...</td>\n",
" <td>-25.8410</td>\n",
" <td>34.7</td>\n",
" <td>36.030</td>\n",
" <td>2.0</td>\n",
" <td>32.0</td>\n",
" <td>87.100</td>\n",
" <td>14.5</td>\n",
" <td>37</td>\n",
" <td>6</td>\n",
" <td>43</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3670</th>\n",
" <td>0.611030</td>\n",
" <td>1.5590</td>\n",
" <td>0.185450</td>\n",
" <td>0.30728</td>\n",
" <td>0.19307</td>\n",
" <td>0.172140</td>\n",
" <td>0.170680</td>\n",
" <td>0.960570</td>\n",
" <td>0.267720</td>\n",
" <td>0.203190</td>\n",
" <td>...</td>\n",
" <td>-58.1220</td>\n",
" <td>15.6</td>\n",
" <td>22.571</td>\n",
" <td>2.0</td>\n",
" <td>30.0</td>\n",
" <td>92.900</td>\n",
" <td>22.0</td>\n",
" <td>37</td>\n",
" <td>7</td>\n",
" <td>44</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3671</th>\n",
" <td>0.518650</td>\n",
" <td>1.6148</td>\n",
" <td>0.176760</td>\n",
" <td>0.36369</td>\n",
" <td>0.18442</td>\n",
" <td>0.169550</td>\n",
" <td>0.197860</td>\n",
" <td>0.958450</td>\n",
" <td>0.277780</td>\n",
" <td>0.213850</td>\n",
" <td>...</td>\n",
" <td>-32.2090</td>\n",
" <td>11.9</td>\n",
" <td>13.871</td>\n",
" <td>1.0</td>\n",
" <td>29.0</td>\n",
" <td>91.700</td>\n",
" <td>20.5</td>\n",
" <td>37</td>\n",
" <td>8</td>\n",
" <td>45</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>3672 rows × 68 columns</p>\n",
"</div>"
],
"text/plain": [
" Financial Distress x1 x2 x3 x4 x5 \\\n",
"0 0.010636 1.2810 0.022934 0.87454 1.21640 0.060940 \n",
"1 -0.455970 1.2700 0.006454 0.82067 1.00490 -0.014080 \n",
"2 -0.325390 1.0529 -0.059379 0.92242 0.72926 0.020476 \n",
"3 -0.566570 1.1131 -0.015229 0.85888 0.80974 0.076037 \n",
"4 1.357300 1.0623 0.107020 0.81460 0.83593 0.199960 \n",
"... ... ... ... ... ... ... \n",
"3667 0.438020 2.2605 0.202890 0.16037 0.18588 0.175970 \n",
"3668 0.482410 1.9615 0.216440 0.20095 0.21642 0.203590 \n",
"3669 0.500770 1.7099 0.207970 0.26136 0.21399 0.193670 \n",
"3670 0.611030 1.5590 0.185450 0.30728 0.19307 0.172140 \n",
"3671 0.518650 1.6148 0.176760 0.36369 0.18442 0.169550 \n",
"\n",
" x6 x8 x9 x10 ... x69 x70 x71 \\\n",
"0 0.188270 0.018854 0.182790 0.006449 ... 364.9500 15.8 61.476 \n",
"1 0.181040 0.006423 0.035991 0.001795 ... 0.1896 15.6 24.579 \n",
"2 0.044865 -0.081423 -0.765400 -0.054324 ... 11.9460 15.2 20.700 \n",
"3 0.091033 -0.018807 -0.107910 -0.065316 ... -18.7480 10.4 47.429 \n",
"4 0.047800 0.128030 0.577250 0.094075 ... 364.9500 15.8 61.476 \n",
"... ... ... ... ... ... ... ... ... \n",
"3667 0.198400 1.091500 0.241640 0.226860 ... 14.5290 21.5 33.768 \n",
"3668 0.189870 1.000100 0.270870 0.213610 ... 3.8523 30.5 -10.665 \n",
"3669 0.183890 0.971860 0.281560 0.210970 ... -25.8410 34.7 36.030 \n",
"3670 0.170680 0.960570 0.267720 0.203190 ... -58.1220 15.6 22.571 \n",
"3671 0.197860 0.958450 0.277780 0.213850 ... -32.2090 11.9 13.871 \n",
"\n",
" x72 x73 x74 x78 x80 x82 x83 \n",
"0 4.0 36.0 85.437 16.0 22 30 49 \n",
"1 0.0 36.0 107.090 16.0 22 31 50 \n",
"2 0.0 35.0 120.870 15.0 22 32 51 \n",
"3 4.0 33.0 54.806 16.0 22 33 52 \n",
"4 4.0 36.0 85.437 16.0 29 7 27 \n",
"... ... ... ... ... ... ... ... \n",
"3667 2.0 22.0 100.000 14.5 37 4 41 \n",
"3668 0.0 28.0 91.500 14.5 37 5 42 \n",
"3669 2.0 32.0 87.100 14.5 37 6 43 \n",
"3670 2.0 30.0 92.900 22.0 37 7 44 \n",
"3671 1.0 29.0 91.700 20.5 37 8 45 \n",
"\n",
"[3672 rows x 68 columns]"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df = df[selected_columns]\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['x1', 'x2', 'x3', 'x4', 'x5', 'x6', 'x8', 'x9', 'x10', 'x11', 'x12',\n",
" 'x14', 'x15', 'x16', 'x17', 'x18', 'x19', 'x20', 'x21', 'x22', 'x23',\n",
" 'x24', 'x25', 'x26', 'x27', 'x28', 'x29', 'x30', 'x31', 'x32', 'x35',\n",
" 'x36', 'x37', 'x39', 'x40', 'x41', 'x42', 'x43', 'x44', 'x45', 'x46',\n",
" 'x47', 'x51', 'x54', 'x55', 'x56', 'x57', 'x58', 'x59', 'x60', 'x61',\n",
" 'x63', 'x64', 'x65', 'x66', 'x67', 'x68', 'x69', 'x70', 'x71', 'x72',\n",
" 'x73', 'x74', 'x78', 'x80', 'x82', 'x83'],\n",
" dtype='object')"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import statsmodels.api as sm\n",
"\n",
"def backwardElimination(x, Y, sl, columns):\n",
" numVars = len(x[0])\n",
" for i in range(0, numVars):\n",
" regressor_OLS = sm.OLS(Y, x).fit()\n",
" maxVar = max(regressor_OLS.pvalues).astype(float)\n",
" if maxVar > sl:\n",
" for j in range(0, numVars - i):\n",
" if regressor_OLS.pvalues[j].astype(float) == maxVar:\n",
" x = np.delete(x, j, 1)\n",
" columns = np.delete(columns, j)\n",
"\n",
" regressor_OLS.summary()\n",
" return x, columns\n",
"\n",
"selected_columns = selected_columns.drop([\"Financial Distress\"], errors='ignore')\n",
"selected_columns"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>x3</th>\n",
" <th>x4</th>\n",
" <th>x5</th>\n",
" <th>x10</th>\n",
" <th>x14</th>\n",
" <th>x18</th>\n",
" <th>x23</th>\n",
" <th>x24</th>\n",
" <th>x25</th>\n",
" <th>x29</th>\n",
" <th>x37</th>\n",
" <th>x41</th>\n",
" <th>x46</th>\n",
" <th>x54</th>\n",
" <th>x63</th>\n",
" <th>x70</th>\n",
" <th>x73</th>\n",
" <th>x80</th>\n",
" <th>Distress</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.87454</td>\n",
" <td>1.21640</td>\n",
" <td>0.060940</td>\n",
" <td>0.006449</td>\n",
" <td>6.97060</td>\n",
" <td>0.018265</td>\n",
" <td>0.148720</td>\n",
" <td>0.66995</td>\n",
" <td>214.760</td>\n",
" <td>0.204590</td>\n",
" <td>1.630700</td>\n",
" <td>9.69510</td>\n",
" <td>0.026224</td>\n",
" <td>209.87</td>\n",
" <td>3.27020</td>\n",
" <td>15.8</td>\n",
" <td>36.0</td>\n",
" <td>22.0</td>\n",
" <td>0.010636</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.82067</td>\n",
" <td>1.00490</td>\n",
" <td>-0.014080</td>\n",
" <td>0.001795</td>\n",
" <td>4.57640</td>\n",
" <td>0.027558</td>\n",
" <td>0.056026</td>\n",
" <td>0.67048</td>\n",
" <td>38.242</td>\n",
" <td>0.150190</td>\n",
" <td>0.837540</td>\n",
" <td>5.60350</td>\n",
" <td>0.007864</td>\n",
" <td>250.14</td>\n",
" <td>14.32100</td>\n",
" <td>15.6</td>\n",
" <td>36.0</td>\n",
" <td>22.0</td>\n",
" <td>-0.455970</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.92242</td>\n",
" <td>0.72926</td>\n",
" <td>0.020476</td>\n",
" <td>-0.054324</td>\n",
" <td>11.89000</td>\n",
" <td>0.012595</td>\n",
" <td>0.065220</td>\n",
" <td>0.84827</td>\n",
" <td>-498.390</td>\n",
" <td>0.074149</td>\n",
" <td>0.955790</td>\n",
" <td>9.40030</td>\n",
" <td>-0.064373</td>\n",
" <td>280.55</td>\n",
" <td>1.15380</td>\n",
" <td>15.2</td>\n",
" <td>35.0</td>\n",
" <td>22.0</td>\n",
" <td>-0.325390</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.85888</td>\n",
" <td>0.80974</td>\n",
" <td>0.076037</td>\n",
" <td>-0.065316</td>\n",
" <td>6.08620</td>\n",
" <td>0.011601</td>\n",
" <td>0.125160</td>\n",
" <td>0.80478</td>\n",
" <td>-75.867</td>\n",
" <td>0.054098</td>\n",
" <td>0.383350</td>\n",
" <td>5.73790</td>\n",
" <td>-0.017731</td>\n",
" <td>413.74</td>\n",
" <td>2.04080</td>\n",
" <td>10.4</td>\n",
" <td>33.0</td>\n",
" <td>22.0</td>\n",
" <td>-0.566570</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.81460</td>\n",
" <td>0.83593</td>\n",
" <td>0.199960</td>\n",
" <td>0.094075</td>\n",
" <td>4.39380</td>\n",
" <td>0.006814</td>\n",
" <td>0.266020</td>\n",
" <td>0.76770</td>\n",
" <td>1423.100</td>\n",
" <td>0.046907</td>\n",
" <td>0.253010</td>\n",
" <td>4.50880</td>\n",
" <td>0.131380</td>\n",
" <td>315.34</td>\n",
" <td>3.27020</td>\n",
" <td>15.8</td>\n",
" <td>36.0</td>\n",
" <td>29.0</td>\n",
" <td>1.357300</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3667</th>\n",
" <td>0.16037</td>\n",
" <td>0.18588</td>\n",
" <td>0.175970</td>\n",
" <td>0.226860</td>\n",
" <td>0.19101</td>\n",
" <td>0.014077</td>\n",
" <td>0.994340</td>\n",
" <td>0.15740</td>\n",
" <td>390.260</td>\n",
" <td>0.002976</td>\n",
" <td>0.003544</td>\n",
" <td>0.22138</td>\n",
" <td>1.265100</td>\n",
" <td>16961.00</td>\n",
" <td>-0.53449</td>\n",
" <td>21.5</td>\n",
" <td>22.0</td>\n",
" <td>37.0</td>\n",
" <td>0.438020</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3668</th>\n",
" <td>0.20095</td>\n",
" <td>0.21642</td>\n",
" <td>0.203590</td>\n",
" <td>0.213610</td>\n",
" <td>0.25149</td>\n",
" <td>0.018249</td>\n",
" <td>0.992440</td>\n",
" <td>0.19747</td>\n",
" <td>443.840</td>\n",
" <td>0.003484</td>\n",
" <td>0.004359</td>\n",
" <td>0.27085</td>\n",
" <td>1.077100</td>\n",
" <td>20689.00</td>\n",
" <td>-25.73600</td>\n",
" <td>30.5</td>\n",
" <td>28.0</td>\n",
" <td>37.0</td>\n",
" <td>0.482410</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3669</th>\n",
" <td>0.26136</td>\n",
" <td>0.21399</td>\n",
" <td>0.193670</td>\n",
" <td>0.210970</td>\n",
" <td>0.35384</td>\n",
" <td>0.007451</td>\n",
" <td>0.982420</td>\n",
" <td>0.25902</td>\n",
" <td>475.560</td>\n",
" <td>0.002343</td>\n",
" <td>0.003172</td>\n",
" <td>0.28971</td>\n",
" <td>0.795720</td>\n",
" <td>34012.00</td>\n",
" <td>-3.06590</td>\n",
" <td>34.7</td>\n",
" <td>32.0</td>\n",
" <td>37.0</td>\n",
" <td>0.500770</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3670</th>\n",
" <td>0.30728</td>\n",
" <td>0.19307</td>\n",
" <td>0.172140</td>\n",
" <td>0.203190</td>\n",
" <td>0.44358</td>\n",
" <td>0.021239</td>\n",
" <td>0.985230</td>\n",
" <td>0.30533</td>\n",
" <td>457.060</td>\n",
" <td>0.001942</td>\n",
" <td>0.002803</td>\n",
" <td>0.27871</td>\n",
" <td>0.603540</td>\n",
" <td>35901.00</td>\n",
" <td>7.15620</td>\n",
" <td>15.6</td>\n",
" <td>30.0</td>\n",
" <td>37.0</td>\n",
" <td>0.611030</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3671</th>\n",
" <td>0.36369</td>\n",
" <td>0.18442</td>\n",
" <td>0.169550</td>\n",
" <td>0.213850</td>\n",
" <td>0.57156</td>\n",
" <td>0.013783</td>\n",
" <td>0.994000</td>\n",
" <td>0.32184</td>\n",
" <td>505.040</td>\n",
" <td>0.041852</td>\n",
" <td>0.065773</td>\n",
" <td>0.28982</td>\n",
" <td>0.486010</td>\n",
" <td>28173.00</td>\n",
" <td>12.14500</td>\n",
" <td>11.9</td>\n",
" <td>29.0</td>\n",
" <td>37.0</td>\n",
" <td>0.518650</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>3672 rows × 19 columns</p>\n",
"</div>"
],
"text/plain": [
" x3 x4 x5 x10 x14 x18 x23 \\\n",
"0 0.87454 1.21640 0.060940 0.006449 6.97060 0.018265 0.148720 \n",
"1 0.82067 1.00490 -0.014080 0.001795 4.57640 0.027558 0.056026 \n",
"2 0.92242 0.72926 0.020476 -0.054324 11.89000 0.012595 0.065220 \n",
"3 0.85888 0.80974 0.076037 -0.065316 6.08620 0.011601 0.125160 \n",
"4 0.81460 0.83593 0.199960 0.094075 4.39380 0.006814 0.266020 \n",
"... ... ... ... ... ... ... ... \n",
"3667 0.16037 0.18588 0.175970 0.226860 0.19101 0.014077 0.994340 \n",
"3668 0.20095 0.21642 0.203590 0.213610 0.25149 0.018249 0.992440 \n",
"3669 0.26136 0.21399 0.193670 0.210970 0.35384 0.007451 0.982420 \n",
"3670 0.30728 0.19307 0.172140 0.203190 0.44358 0.021239 0.985230 \n",
"3671 0.36369 0.18442 0.169550 0.213850 0.57156 0.013783 0.994000 \n",
"\n",
" x24 x25 x29 x37 x41 x46 x54 \\\n",
"0 0.66995 214.760 0.204590 1.630700 9.69510 0.026224 209.87 \n",
"1 0.67048 38.242 0.150190 0.837540 5.60350 0.007864 250.14 \n",
"2 0.84827 -498.390 0.074149 0.955790 9.40030 -0.064373 280.55 \n",
"3 0.80478 -75.867 0.054098 0.383350 5.73790 -0.017731 413.74 \n",
"4 0.76770 1423.100 0.046907 0.253010 4.50880 0.131380 315.34 \n",
"... ... ... ... ... ... ... ... \n",
"3667 0.15740 390.260 0.002976 0.003544 0.22138 1.265100 16961.00 \n",
"3668 0.19747 443.840 0.003484 0.004359 0.27085 1.077100 20689.00 \n",
"3669 0.25902 475.560 0.002343 0.003172 0.28971 0.795720 34012.00 \n",
"3670 0.30533 457.060 0.001942 0.002803 0.27871 0.603540 35901.00 \n",
"3671 0.32184 505.040 0.041852 0.065773 0.28982 0.486010 28173.00 \n",
"\n",
" x63 x70 x73 x80 Distress \n",
"0 3.27020 15.8 36.0 22.0 0.010636 \n",
"1 14.32100 15.6 36.0 22.0 -0.455970 \n",
"2 1.15380 15.2 35.0 22.0 -0.325390 \n",
"3 2.04080 10.4 33.0 22.0 -0.566570 \n",
"4 3.27020 15.8 36.0 29.0 1.357300 \n",
"... ... ... ... ... ... \n",
"3667 -0.53449 21.5 22.0 37.0 0.438020 \n",
"3668 -25.73600 30.5 28.0 37.0 0.482410 \n",
"3669 -3.06590 34.7 32.0 37.0 0.500770 \n",
"3670 7.15620 15.6 30.0 37.0 0.611030 \n",
"3671 12.14500 11.9 29.0 37.0 0.518650 \n",
"\n",
"[3672 rows x 19 columns]"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"SL = 0.05\n",
"new_data, new_columns = backwardElimination(\n",
" df.iloc[:, 1:].values, df.iloc[:, 0].values, SL, selected_columns\n",
")\n",
"data = pd.DataFrame(data=new_data, columns=new_columns)\n",
"data[\"Distress\"] = df[\"Financial Distress\"]\n",
"data"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>x3</th>\n",
" <th>x4</th>\n",
" <th>x5</th>\n",
" <th>x10</th>\n",
" <th>x14</th>\n",
" <th>x18</th>\n",
" <th>x23</th>\n",
" <th>x24</th>\n",
" <th>x25</th>\n",
" <th>x29</th>\n",
" <th>x37</th>\n",
" <th>x41</th>\n",
" <th>x46</th>\n",
" <th>x54</th>\n",
" <th>x63</th>\n",
" <th>x70</th>\n",
" <th>x73</th>\n",
" <th>x80</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1156</th>\n",
" <td>0.71056</td>\n",
" <td>0.93446</td>\n",
" <td>0.14445</td>\n",
" <td>0.14572</td>\n",
" <td>2.45500</td>\n",
" <td>0.045089</td>\n",
" <td>0.19754</td>\n",
" <td>0.66553</td>\n",
" <td>625.41</td>\n",
" <td>0.045031</td>\n",
" <td>0.155580</td>\n",
" <td>3.22850</td>\n",
" <td>0.11500</td>\n",
" <td>874.69</td>\n",
" <td>-3.0266</td>\n",
" <td>25.4</td>\n",
" <td>28.0</td>\n",
" <td>9.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1993</th>\n",
" <td>0.21104</td>\n",
" <td>0.59523</td>\n",
" <td>0.30998</td>\n",
" <td>0.48288</td>\n",
" <td>0.26750</td>\n",
" <td>0.001754</td>\n",
" <td>0.56306</td>\n",
" <td>0.19858</td>\n",
" <td>1600.20</td>\n",
" <td>0.012465</td>\n",
" <td>0.015800</td>\n",
" <td>0.75445</td>\n",
" <td>2.10980</td>\n",
" <td>47173.00</td>\n",
" <td>-3.0659</td>\n",
" <td>34.7</td>\n",
" <td>32.0</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1924</th>\n",
" <td>0.46072</td>\n",
" <td>0.90327</td>\n",
" <td>0.28563</td>\n",
" <td>0.45008</td>\n",
" <td>0.85431</td>\n",
" <td>0.024656</td>\n",
" <td>0.43336</td>\n",
" <td>0.45475</td>\n",
" <td>4659.80</td>\n",
" <td>0.005962</td>\n",
" <td>0.011055</td>\n",
" <td>1.67490</td>\n",
" <td>0.81567</td>\n",
" <td>12851.00</td>\n",
" <td>7.1562</td>\n",
" <td>15.6</td>\n",
" <td>30.0</td>\n",
" <td>25.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" x3 x4 x5 x10 x14 x18 x23 x24 \\\n",
"1156 0.71056 0.93446 0.14445 0.14572 2.45500 0.045089 0.19754 0.66553 \n",
"1993 0.21104 0.59523 0.30998 0.48288 0.26750 0.001754 0.56306 0.19858 \n",
"1924 0.46072 0.90327 0.28563 0.45008 0.85431 0.024656 0.43336 0.45475 \n",
"\n",
" x25 x29 x37 x41 x46 x54 x63 x70 \\\n",
"1156 625.41 0.045031 0.155580 3.22850 0.11500 874.69 -3.0266 25.4 \n",
"1993 1600.20 0.012465 0.015800 0.75445 2.10980 47173.00 -3.0659 34.7 \n",
"1924 4659.80 0.005962 0.011055 1.67490 0.81567 12851.00 7.1562 15.6 \n",
"\n",
" x73 x80 \n",
"1156 28.0 9.0 \n",
"1993 32.0 4.0 \n",
"1924 30.0 25.0 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Distress</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1156</th>\n",
" <td>0.6382</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1993</th>\n",
" <td>0.4402</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1924</th>\n",
" <td>3.2629</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Distress\n",
"1156 0.6382\n",
"1993 0.4402\n",
"1924 3.2629"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>x3</th>\n",
" <th>x4</th>\n",
" <th>x5</th>\n",
" <th>x10</th>\n",
" <th>x14</th>\n",
" <th>x18</th>\n",
" <th>x23</th>\n",
" <th>x24</th>\n",
" <th>x25</th>\n",
" <th>x29</th>\n",
" <th>x37</th>\n",
" <th>x41</th>\n",
" <th>x46</th>\n",
" <th>x54</th>\n",
" <th>x63</th>\n",
" <th>x70</th>\n",
" <th>x73</th>\n",
" <th>x80</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>3379</th>\n",
" <td>0.62266</td>\n",
" <td>0.74377</td>\n",
" <td>0.13716</td>\n",
" <td>0.008050</td>\n",
" <td>1.65010</td>\n",
" <td>0.034872</td>\n",
" <td>0.20639</td>\n",
" <td>0.42211</td>\n",
" <td>734.24</td>\n",
" <td>0.20055</td>\n",
" <td>0.53147</td>\n",
" <td>1.9711</td>\n",
" <td>0.207370</td>\n",
" <td>620.53</td>\n",
" <td>7.7373</td>\n",
" <td>15.400</td>\n",
" <td>35.5</td>\n",
" <td>25.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>156</th>\n",
" <td>0.79108</td>\n",
" <td>0.68615</td>\n",
" <td>0.10943</td>\n",
" <td>0.011391</td>\n",
" <td>3.78650</td>\n",
" <td>0.002455</td>\n",
" <td>0.19456</td>\n",
" <td>0.56425</td>\n",
" <td>653.83</td>\n",
" <td>0.22683</td>\n",
" <td>1.08570</td>\n",
" <td>3.2842</td>\n",
" <td>0.061802</td>\n",
" <td>225.64</td>\n",
" <td>1.1538</td>\n",
" <td>15.200</td>\n",
" <td>35.0</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2215</th>\n",
" <td>0.46538</td>\n",
" <td>0.54146</td>\n",
" <td>0.25140</td>\n",
" <td>0.187750</td>\n",
" <td>0.87049</td>\n",
" <td>0.027462</td>\n",
" <td>0.46916</td>\n",
" <td>0.22192</td>\n",
" <td>601.83</td>\n",
" <td>0.24346</td>\n",
" <td>0.45540</td>\n",
" <td>1.0128</td>\n",
" <td>0.431220</td>\n",
" <td>473.60</td>\n",
" <td>9.7164</td>\n",
" <td>15.683</td>\n",
" <td>36.0</td>\n",
" <td>15.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" x3 x4 x5 x10 x14 x18 x23 \\\n",
"3379 0.62266 0.74377 0.13716 0.008050 1.65010 0.034872 0.20639 \n",
"156 0.79108 0.68615 0.10943 0.011391 3.78650 0.002455 0.19456 \n",
"2215 0.46538 0.54146 0.25140 0.187750 0.87049 0.027462 0.46916 \n",
"\n",
" x24 x25 x29 x37 x41 x46 x54 x63 \\\n",
"3379 0.42211 734.24 0.20055 0.53147 1.9711 0.207370 620.53 7.7373 \n",
"156 0.56425 653.83 0.22683 1.08570 3.2842 0.061802 225.64 1.1538 \n",
"2215 0.22192 601.83 0.24346 0.45540 1.0128 0.431220 473.60 9.7164 \n",
"\n",
" x70 x73 x80 \n",
"3379 15.400 35.5 25.0 \n",
"156 15.200 35.0 12.0 \n",
"2215 15.683 36.0 15.0 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Distress</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>3379</th>\n",
" <td>0.121330</td>\n",
" </tr>\n",
" <tr>\n",
" <th>156</th>\n",
" <td>0.080083</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2215</th>\n",
" <td>1.164000</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Distress\n",
"3379 0.121330\n",
"156 0.080083\n",
"2215 1.164000"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from src.utils import split_stratified_into_train_val_test\n",
"\n",
"\n",
"X_train, X_test, y_train, y_test = split_stratified_into_train_val_test(\n",
" data,\n",
" stratify_colname=\"Distress\",\n",
" frac_train=0.8,\n",
" frac_val=0,\n",
" frac_test=0.2,\n",
" random_state=random_state,\n",
")\n",
"\n",
"display(X_train.head(3))\n",
"display(y_train.head(3))\n",
"display(X_test.head(3))\n",
"display(y_test.head(3))"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"from sklearn.pipeline import make_pipeline\n",
"from sklearn.preprocessing import PolynomialFeatures\n",
"from sklearn import linear_model, tree, neighbors, ensemble\n",
"\n",
"models = {\n",
" \"linear\": {\"model\": linear_model.LinearRegression(n_jobs=-1)},\n",
" \"linear_poly\": {\n",
" \"model\": make_pipeline(\n",
" PolynomialFeatures(degree=2),\n",
" linear_model.LinearRegression(fit_intercept=False, n_jobs=-1),\n",
" )\n",
" },\n",
" \"linear_interact\": {\n",
" \"model\": make_pipeline(\n",
" PolynomialFeatures(interaction_only=True),\n",
" linear_model.LinearRegression(fit_intercept=False, n_jobs=-1),\n",
" )\n",
" },\n",
" \"ridge\": {\"model\": linear_model.RidgeCV()},\n",
" \"decision_tree\": {\n",
" \"model\": tree.DecisionTreeRegressor(max_depth=7, random_state=random_state)\n",
" },\n",
" \"knn\": {\"model\": neighbors.KNeighborsRegressor(n_neighbors=7, n_jobs=-1)},\n",
" \"random_forest\": {\n",
" \"model\": ensemble.RandomForestRegressor(\n",
" max_depth=7, random_state=random_state, n_jobs=-1\n",
" )\n",
" },\n",
"}"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Model: linear\n",
"Model: linear_poly\n",
"Model: linear_interact\n",
"Model: ridge\n",
"Model: decision_tree\n",
"Model: knn\n",
"Model: random_forest\n"
]
}
],
"source": [
"from src.utils import run_regression\n",
"\n",
"for model_name in models.keys():\n",
" print(f\"Model: {model_name}\")\n",
" fitted_model = models[model_name][\"model\"].fit(\n",
" X_train.values, y_train.values.ravel()\n",
" )\n",
" models[model_name] = run_regression(\n",
" fitted_model, X_train=X_train, X_test=X_test, y_train=y_train, y_test=y_test\n",
" )"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<style type=\"text/css\">\n",
"#T_e49d6_row0_col0 {\n",
" background-color: #1fa287;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row0_col1, #T_e49d6_row6_col0 {\n",
" background-color: #26818e;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row0_col2, #T_e49d6_row6_col3 {\n",
" background-color: #4e02a2;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row0_col3, #T_e49d6_row2_col2 {\n",
" background-color: #da5a6a;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row1_col0, #T_e49d6_row6_col1 {\n",
" background-color: #a8db34;\n",
" color: #000000;\n",
"}\n",
"#T_e49d6_row1_col1 {\n",
" background-color: #1fa088;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row1_col2 {\n",
" background-color: #c7427c;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row1_col3 {\n",
" background-color: #c03a83;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row2_col0 {\n",
" background-color: #a5db36;\n",
" color: #000000;\n",
"}\n",
"#T_e49d6_row2_col1 {\n",
" background-color: #21a585;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row2_col3 {\n",
" background-color: #ba3388;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row3_col0 {\n",
" background-color: #24878e;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row3_col1 {\n",
" background-color: #26ad81;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row3_col2 {\n",
" background-color: #a21d9a;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row3_col3 {\n",
" background-color: #b12a90;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row4_col0 {\n",
" background-color: #238a8d;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row4_col1 {\n",
" background-color: #73d056;\n",
" color: #000000;\n",
"}\n",
"#T_e49d6_row4_col2 {\n",
" background-color: #b7318a;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row4_col3 {\n",
" background-color: #7501a8;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row5_col0 {\n",
" background-color: #93d741;\n",
" color: #000000;\n",
"}\n",
"#T_e49d6_row5_col1 {\n",
" background-color: #9bd93c;\n",
" color: #000000;\n",
"}\n",
"#T_e49d6_row5_col2 {\n",
" background-color: #d5536f;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row5_col3 {\n",
" background-color: #5801a4;\n",
" color: #f1f1f1;\n",
"}\n",
"#T_e49d6_row6_col2 {\n",
" background-color: #b6308b;\n",
" color: #f1f1f1;\n",
"}\n",
"</style>\n",
"<table id=\"T_e49d6\">\n",
" <thead>\n",
" <tr>\n",
" <th class=\"blank level0\" >&nbsp;</th>\n",
" <th id=\"T_e49d6_level0_col0\" class=\"col_heading level0 col0\" >RMSE_train</th>\n",
" <th id=\"T_e49d6_level0_col1\" class=\"col_heading level0 col1\" >RMSE_test</th>\n",
" <th id=\"T_e49d6_level0_col2\" class=\"col_heading level0 col2\" >RMAE_test</th>\n",
" <th id=\"T_e49d6_level0_col3\" class=\"col_heading level0 col3\" >R2_test</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th id=\"T_e49d6_level0_row0\" class=\"row_heading level0 row0\" >random_forest</th>\n",
" <td id=\"T_e49d6_row0_col0\" class=\"data row0 col0\" >1.394198</td>\n",
" <td id=\"T_e49d6_row0_col1\" class=\"data row0 col1\" >1.042729</td>\n",
" <td id=\"T_e49d6_row0_col2\" class=\"data row0 col2\" >0.778401</td>\n",
" <td id=\"T_e49d6_row0_col3\" class=\"data row0 col3\" >0.456952</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_e49d6_level0_row1\" class=\"row_heading level0 row1\" >ridge</th>\n",
" <td id=\"T_e49d6_row1_col0\" class=\"data row1 col0\" >2.488097</td>\n",
" <td id=\"T_e49d6_row1_col1\" class=\"data row1 col1\" >1.198888</td>\n",
" <td id=\"T_e49d6_row1_col2\" class=\"data row1 col2\" >0.865585</td>\n",
" <td id=\"T_e49d6_row1_col3\" class=\"data row1 col3\" >0.282120</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_e49d6_level0_row2\" class=\"row_heading level0 row2\" >linear</th>\n",
" <td id=\"T_e49d6_row2_col0\" class=\"data row2 col0\" >2.474171</td>\n",
" <td id=\"T_e49d6_row2_col1\" class=\"data row2 col1\" >1.228277</td>\n",
" <td id=\"T_e49d6_row2_col2\" class=\"data row2 col2\" >0.885807</td>\n",
" <td id=\"T_e49d6_row2_col3\" class=\"data row2 col3\" >0.246493</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_e49d6_level0_row3\" class=\"row_heading level0 row3\" >linear_poly</th>\n",
" <td id=\"T_e49d6_row3_col0\" class=\"data row3 col0\" >0.981309</td>\n",
" <td id=\"T_e49d6_row3_col1\" class=\"data row3 col1\" >1.267218</td>\n",
" <td id=\"T_e49d6_row3_col2\" class=\"data row3 col2\" >0.833594</td>\n",
" <td id=\"T_e49d6_row3_col3\" class=\"data row3 col3\" >0.197957</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_e49d6_level0_row4\" class=\"row_heading level0 row4\" >linear_interact</th>\n",
" <td id=\"T_e49d6_row4_col0\" class=\"data row4 col0\" >1.025112</td>\n",
" <td id=\"T_e49d6_row4_col1\" class=\"data row4 col1\" >1.466789</td>\n",
" <td id=\"T_e49d6_row4_col2\" class=\"data row4 col2\" >0.850850</td>\n",
" <td id=\"T_e49d6_row4_col3\" class=\"data row4 col3\" >-0.074560</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_e49d6_level0_row5\" class=\"row_heading level0 row5\" >knn</th>\n",
" <td id=\"T_e49d6_row5_col0\" class=\"data row5 col0\" >2.376262</td>\n",
" <td id=\"T_e49d6_row5_col1\" class=\"data row5 col1\" >1.541027</td>\n",
" <td id=\"T_e49d6_row5_col2\" class=\"data row5 col2\" >0.879611</td>\n",
" <td id=\"T_e49d6_row5_col3\" class=\"data row5 col3\" >-0.186083</td>\n",
" </tr>\n",
" <tr>\n",
" <th id=\"T_e49d6_level0_row6\" class=\"row_heading level0 row6\" >decision_tree</th>\n",
" <td id=\"T_e49d6_row6_col0\" class=\"data row6 col0\" >0.872007</td>\n",
" <td id=\"T_e49d6_row6_col1\" class=\"data row6 col1\" >1.566888</td>\n",
" <td id=\"T_e49d6_row6_col2\" class=\"data row6 col2\" >0.850226</td>\n",
" <td id=\"T_e49d6_row6_col3\" class=\"data row6 col3\" >-0.226227</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n"
],
"text/plain": [
"<pandas.io.formats.style.Styler at 0x227bc70f2f0>"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"reg_metrics = pd.DataFrame.from_dict(models, \"index\")[\n",
" [\"RMSE_train\", \"RMSE_test\", \"RMAE_test\", \"R2_test\"]\n",
"]\n",
"reg_metrics.sort_values(by=\"RMSE_test\").style.background_gradient(\n",
" cmap=\"viridis\", low=1, high=0.3, subset=[\"RMSE_train\", \"RMSE_test\"]\n",
").background_gradient(cmap=\"plasma\", low=0.3, high=1, subset=[\"RMAE_test\", \"R2_test\"])"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>x3</th>\n",
" <th>x4</th>\n",
" <th>x5</th>\n",
" <th>x10</th>\n",
" <th>x14</th>\n",
" <th>x18</th>\n",
" <th>x23</th>\n",
" <th>x24</th>\n",
" <th>x25</th>\n",
" <th>x29</th>\n",
" <th>x37</th>\n",
" <th>x41</th>\n",
" <th>x46</th>\n",
" <th>x54</th>\n",
" <th>x63</th>\n",
" <th>x70</th>\n",
" <th>x73</th>\n",
" <th>x80</th>\n",
" <th>Distress</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.87454</td>\n",
" <td>1.21640</td>\n",
" <td>0.060940</td>\n",
" <td>0.006449</td>\n",
" <td>6.97060</td>\n",
" <td>0.018265</td>\n",
" <td>0.148720</td>\n",
" <td>0.66995</td>\n",
" <td>214.760</td>\n",
" <td>0.204590</td>\n",
" <td>1.630700</td>\n",
" <td>9.69510</td>\n",
" <td>0.026224</td>\n",
" <td>209.87</td>\n",
" <td>3.27020</td>\n",
" <td>15.8</td>\n",
" <td>36.0</td>\n",
" <td>22.0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.82067</td>\n",
" <td>1.00490</td>\n",
" <td>-0.014080</td>\n",
" <td>0.001795</td>\n",
" <td>4.57640</td>\n",
" <td>0.027558</td>\n",
" <td>0.056026</td>\n",
" <td>0.67048</td>\n",
" <td>38.242</td>\n",
" <td>0.150190</td>\n",
" <td>0.837540</td>\n",
" <td>5.60350</td>\n",
" <td>0.007864</td>\n",
" <td>250.14</td>\n",
" <td>14.32100</td>\n",
" <td>15.6</td>\n",
" <td>36.0</td>\n",
" <td>22.0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.92242</td>\n",
" <td>0.72926</td>\n",
" <td>0.020476</td>\n",
" <td>-0.054324</td>\n",
" <td>11.89000</td>\n",
" <td>0.012595</td>\n",
" <td>0.065220</td>\n",
" <td>0.84827</td>\n",
" <td>-498.390</td>\n",
" <td>0.074149</td>\n",
" <td>0.955790</td>\n",
" <td>9.40030</td>\n",
" <td>-0.064373</td>\n",
" <td>280.55</td>\n",
" <td>1.15380</td>\n",
" <td>15.2</td>\n",
" <td>35.0</td>\n",
" <td>22.0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>0.85888</td>\n",
" <td>0.80974</td>\n",
" <td>0.076037</td>\n",
" <td>-0.065316</td>\n",
" <td>6.08620</td>\n",
" <td>0.011601</td>\n",
" <td>0.125160</td>\n",
" <td>0.80478</td>\n",
" <td>-75.867</td>\n",
" <td>0.054098</td>\n",
" <td>0.383350</td>\n",
" <td>5.73790</td>\n",
" <td>-0.017731</td>\n",
" <td>413.74</td>\n",
" <td>2.04080</td>\n",
" <td>10.4</td>\n",
" <td>33.0</td>\n",
" <td>22.0</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>0.81460</td>\n",
" <td>0.83593</td>\n",
" <td>0.199960</td>\n",
" <td>0.094075</td>\n",
" <td>4.39380</td>\n",
" <td>0.006814</td>\n",
" <td>0.266020</td>\n",
" <td>0.76770</td>\n",
" <td>1423.100</td>\n",
" <td>0.046907</td>\n",
" <td>0.253010</td>\n",
" <td>4.50880</td>\n",
" <td>0.131380</td>\n",
" <td>315.34</td>\n",
" <td>3.27020</td>\n",
" <td>15.8</td>\n",
" <td>36.0</td>\n",
" <td>29.0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>...</th>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" <td>...</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3667</th>\n",
" <td>0.16037</td>\n",
" <td>0.18588</td>\n",
" <td>0.175970</td>\n",
" <td>0.226860</td>\n",
" <td>0.19101</td>\n",
" <td>0.014077</td>\n",
" <td>0.994340</td>\n",
" <td>0.15740</td>\n",
" <td>390.260</td>\n",
" <td>0.002976</td>\n",
" <td>0.003544</td>\n",
" <td>0.22138</td>\n",
" <td>1.265100</td>\n",
" <td>16961.00</td>\n",
" <td>-0.53449</td>\n",
" <td>21.5</td>\n",
" <td>22.0</td>\n",
" <td>37.0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3668</th>\n",
" <td>0.20095</td>\n",
" <td>0.21642</td>\n",
" <td>0.203590</td>\n",
" <td>0.213610</td>\n",
" <td>0.25149</td>\n",
" <td>0.018249</td>\n",
" <td>0.992440</td>\n",
" <td>0.19747</td>\n",
" <td>443.840</td>\n",
" <td>0.003484</td>\n",
" <td>0.004359</td>\n",
" <td>0.27085</td>\n",
" <td>1.077100</td>\n",
" <td>20689.00</td>\n",
" <td>-25.73600</td>\n",
" <td>30.5</td>\n",
" <td>28.0</td>\n",
" <td>37.0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3669</th>\n",
" <td>0.26136</td>\n",
" <td>0.21399</td>\n",
" <td>0.193670</td>\n",
" <td>0.210970</td>\n",
" <td>0.35384</td>\n",
" <td>0.007451</td>\n",
" <td>0.982420</td>\n",
" <td>0.25902</td>\n",
" <td>475.560</td>\n",
" <td>0.002343</td>\n",
" <td>0.003172</td>\n",
" <td>0.28971</td>\n",
" <td>0.795720</td>\n",
" <td>34012.00</td>\n",
" <td>-3.06590</td>\n",
" <td>34.7</td>\n",
" <td>32.0</td>\n",
" <td>37.0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3670</th>\n",
" <td>0.30728</td>\n",
" <td>0.19307</td>\n",
" <td>0.172140</td>\n",
" <td>0.203190</td>\n",
" <td>0.44358</td>\n",
" <td>0.021239</td>\n",
" <td>0.985230</td>\n",
" <td>0.30533</td>\n",
" <td>457.060</td>\n",
" <td>0.001942</td>\n",
" <td>0.002803</td>\n",
" <td>0.27871</td>\n",
" <td>0.603540</td>\n",
" <td>35901.00</td>\n",
" <td>7.15620</td>\n",
" <td>15.6</td>\n",
" <td>30.0</td>\n",
" <td>37.0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3671</th>\n",
" <td>0.36369</td>\n",
" <td>0.18442</td>\n",
" <td>0.169550</td>\n",
" <td>0.213850</td>\n",
" <td>0.57156</td>\n",
" <td>0.013783</td>\n",
" <td>0.994000</td>\n",
" <td>0.32184</td>\n",
" <td>505.040</td>\n",
" <td>0.041852</td>\n",
" <td>0.065773</td>\n",
" <td>0.28982</td>\n",
" <td>0.486010</td>\n",
" <td>28173.00</td>\n",
" <td>12.14500</td>\n",
" <td>11.9</td>\n",
" <td>29.0</td>\n",
" <td>37.0</td>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"<p>3672 rows × 19 columns</p>\n",
"</div>"
],
"text/plain": [
" x3 x4 x5 x10 x14 x18 x23 \\\n",
"0 0.87454 1.21640 0.060940 0.006449 6.97060 0.018265 0.148720 \n",
"1 0.82067 1.00490 -0.014080 0.001795 4.57640 0.027558 0.056026 \n",
"2 0.92242 0.72926 0.020476 -0.054324 11.89000 0.012595 0.065220 \n",
"3 0.85888 0.80974 0.076037 -0.065316 6.08620 0.011601 0.125160 \n",
"4 0.81460 0.83593 0.199960 0.094075 4.39380 0.006814 0.266020 \n",
"... ... ... ... ... ... ... ... \n",
"3667 0.16037 0.18588 0.175970 0.226860 0.19101 0.014077 0.994340 \n",
"3668 0.20095 0.21642 0.203590 0.213610 0.25149 0.018249 0.992440 \n",
"3669 0.26136 0.21399 0.193670 0.210970 0.35384 0.007451 0.982420 \n",
"3670 0.30728 0.19307 0.172140 0.203190 0.44358 0.021239 0.985230 \n",
"3671 0.36369 0.18442 0.169550 0.213850 0.57156 0.013783 0.994000 \n",
"\n",
" x24 x25 x29 x37 x41 x46 x54 \\\n",
"0 0.66995 214.760 0.204590 1.630700 9.69510 0.026224 209.87 \n",
"1 0.67048 38.242 0.150190 0.837540 5.60350 0.007864 250.14 \n",
"2 0.84827 -498.390 0.074149 0.955790 9.40030 -0.064373 280.55 \n",
"3 0.80478 -75.867 0.054098 0.383350 5.73790 -0.017731 413.74 \n",
"4 0.76770 1423.100 0.046907 0.253010 4.50880 0.131380 315.34 \n",
"... ... ... ... ... ... ... ... \n",
"3667 0.15740 390.260 0.002976 0.003544 0.22138 1.265100 16961.00 \n",
"3668 0.19747 443.840 0.003484 0.004359 0.27085 1.077100 20689.00 \n",
"3669 0.25902 475.560 0.002343 0.003172 0.28971 0.795720 34012.00 \n",
"3670 0.30533 457.060 0.001942 0.002803 0.27871 0.603540 35901.00 \n",
"3671 0.32184 505.040 0.041852 0.065773 0.28982 0.486010 28173.00 \n",
"\n",
" x63 x70 x73 x80 Distress \n",
"0 3.27020 15.8 36.0 22.0 0 \n",
"1 14.32100 15.6 36.0 22.0 0 \n",
"2 1.15380 15.2 35.0 22.0 0 \n",
"3 2.04080 10.4 33.0 22.0 1 \n",
"4 3.27020 15.8 36.0 29.0 0 \n",
"... ... ... ... ... ... \n",
"3667 -0.53449 21.5 22.0 37.0 0 \n",
"3668 -25.73600 30.5 28.0 37.0 0 \n",
"3669 -3.06590 34.7 32.0 37.0 0 \n",
"3670 7.15620 15.6 30.0 37.0 0 \n",
"3671 12.14500 11.9 29.0 37.0 0 \n",
"\n",
"[3672 rows x 19 columns]"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from src.utils import run_classification\n",
"\n",
"\n",
"def get_class(row):\n",
" return 0 if row[\"Distress\"] > -0.5 else 1\n",
"\n",
"datac = data.copy()\n",
"datac[\"Distress\"] = datac.apply(get_class, axis=1)\n",
"datac"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>x3</th>\n",
" <th>x4</th>\n",
" <th>x5</th>\n",
" <th>x10</th>\n",
" <th>x14</th>\n",
" <th>x18</th>\n",
" <th>x23</th>\n",
" <th>x24</th>\n",
" <th>x25</th>\n",
" <th>x29</th>\n",
" <th>x37</th>\n",
" <th>x41</th>\n",
" <th>x46</th>\n",
" <th>x54</th>\n",
" <th>x63</th>\n",
" <th>x70</th>\n",
" <th>x73</th>\n",
" <th>x80</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0.71056</td>\n",
" <td>0.93446</td>\n",
" <td>0.14445</td>\n",
" <td>0.14572</td>\n",
" <td>2.45500</td>\n",
" <td>0.045089</td>\n",
" <td>0.19754</td>\n",
" <td>0.66553</td>\n",
" <td>625.41</td>\n",
" <td>0.045031</td>\n",
" <td>0.155580</td>\n",
" <td>3.22850</td>\n",
" <td>0.11500</td>\n",
" <td>874.69</td>\n",
" <td>-3.0266</td>\n",
" <td>25.4</td>\n",
" <td>28.0</td>\n",
" <td>9.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0.21104</td>\n",
" <td>0.59523</td>\n",
" <td>0.30998</td>\n",
" <td>0.48288</td>\n",
" <td>0.26750</td>\n",
" <td>0.001754</td>\n",
" <td>0.56306</td>\n",
" <td>0.19858</td>\n",
" <td>1600.20</td>\n",
" <td>0.012465</td>\n",
" <td>0.015800</td>\n",
" <td>0.75445</td>\n",
" <td>2.10980</td>\n",
" <td>47173.00</td>\n",
" <td>-3.0659</td>\n",
" <td>34.7</td>\n",
" <td>32.0</td>\n",
" <td>4.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0.46072</td>\n",
" <td>0.90327</td>\n",
" <td>0.28563</td>\n",
" <td>0.45008</td>\n",
" <td>0.85431</td>\n",
" <td>0.024656</td>\n",
" <td>0.43336</td>\n",
" <td>0.45475</td>\n",
" <td>4659.80</td>\n",
" <td>0.005962</td>\n",
" <td>0.011055</td>\n",
" <td>1.67490</td>\n",
" <td>0.81567</td>\n",
" <td>12851.00</td>\n",
" <td>7.1562</td>\n",
" <td>15.6</td>\n",
" <td>30.0</td>\n",
" <td>25.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" x3 x4 x5 x10 x14 x18 x23 x24 \\\n",
"0 0.71056 0.93446 0.14445 0.14572 2.45500 0.045089 0.19754 0.66553 \n",
"1 0.21104 0.59523 0.30998 0.48288 0.26750 0.001754 0.56306 0.19858 \n",
"2 0.46072 0.90327 0.28563 0.45008 0.85431 0.024656 0.43336 0.45475 \n",
"\n",
" x25 x29 x37 x41 x46 x54 x63 x70 \\\n",
"0 625.41 0.045031 0.155580 3.22850 0.11500 874.69 -3.0266 25.4 \n",
"1 1600.20 0.012465 0.015800 0.75445 2.10980 47173.00 -3.0659 34.7 \n",
"2 4659.80 0.005962 0.011055 1.67490 0.81567 12851.00 7.1562 15.6 \n",
"\n",
" x73 x80 \n",
"0 28.0 9.0 \n",
"1 32.0 4.0 \n",
"2 30.0 25.0 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Distress</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Distress\n",
"0 0\n",
"1 0\n",
"2 0"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>x3</th>\n",
" <th>x4</th>\n",
" <th>x5</th>\n",
" <th>x10</th>\n",
" <th>x14</th>\n",
" <th>x18</th>\n",
" <th>x23</th>\n",
" <th>x24</th>\n",
" <th>x25</th>\n",
" <th>x29</th>\n",
" <th>x37</th>\n",
" <th>x41</th>\n",
" <th>x46</th>\n",
" <th>x54</th>\n",
" <th>x63</th>\n",
" <th>x70</th>\n",
" <th>x73</th>\n",
" <th>x80</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>3379</th>\n",
" <td>0.62266</td>\n",
" <td>0.74377</td>\n",
" <td>0.13716</td>\n",
" <td>0.008050</td>\n",
" <td>1.65010</td>\n",
" <td>0.034872</td>\n",
" <td>0.20639</td>\n",
" <td>0.42211</td>\n",
" <td>734.24</td>\n",
" <td>0.20055</td>\n",
" <td>0.53147</td>\n",
" <td>1.9711</td>\n",
" <td>0.207370</td>\n",
" <td>620.53</td>\n",
" <td>7.7373</td>\n",
" <td>15.400</td>\n",
" <td>35.5</td>\n",
" <td>25.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>156</th>\n",
" <td>0.79108</td>\n",
" <td>0.68615</td>\n",
" <td>0.10943</td>\n",
" <td>0.011391</td>\n",
" <td>3.78650</td>\n",
" <td>0.002455</td>\n",
" <td>0.19456</td>\n",
" <td>0.56425</td>\n",
" <td>653.83</td>\n",
" <td>0.22683</td>\n",
" <td>1.08570</td>\n",
" <td>3.2842</td>\n",
" <td>0.061802</td>\n",
" <td>225.64</td>\n",
" <td>1.1538</td>\n",
" <td>15.200</td>\n",
" <td>35.0</td>\n",
" <td>12.0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2215</th>\n",
" <td>0.46538</td>\n",
" <td>0.54146</td>\n",
" <td>0.25140</td>\n",
" <td>0.187750</td>\n",
" <td>0.87049</td>\n",
" <td>0.027462</td>\n",
" <td>0.46916</td>\n",
" <td>0.22192</td>\n",
" <td>601.83</td>\n",
" <td>0.24346</td>\n",
" <td>0.45540</td>\n",
" <td>1.0128</td>\n",
" <td>0.431220</td>\n",
" <td>473.60</td>\n",
" <td>9.7164</td>\n",
" <td>15.683</td>\n",
" <td>36.0</td>\n",
" <td>15.0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" x3 x4 x5 x10 x14 x18 x23 \\\n",
"3379 0.62266 0.74377 0.13716 0.008050 1.65010 0.034872 0.20639 \n",
"156 0.79108 0.68615 0.10943 0.011391 3.78650 0.002455 0.19456 \n",
"2215 0.46538 0.54146 0.25140 0.187750 0.87049 0.027462 0.46916 \n",
"\n",
" x24 x25 x29 x37 x41 x46 x54 x63 \\\n",
"3379 0.42211 734.24 0.20055 0.53147 1.9711 0.207370 620.53 7.7373 \n",
"156 0.56425 653.83 0.22683 1.08570 3.2842 0.061802 225.64 1.1538 \n",
"2215 0.22192 601.83 0.24346 0.45540 1.0128 0.431220 473.60 9.7164 \n",
"\n",
" x70 x73 x80 \n",
"3379 15.400 35.5 25.0 \n",
"156 15.200 35.0 12.0 \n",
"2215 15.683 36.0 15.0 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<div>\n",
"<style scoped>\n",
" .dataframe tbody tr th:only-of-type {\n",
" vertical-align: middle;\n",
" }\n",
"\n",
" .dataframe tbody tr th {\n",
" vertical-align: top;\n",
" }\n",
"\n",
" .dataframe thead th {\n",
" text-align: right;\n",
" }\n",
"</style>\n",
"<table border=\"1\" class=\"dataframe\">\n",
" <thead>\n",
" <tr style=\"text-align: right;\">\n",
" <th></th>\n",
" <th>Distress</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>3379</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>156</th>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2215</th>\n",
" <td>0</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" Distress\n",
"3379 0\n",
"156 0\n",
"2215 0"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from imblearn.over_sampling import ADASYN\n",
"\n",
"Xc_train, Xc_test, yc_train, yc_test = split_stratified_into_train_val_test(\n",
" datac,\n",
" stratify_colname=\"Distress\",\n",
" frac_train=0.8,\n",
" frac_val=0,\n",
" frac_test=0.2,\n",
" random_state=random_state,\n",
")\n",
"\n",
"ada = ADASYN()\n",
"\n",
"Xc_train, yc_train = ada.fit_resample(Xc_train, yc_train)\n",
"\n",
"display(Xc_train.head(3))\n",
"display(yc_train.head(3))\n",
"display(Xc_test.head(3))\n",
"display(yc_test.head(3))"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"c:\\Users\\user\\Projects\\python\\fuzzy\\.venv\\Lib\\site-packages\\sklearn\\base.py:486: UserWarning: X has feature names, but DecisionTreeClassifier was fitted without feature names\n",
" warnings.warn(\n",
"c:\\Users\\user\\Projects\\python\\fuzzy\\.venv\\Lib\\site-packages\\sklearn\\base.py:486: UserWarning: X has feature names, but DecisionTreeClassifier was fitted without feature names\n",
" warnings.warn(\n"
]
},
{
"data": {
"text/plain": [
"{'pipeline': DecisionTreeClassifier(max_depth=7, random_state=9),\n",
" 'probs': array([1. , 0.17698154, 1. , 0.04407713, 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 0.04407713, 1. , 1. , 1. , 1. ,\n",
" 1. , 0.08695652, 1. , 1. , 1. ,\n",
" 0.04407713, 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 0.04407713, 1. ,\n",
" 1. , 1. , 1. , 0.04407713, 1. ,\n",
" 0.04407713, 1. , 0.17698154, 1. , 1. ,\n",
" 1. , 0.17698154, 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 0.17698154, 1. , 1. , 1. ,\n",
" 1. , 1. , 0.04407713, 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 0.17698154, 1. , 1. , 0. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 0.04407713, 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 0.17698154, 0.04407713, 1. , 1. ,\n",
" 1. , 0.04407713, 1. , 1. , 0.94736842,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 0.17698154, 1. ,\n",
" 0.17698154, 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 0.04407713,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 0.04407713, 1. , 0.08695652, 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 0.17698154, 0.17698154, 0.17698154, 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 0.04407713, 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 0.04407713, 1. , 1. ,\n",
" 1. , 0.04407713, 1. , 0.04407713, 0.17698154,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 0.04407713, 1. , 0.17698154,\n",
" 1. , 0.04407713, 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 0.5 , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 0.17698154, 1. , 1. , 1. , 1. ,\n",
" 1. , 0.17698154, 1. , 1. , 1. ,\n",
" 1. , 1. , 0.17698154, 0.13207547, 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 0.17698154, 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 0.13207547, 0.17698154, 1. , 1. , 1. ,\n",
" 1. , 1. , 0.17698154, 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 0.04407713, 1. , 1. , 1. ,\n",
" 0.04407713, 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 0.625 , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 0.17698154,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 0.04407713, 1. , 1. , 1. , 1. ,\n",
" 0.17698154, 1. , 0.13207547, 0.04407713, 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 0.17698154, 1. ,\n",
" 0.04407713, 1. , 0.04407713, 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 0.04407713,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 0.17698154, 1. , 0.08695652,\n",
" 0.04407713, 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 0. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 0.17698154, 1. , 0.17698154, 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 0.17698154,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 0.04407713, 1. , 1. , 0.13207547,\n",
" 1. , 1. , 0.04407713, 1. , 1. ,\n",
" 0.625 , 1. , 1. , 1. , 1. ,\n",
" 0.17698154, 1. , 1. , 0.13207547, 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 0.17698154,\n",
" 1. , 1. , 0.17698154, 1. , 1. ,\n",
" 1. , 1. , 0.04407713, 1. , 1. ,\n",
" 1. , 1. , 0.17698154, 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 0.17698154, 1. , 1. ,\n",
" 0.17698154, 1. , 1. , 0.17698154, 0. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 0.04407713, 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 0.04407713, 1. , 1. ,\n",
" 0.04407713, 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 0.17698154,\n",
" 1. , 0.17698154, 1. , 1. , 1. ,\n",
" 0.17698154, 1. , 1. , 0.17698154, 0.05454545,\n",
" 0.04407713, 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 0.17698154, 1. , 1. ,\n",
" 1. , 1. , 0.17698154, 1. , 1. ,\n",
" 1. , 0.04407713, 1. , 1. , 0.04407713,\n",
" 0.17698154, 1. , 1. , 1. , 0.04407713,\n",
" 1. , 1. , 1. , 0.17698154, 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 0.17698154, 1. , 1. , 0.04407713,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 0.17698154,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 0.04407713, 1. , 1. , 1. , 1. ,\n",
" 0.17698154, 1. , 0.04407713, 1. , 1. ,\n",
" 1. , 1. , 1. , 0.04407713, 1. ,\n",
" 1. , 1. , 1. , 0.17698154, 1. ,\n",
" 1. , 0.04407713, 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 0.17698154, 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 0.04407713, 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 0.17698154,\n",
" 1. , 1. , 0.04407713, 1. , 0.17698154,\n",
" 1. , 1. , 1. , 0.04407713, 0.04407713,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 0.04407713, 1. , 1. , 1. ,\n",
" 1. , 1. , 0. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 0. , 1. , 0.17698154, 1. ,\n",
" 1. , 1. , 0.04407713, 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 0.17698154, 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 0.17698154, 1. , 0. ,\n",
" 1. , 0.08695652, 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 1. , 1. , 1. , 1. ,\n",
" 1. , 0. , 1. , 1. , 0.17698154,\n",
" 0.04407713, 1. , 1. , 1. , 1. ]),\n",
" 'preds': array([1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1,\n",
" 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1,\n",
" 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1,\n",
" 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n",
" 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0,\n",
" 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 1, 1, 1,\n",
" 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1,\n",
" 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0,\n",
" 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 1,\n",
" 1, 0, 1, 1, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 0, 1, 0, 1, 1, 1,\n",
" 1, 1, 0, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0,\n",
" 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1, 0, 1, 1, 1, 1,\n",
" 1, 1, 1, 1, 0, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1,\n",
" 1, 1, 1, 0, 1, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,\n",
" 0, 1, 1, 0, 0, 1, 1, 1, 1]),\n",
" 'Precision_train': np.float64(0.9157792836398838),\n",
" 'Precision_test': np.float64(0.011345218800648298),\n",
" 'Recall_train': np.float64(0.9978902953586498),\n",
" 'Recall_test': np.float64(0.3181818181818182),\n",
" 'Accuracy_train': 0.9528851244044468,\n",
" 'Accuracy_test': 0.14965986394557823,\n",
" 'ROC_AUC_test': np.float64(0.21318373071528754),\n",
" 'F1_train': np.float64(0.9550731953558809),\n",
" 'F1_test': np.float64(0.02190923317683881),\n",
" 'MCC_test': np.float64(-0.2494229220759723),\n",
" 'Cohen_kappa_test': np.float64(-0.03809571157718228),\n",
" 'Confusion_matrix': array([[103, 610],\n",
" [ 15, 7]])}"
]
},
"execution_count": 26,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"from src.utils import run_classification\n",
"from sklearn import tree\n",
"\n",
"\n",
"fitted_model = tree.DecisionTreeClassifier(max_depth=7, random_state=random_state).fit(\n",
" Xc_train.values, yc_train.values.ravel()\n",
")\n",
"result = run_classification(\n",
" fitted_model, X_train=Xc_train, X_test=Xc_test, y_train=yc_train, y_test=yc_test\n",
")\n",
"result"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"|--- x46 <= 0.07\n",
"| |--- x10 <= -0.00\n",
"| | |--- x14 <= 1.65\n",
"| | | |--- x23 <= 0.16\n",
"| | | | |--- x54 <= 148.12\n",
"| | | | | |--- x70 <= 15.70\n",
"| | | | | | |--- x54 <= 40.29\n",
"| | | | | | | |--- class: 0\n",
"| | | | | | |--- x54 > 40.29\n",
"| | | | | | | |--- class: 1\n",
"| | | | | |--- x70 > 15.70\n",
"| | | | | | |--- class: 0\n",
"| | | | |--- x54 > 148.12\n",
"| | | | | |--- class: 0\n",
"| | | |--- x23 > 0.16\n",
"| | | | |--- x24 <= 0.31\n",
"| | | | | |--- class: 0\n",
"| | | | |--- x24 > 0.31\n",
"| | | | | |--- class: 1\n",
"| | |--- x14 > 1.65\n",
"| | | |--- x41 <= 0.27\n",
"| | | | |--- class: 0\n",
"| | | |--- x41 > 0.27\n",
"| | | | |--- x70 <= 10.43\n",
"| | | | | |--- x46 <= -0.02\n",
"| | | | | | |--- x37 <= 0.39\n",
"| | | | | | | |--- class: 1\n",
"| | | | | | |--- x37 > 0.39\n",
"| | | | | | | |--- class: 0\n",
"| | | | | |--- x46 > -0.02\n",
"| | | | | | |--- class: 0\n",
"| | | | |--- x70 > 10.43\n",
"| | | | | |--- x41 <= 24.10\n",
"| | | | | | |--- x73 <= 22.02\n",
"| | | | | | | |--- class: 0\n",
"| | | | | | |--- x73 > 22.02\n",
"| | | | | | | |--- class: 1\n",
"| | | | | |--- x41 > 24.10\n",
"| | | | | | |--- class: 0\n",
"| |--- x10 > -0.00\n",
"| | |--- x41 <= 2.26\n",
"| | | |--- x37 <= 0.37\n",
"| | | | |--- class: 0\n",
"| | | |--- x37 > 0.37\n",
"| | | | |--- x5 <= 0.03\n",
"| | | | | |--- x73 <= 29.22\n",
"| | | | | | |--- x14 <= 6.58\n",
"| | | | | | | |--- class: 0\n",
"| | | | | | |--- x14 > 6.58\n",
"| | | | | | | |--- class: 1\n",
"| | | | | |--- x73 > 29.22\n",
"| | | | | | |--- x4 <= 0.20\n",
"| | | | | | | |--- class: 0\n",
"| | | | | | |--- x4 > 0.20\n",
"| | | | | | | |--- class: 1\n",
"| | | | |--- x5 > 0.03\n",
"| | | | | |--- x29 <= 0.09\n",
"| | | | | | |--- class: 1\n",
"| | | | | |--- x29 > 0.09\n",
"| | | | | | |--- x41 <= 2.15\n",
"| | | | | | | |--- class: 0\n",
"| | | | | | |--- x41 > 2.15\n",
"| | | | | | | |--- class: 0\n",
"| | |--- x41 > 2.26\n",
"| | | |--- x37 <= 0.17\n",
"| | | | |--- x25 <= 112.70\n",
"| | | | | |--- x41 <= 3.17\n",
"| | | | | | |--- x23 <= 0.26\n",
"| | | | | | | |--- class: 0\n",
"| | | | | | |--- x23 > 0.26\n",
"| | | | | | | |--- class: 1\n",
"| | | | | |--- x41 > 3.17\n",
"| | | | | | |--- x4 <= 1.30\n",
"| | | | | | | |--- class: 1\n",
"| | | | | | |--- x4 > 1.30\n",
"| | | | | | | |--- class: 0\n",
"| | | | |--- x25 > 112.70\n",
"| | | | | |--- x3 <= 0.69\n",
"| | | | | | |--- x23 <= 0.16\n",
"| | | | | | | |--- class: 0\n",
"| | | | | | |--- x23 > 0.16\n",
"| | | | | | | |--- class: 1\n",
"| | | | | |--- x3 > 0.69\n",
"| | | | | | |--- x46 <= 0.07\n",
"| | | | | | | |--- class: 0\n",
"| | | | | | |--- x46 > 0.07\n",
"| | | | | | | |--- class: 1\n",
"| | | |--- x37 > 0.17\n",
"| | | | |--- x73 <= 27.06\n",
"| | | | | |--- x29 <= 0.03\n",
"| | | | | | |--- x80 <= 19.00\n",
"| | | | | | | |--- class: 1\n",
"| | | | | | |--- x80 > 19.00\n",
"| | | | | | | |--- class: 0\n",
"| | | | | |--- x29 > 0.03\n",
"| | | | | | |--- class: 0\n",
"| | | | |--- x73 > 27.06\n",
"| | | | | |--- x70 <= 30.33\n",
"| | | | | | |--- x80 <= 27.95\n",
"| | | | | | | |--- class: 1\n",
"| | | | | | |--- x80 > 27.95\n",
"| | | | | | | |--- class: 0\n",
"| | | | | |--- x70 > 30.33\n",
"| | | | | | |--- x37 <= 0.19\n",
"| | | | | | | |--- class: 1\n",
"| | | | | | |--- x37 > 0.19\n",
"| | | | | | | |--- class: 0\n",
"|--- x46 > 0.07\n",
"| |--- x14 <= 3.44\n",
"| | |--- x25 <= 152.01\n",
"| | | |--- x37 <= 0.25\n",
"| | | | |--- class: 0\n",
"| | | |--- x37 > 0.25\n",
"| | | | |--- x41 <= 1.66\n",
"| | | | | |--- class: 0\n",
"| | | | |--- x41 > 1.66\n",
"| | | | | |--- class: 1\n",
"| | |--- x25 > 152.01\n",
"| | | |--- x46 <= 0.10\n",
"| | | | |--- x41 <= 3.13\n",
"| | | | | |--- x25 <= 1069.03\n",
"| | | | | | |--- class: 0\n",
"| | | | | |--- x25 > 1069.03\n",
"| | | | | | |--- x23 <= 0.24\n",
"| | | | | | | |--- class: 1\n",
"| | | | | | |--- x23 > 0.24\n",
"| | | | | | | |--- class: 0\n",
"| | | | |--- x41 > 3.13\n",
"| | | | | |--- x4 <= 1.12\n",
"| | | | | | |--- x10 <= 0.04\n",
"| | | | | | | |--- class: 0\n",
"| | | | | | |--- x10 > 0.04\n",
"| | | | | | | |--- class: 1\n",
"| | | | | |--- x4 > 1.12\n",
"| | | | | | |--- class: 0\n",
"| | | |--- x46 > 0.10\n",
"| | | | |--- x25 <= 240.30\n",
"| | | | | |--- x41 <= 3.33\n",
"| | | | | | |--- class: 0\n",
"| | | | | |--- x41 > 3.33\n",
"| | | | | | |--- x23 <= 0.17\n",
"| | | | | | | |--- class: 0\n",
"| | | | | | |--- x23 > 0.17\n",
"| | | | | | | |--- class: 1\n",
"| | | | |--- x25 > 240.30\n",
"| | | | | |--- x5 <= 0.02\n",
"| | | | | | |--- x5 <= 0.02\n",
"| | | | | | | |--- class: 0\n",
"| | | | | | |--- x5 > 0.02\n",
"| | | | | | | |--- class: 1\n",
"| | | | | |--- x5 > 0.02\n",
"| | | | | | |--- class: 0\n",
"| |--- x14 > 3.44\n",
"| | |--- x5 <= 0.09\n",
"| | | |--- x54 <= 1165.84\n",
"| | | | |--- x37 <= 0.14\n",
"| | | | | |--- class: 0\n",
"| | | | |--- x37 > 0.14\n",
"| | | | | |--- x41 <= 2.36\n",
"| | | | | | |--- class: 0\n",
"| | | | | |--- x41 > 2.36\n",
"| | | | | | |--- x80 <= 10.34\n",
"| | | | | | | |--- class: 0\n",
"| | | | | | |--- x80 > 10.34\n",
"| | | | | | | |--- class: 1\n",
"| | | |--- x54 > 1165.84\n",
"| | | | |--- class: 0\n",
"| | |--- x5 > 0.09\n",
"| | | |--- x70 <= 16.37\n",
"| | | | |--- x23 <= 0.08\n",
"| | | | | |--- class: 1\n",
"| | | | |--- x23 > 0.08\n",
"| | | | | |--- x54 <= 150.56\n",
"| | | | | | |--- x10 <= 0.04\n",
"| | | | | | | |--- class: 0\n",
"| | | | | | |--- x10 > 0.04\n",
"| | | | | | | |--- class: 1\n",
"| | | | | |--- x54 > 150.56\n",
"| | | | | | |--- class: 0\n",
"| | | |--- x70 > 16.37\n",
"| | | | |--- x54 <= 911.20\n",
"| | | | | |--- x41 <= 4.52\n",
"| | | | | | |--- class: 1\n",
"| | | | | |--- x41 > 4.52\n",
"| | | | | | |--- class: 0\n",
"| | | | |--- x54 > 911.20\n",
"| | | | | |--- x25 <= 2874.98\n",
"| | | | | | |--- class: 0\n",
"| | | | | |--- x25 > 2874.98\n",
"| | | | | | |--- class: 1\n",
"\n"
]
}
],
"source": [
"rules = tree.export_text(\n",
" fitted_model,\n",
" feature_names=X_train.columns.values.tolist(),\n",
")\n",
"print(rules)"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [],
"source": [
"import pickle\n",
"\n",
"pickle.dump(fitted_model, open(\"data-distress/tree.model.sav\", \"wb\"))"
]
}
],
"metadata": {
"kernelspec": {
"display_name": ".venv",
"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.12.8"
}
},
"nbformat": 4,
"nbformat_minor": 2
}