diff --git a/your-code/main.ipynb b/your-code/main.ipynb
index f1794a8..b9be380 100644
--- a/your-code/main.ipynb
+++ b/your-code/main.ipynb
@@ -11,11 +11,16 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 170,
"metadata": {},
"outputs": [],
"source": [
- "import pandas as pd"
+ "import pandas as pd\n",
+ "from sklearn.model_selection import train_test_split\n",
+ "from sklearn.linear_model import LinearRegression\n",
+ "from sklearn import metrics\n",
+ "from sklearn.linear_model import LogisticRegression\n",
+ "import matplotlib.pyplot as plt"
]
},
{
@@ -27,7 +32,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 2,
"metadata": {},
"outputs": [],
"source": [
@@ -41,6 +46,386 @@
"data = pd.concat([X, y], axis=1)"
]
},
+ {
+ "cell_type": "code",
+ "execution_count": 4,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "
\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " CRIM | \n",
+ " ZN | \n",
+ " INDUS | \n",
+ " CHAS | \n",
+ " NOX | \n",
+ " RM | \n",
+ " AGE | \n",
+ " DIS | \n",
+ " RAD | \n",
+ " TAX | \n",
+ " PTRATIO | \n",
+ " B | \n",
+ " LSTAT | \n",
+ " MEDV | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 0.00632 | \n",
+ " 18.0 | \n",
+ " 2.31 | \n",
+ " 0.0 | \n",
+ " 0.538 | \n",
+ " 6.575 | \n",
+ " 65.2 | \n",
+ " 4.0900 | \n",
+ " 1.0 | \n",
+ " 296.0 | \n",
+ " 15.3 | \n",
+ " 396.90 | \n",
+ " 4.98 | \n",
+ " 24.0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 0.02731 | \n",
+ " 0.0 | \n",
+ " 7.07 | \n",
+ " 0.0 | \n",
+ " 0.469 | \n",
+ " 6.421 | \n",
+ " 78.9 | \n",
+ " 4.9671 | \n",
+ " 2.0 | \n",
+ " 242.0 | \n",
+ " 17.8 | \n",
+ " 396.90 | \n",
+ " 9.14 | \n",
+ " 21.6 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 0.02729 | \n",
+ " 0.0 | \n",
+ " 7.07 | \n",
+ " 0.0 | \n",
+ " 0.469 | \n",
+ " 7.185 | \n",
+ " 61.1 | \n",
+ " 4.9671 | \n",
+ " 2.0 | \n",
+ " 242.0 | \n",
+ " 17.8 | \n",
+ " 392.83 | \n",
+ " 4.03 | \n",
+ " 34.7 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 0.03237 | \n",
+ " 0.0 | \n",
+ " 2.18 | \n",
+ " 0.0 | \n",
+ " 0.458 | \n",
+ " 6.998 | \n",
+ " 45.8 | \n",
+ " 6.0622 | \n",
+ " 3.0 | \n",
+ " 222.0 | \n",
+ " 18.7 | \n",
+ " 394.63 | \n",
+ " 2.94 | \n",
+ " 33.4 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 0.06905 | \n",
+ " 0.0 | \n",
+ " 2.18 | \n",
+ " 0.0 | \n",
+ " 0.458 | \n",
+ " 7.147 | \n",
+ " 54.2 | \n",
+ " 6.0622 | \n",
+ " 3.0 | \n",
+ " 222.0 | \n",
+ " 18.7 | \n",
+ " 396.90 | \n",
+ " 5.33 | \n",
+ " 36.2 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX \\\n",
+ "0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 \n",
+ "1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 \n",
+ "2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 \n",
+ "3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 \n",
+ "4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 \n",
+ "\n",
+ " PTRATIO B LSTAT MEDV \n",
+ "0 15.3 396.90 4.98 24.0 \n",
+ "1 17.8 396.90 9.14 21.6 \n",
+ "2 17.8 392.83 4.03 34.7 \n",
+ "3 18.7 394.63 2.94 33.4 \n",
+ "4 18.7 396.90 5.33 36.2 "
+ ]
+ },
+ "execution_count": 4,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 6,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " CRIM | \n",
+ " ZN | \n",
+ " INDUS | \n",
+ " CHAS | \n",
+ " NOX | \n",
+ " RM | \n",
+ " AGE | \n",
+ " DIS | \n",
+ " RAD | \n",
+ " TAX | \n",
+ " PTRATIO | \n",
+ " B | \n",
+ " LSTAT | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 0.00632 | \n",
+ " 18.0 | \n",
+ " 2.31 | \n",
+ " 0.0 | \n",
+ " 0.538 | \n",
+ " 6.575 | \n",
+ " 65.2 | \n",
+ " 4.0900 | \n",
+ " 1.0 | \n",
+ " 296.0 | \n",
+ " 15.3 | \n",
+ " 396.90 | \n",
+ " 4.98 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 0.02731 | \n",
+ " 0.0 | \n",
+ " 7.07 | \n",
+ " 0.0 | \n",
+ " 0.469 | \n",
+ " 6.421 | \n",
+ " 78.9 | \n",
+ " 4.9671 | \n",
+ " 2.0 | \n",
+ " 242.0 | \n",
+ " 17.8 | \n",
+ " 396.90 | \n",
+ " 9.14 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 0.02729 | \n",
+ " 0.0 | \n",
+ " 7.07 | \n",
+ " 0.0 | \n",
+ " 0.469 | \n",
+ " 7.185 | \n",
+ " 61.1 | \n",
+ " 4.9671 | \n",
+ " 2.0 | \n",
+ " 242.0 | \n",
+ " 17.8 | \n",
+ " 392.83 | \n",
+ " 4.03 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 0.03237 | \n",
+ " 0.0 | \n",
+ " 2.18 | \n",
+ " 0.0 | \n",
+ " 0.458 | \n",
+ " 6.998 | \n",
+ " 45.8 | \n",
+ " 6.0622 | \n",
+ " 3.0 | \n",
+ " 222.0 | \n",
+ " 18.7 | \n",
+ " 394.63 | \n",
+ " 2.94 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 0.06905 | \n",
+ " 0.0 | \n",
+ " 2.18 | \n",
+ " 0.0 | \n",
+ " 0.458 | \n",
+ " 7.147 | \n",
+ " 54.2 | \n",
+ " 6.0622 | \n",
+ " 3.0 | \n",
+ " 222.0 | \n",
+ " 18.7 | \n",
+ " 396.90 | \n",
+ " 5.33 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX \\\n",
+ "0 0.00632 18.0 2.31 0.0 0.538 6.575 65.2 4.0900 1.0 296.0 \n",
+ "1 0.02731 0.0 7.07 0.0 0.469 6.421 78.9 4.9671 2.0 242.0 \n",
+ "2 0.02729 0.0 7.07 0.0 0.469 7.185 61.1 4.9671 2.0 242.0 \n",
+ "3 0.03237 0.0 2.18 0.0 0.458 6.998 45.8 6.0622 3.0 222.0 \n",
+ "4 0.06905 0.0 2.18 0.0 0.458 7.147 54.2 6.0622 3.0 222.0 \n",
+ "\n",
+ " PTRATIO B LSTAT \n",
+ "0 15.3 396.90 4.98 \n",
+ "1 17.8 396.90 9.14 \n",
+ "2 17.8 392.83 4.03 \n",
+ "3 18.7 394.63 2.94 \n",
+ "4 18.7 396.90 5.33 "
+ ]
+ },
+ "execution_count": 6,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "X.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 7,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " MEDV | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 24.0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 21.6 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 34.7 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 33.4 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 36.2 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " MEDV\n",
+ "0 24.0\n",
+ "1 21.6\n",
+ "2 34.7\n",
+ "3 33.4\n",
+ "4 36.2"
+ ]
+ },
+ "execution_count": 7,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y.head()"
+ ]
+ },
{
"cell_type": "markdown",
"metadata": {},
@@ -52,10 +437,12 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 10,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=666)"
+ ]
},
{
"cell_type": "markdown",
@@ -66,10 +453,318 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 13,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "lr = LinearRegression()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 14,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "LinearRegression()"
+ ]
+ },
+ "execution_count": 14,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "lr.fit(X_train, y_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 16,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " CRIM | \n",
+ " ZN | \n",
+ " INDUS | \n",
+ " CHAS | \n",
+ " NOX | \n",
+ " RM | \n",
+ " AGE | \n",
+ " DIS | \n",
+ " RAD | \n",
+ " TAX | \n",
+ " PTRATIO | \n",
+ " B | \n",
+ " LSTAT | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 307 | \n",
+ " 0.04932 | \n",
+ " 33.0 | \n",
+ " 2.18 | \n",
+ " 0.0 | \n",
+ " 0.472 | \n",
+ " 6.849 | \n",
+ " 70.3 | \n",
+ " 3.1827 | \n",
+ " 7.0 | \n",
+ " 222.0 | \n",
+ " 18.4 | \n",
+ " 396.90 | \n",
+ " 7.53 | \n",
+ "
\n",
+ " \n",
+ " | 321 | \n",
+ " 0.18159 | \n",
+ " 0.0 | \n",
+ " 7.38 | \n",
+ " 0.0 | \n",
+ " 0.493 | \n",
+ " 6.376 | \n",
+ " 54.3 | \n",
+ " 4.5404 | \n",
+ " 5.0 | \n",
+ " 287.0 | \n",
+ " 19.6 | \n",
+ " 396.90 | \n",
+ " 6.87 | \n",
+ "
\n",
+ " \n",
+ " | 118 | \n",
+ " 0.13058 | \n",
+ " 0.0 | \n",
+ " 10.01 | \n",
+ " 0.0 | \n",
+ " 0.547 | \n",
+ " 5.872 | \n",
+ " 73.1 | \n",
+ " 2.4775 | \n",
+ " 6.0 | \n",
+ " 432.0 | \n",
+ " 17.8 | \n",
+ " 338.63 | \n",
+ " 15.37 | \n",
+ "
\n",
+ " \n",
+ " | 494 | \n",
+ " 0.27957 | \n",
+ " 0.0 | \n",
+ " 9.69 | \n",
+ " 0.0 | \n",
+ " 0.585 | \n",
+ " 5.926 | \n",
+ " 42.6 | \n",
+ " 2.3817 | \n",
+ " 6.0 | \n",
+ " 391.0 | \n",
+ " 19.2 | \n",
+ " 396.90 | \n",
+ " 13.59 | \n",
+ "
\n",
+ " \n",
+ " | 55 | \n",
+ " 0.01311 | \n",
+ " 90.0 | \n",
+ " 1.22 | \n",
+ " 0.0 | \n",
+ " 0.403 | \n",
+ " 7.249 | \n",
+ " 21.9 | \n",
+ " 8.6966 | \n",
+ " 5.0 | \n",
+ " 226.0 | \n",
+ " 17.9 | \n",
+ " 395.93 | \n",
+ " 4.81 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " CRIM ZN INDUS CHAS NOX RM AGE DIS RAD TAX \\\n",
+ "307 0.04932 33.0 2.18 0.0 0.472 6.849 70.3 3.1827 7.0 222.0 \n",
+ "321 0.18159 0.0 7.38 0.0 0.493 6.376 54.3 4.5404 5.0 287.0 \n",
+ "118 0.13058 0.0 10.01 0.0 0.547 5.872 73.1 2.4775 6.0 432.0 \n",
+ "494 0.27957 0.0 9.69 0.0 0.585 5.926 42.6 2.3817 6.0 391.0 \n",
+ "55 0.01311 90.0 1.22 0.0 0.403 7.249 21.9 8.6966 5.0 226.0 \n",
+ "\n",
+ " PTRATIO B LSTAT \n",
+ "307 18.4 396.90 7.53 \n",
+ "321 19.6 396.90 6.87 \n",
+ "118 17.8 338.63 15.37 \n",
+ "494 19.2 396.90 13.59 \n",
+ "55 17.9 395.93 4.81 "
+ ]
+ },
+ "execution_count": 16,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "X_test.sample(5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 19,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "y_pred = lr.predict(X_test).round(1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 20,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[27.1],\n",
+ " [23. ],\n",
+ " [27. ],\n",
+ " [34.7],\n",
+ " [22.9],\n",
+ " [21.3],\n",
+ " [15.7],\n",
+ " [23.7],\n",
+ " [24.9],\n",
+ " [18.9]])"
+ ]
+ },
+ "execution_count": 20,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_pred[:10]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 21,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " MEDV | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 81 | \n",
+ " 23.9 | \n",
+ "
\n",
+ " \n",
+ " | 453 | \n",
+ " 17.8 | \n",
+ "
\n",
+ " \n",
+ " | 311 | \n",
+ " 22.1 | \n",
+ "
\n",
+ " \n",
+ " | 291 | \n",
+ " 37.3 | \n",
+ "
\n",
+ " \n",
+ " | 360 | \n",
+ " 25.0 | \n",
+ "
\n",
+ " \n",
+ " | 50 | \n",
+ " 19.7 | \n",
+ "
\n",
+ " \n",
+ " | 127 | \n",
+ " 16.2 | \n",
+ "
\n",
+ " \n",
+ " | 35 | \n",
+ " 18.9 | \n",
+ "
\n",
+ " \n",
+ " | 252 | \n",
+ " 29.6 | \n",
+ "
\n",
+ " \n",
+ " | 442 | \n",
+ " 18.4 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " MEDV\n",
+ "81 23.9\n",
+ "453 17.8\n",
+ "311 22.1\n",
+ "291 37.3\n",
+ "360 25.0\n",
+ "50 19.7\n",
+ "127 16.2\n",
+ "35 18.9\n",
+ "252 29.6\n",
+ "442 18.4"
+ ]
+ },
+ "execution_count": 21,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_test[:10]"
+ ]
},
{
"cell_type": "markdown",
@@ -80,10 +775,187 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 23,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.633"
+ ]
+ },
+ "execution_count": 23,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "metrics.r2_score(y_test, y_pred).round(3)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 24,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "y_pred_fake = lr.predict(X_train).round(1)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 25,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([[27. ],\n",
+ " [13.4],\n",
+ " [17. ],\n",
+ " [22.6],\n",
+ " [15.6],\n",
+ " [25.3],\n",
+ " [22.9],\n",
+ " [23.5],\n",
+ " [36.2],\n",
+ " [22.1]])"
+ ]
+ },
+ "execution_count": 25,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_pred_fake[:10]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 26,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " MEDV | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 287 | \n",
+ " 23.2 | \n",
+ "
\n",
+ " \n",
+ " | 466 | \n",
+ " 19.0 | \n",
+ "
\n",
+ " \n",
+ " | 17 | \n",
+ " 17.5 | \n",
+ "
\n",
+ " \n",
+ " | 184 | \n",
+ " 26.4 | \n",
+ "
\n",
+ " \n",
+ " | 18 | \n",
+ " 20.2 | \n",
+ "
\n",
+ " \n",
+ " | 218 | \n",
+ " 21.5 | \n",
+ "
\n",
+ " \n",
+ " | 44 | \n",
+ " 21.2 | \n",
+ "
\n",
+ " \n",
+ " | 312 | \n",
+ " 19.4 | \n",
+ "
\n",
+ " \n",
+ " | 97 | \n",
+ " 38.7 | \n",
+ "
\n",
+ " \n",
+ " | 479 | \n",
+ " 21.4 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " MEDV\n",
+ "287 23.2\n",
+ "466 19.0\n",
+ "17 17.5\n",
+ "184 26.4\n",
+ "18 20.2\n",
+ "218 21.5\n",
+ "44 21.2\n",
+ "312 19.4\n",
+ "97 38.7\n",
+ "479 21.4"
+ ]
+ },
+ "execution_count": 26,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_train[:10]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 27,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.761"
+ ]
+ },
+ "execution_count": 27,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "metrics.r2_score(y_train, y_pred_fake).round(3)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 28,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# the train one is like 10% more accurate than the test, still pretty shitty tho"
+ ]
},
{
"cell_type": "markdown",
@@ -94,10 +966,45 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 30,
"metadata": {},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "27.24"
+ ]
+ },
+ "execution_count": 30,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "metrics.mean_squared_error(y_test, y_pred).round(3)\n",
+ "# test"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 33,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "20.802"
+ ]
+ },
+ "execution_count": 33,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "metrics.mean_squared_error(y_train, y_pred_fake).round(3)\n",
+ "# train"
+ ]
},
{
"cell_type": "markdown",
@@ -108,10 +1015,45 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 34,
"metadata": {},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "3.629"
+ ]
+ },
+ "execution_count": 34,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "metrics.mean_absolute_error(y_test, y_pred).round(3)\n",
+ "# test"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 35,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "3.216"
+ ]
+ },
+ "execution_count": 35,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "metrics.mean_absolute_error(y_train, y_pred_fake).round(3)\n",
+ "# train"
+ ]
},
{
"cell_type": "markdown",
@@ -122,7 +1064,7 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 76,
"metadata": {},
"outputs": [],
"source": [
@@ -136,6 +1078,291 @@
"data = pd.concat([X, y], axis=1)"
]
},
+ {
+ "cell_type": "code",
+ "execution_count": 77,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " sepal length (cm) | \n",
+ " sepal width (cm) | \n",
+ " petal length (cm) | \n",
+ " petal width (cm) | \n",
+ " class | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 5.1 | \n",
+ " 3.5 | \n",
+ " 1.4 | \n",
+ " 0.2 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 4.9 | \n",
+ " 3.0 | \n",
+ " 1.4 | \n",
+ " 0.2 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 4.7 | \n",
+ " 3.2 | \n",
+ " 1.3 | \n",
+ " 0.2 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 4.6 | \n",
+ " 3.1 | \n",
+ " 1.5 | \n",
+ " 0.2 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 5.0 | \n",
+ " 3.6 | \n",
+ " 1.4 | \n",
+ " 0.2 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) \\\n",
+ "0 5.1 3.5 1.4 0.2 \n",
+ "1 4.9 3.0 1.4 0.2 \n",
+ "2 4.7 3.2 1.3 0.2 \n",
+ "3 4.6 3.1 1.5 0.2 \n",
+ "4 5.0 3.6 1.4 0.2 \n",
+ "\n",
+ " class \n",
+ "0 0 \n",
+ "1 0 \n",
+ "2 0 \n",
+ "3 0 \n",
+ "4 0 "
+ ]
+ },
+ "execution_count": 77,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "data.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 78,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " sepal length (cm) | \n",
+ " sepal width (cm) | \n",
+ " petal length (cm) | \n",
+ " petal width (cm) | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 5.1 | \n",
+ " 3.5 | \n",
+ " 1.4 | \n",
+ " 0.2 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 4.9 | \n",
+ " 3.0 | \n",
+ " 1.4 | \n",
+ " 0.2 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 4.7 | \n",
+ " 3.2 | \n",
+ " 1.3 | \n",
+ " 0.2 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 4.6 | \n",
+ " 3.1 | \n",
+ " 1.5 | \n",
+ " 0.2 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 5.0 | \n",
+ " 3.6 | \n",
+ " 1.4 | \n",
+ " 0.2 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm)\n",
+ "0 5.1 3.5 1.4 0.2\n",
+ "1 4.9 3.0 1.4 0.2\n",
+ "2 4.7 3.2 1.3 0.2\n",
+ "3 4.6 3.1 1.5 0.2\n",
+ "4 5.0 3.6 1.4 0.2"
+ ]
+ },
+ "execution_count": 78,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "X.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 79,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " class | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 4 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " class\n",
+ "0 0\n",
+ "1 0\n",
+ "2 0\n",
+ "3 0\n",
+ "4 0"
+ ]
+ },
+ "execution_count": 79,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 80,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([0, 1, 2])"
+ ]
+ },
+ "execution_count": 80,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y['class'].unique()"
+ ]
+ },
{
"cell_type": "markdown",
"metadata": {},
@@ -147,10 +1374,12 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 81,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=666)"
+ ]
},
{
"cell_type": "markdown",
@@ -161,10 +1390,111 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 82,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "log = LogisticRegression()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 83,
+ "metadata": {
+ "scrolled": true
+ },
+ "outputs": [
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "/home/jorge_solana/anaconda3/lib/python3.8/site-packages/sklearn/utils/validation.py:63: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n",
+ " return f(*args, **kwargs)\n",
+ "/home/jorge_solana/anaconda3/lib/python3.8/site-packages/sklearn/linear_model/_logistic.py:763: ConvergenceWarning: lbfgs failed to converge (status=1):\n",
+ "STOP: TOTAL NO. of ITERATIONS REACHED LIMIT.\n",
+ "\n",
+ "Increase the number of iterations (max_iter) or scale the data as shown in:\n",
+ " https://scikit-learn.org/stable/modules/preprocessing.html\n",
+ "Please also refer to the documentation for alternative solver options:\n",
+ " https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression\n",
+ " n_iter_i = _check_optimize_result(\n"
+ ]
+ },
+ {
+ "data": {
+ "text/plain": [
+ "LogisticRegression()"
+ ]
+ },
+ "execution_count": 83,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "log.fit(\n",
+ " X_train,\n",
+ " y_train\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 84,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "y_pred_fake = log.predict(X_train)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 85,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([0, 0, 1, 2, 1])"
+ ]
+ },
+ "execution_count": 85,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_pred_fake[:5]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 86,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "y_pred = log.predict(X_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 87,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "array([1, 2, 1, 2, 0])"
+ ]
+ },
+ "execution_count": 87,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "y_pred[:5]"
+ ]
},
{
"cell_type": "markdown",
@@ -175,10 +1505,332 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 110,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_final = X_test.join(y_test)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 111,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "df_final[\"class_pred\"] = y_pred"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 112,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " sepal length (cm) | \n",
+ " sepal width (cm) | \n",
+ " petal length (cm) | \n",
+ " petal width (cm) | \n",
+ " class | \n",
+ " class_pred | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 66 | \n",
+ " 5.6 | \n",
+ " 3.0 | \n",
+ " 4.5 | \n",
+ " 1.5 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 114 | \n",
+ " 5.8 | \n",
+ " 2.8 | \n",
+ " 5.1 | \n",
+ " 2.4 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 93 | \n",
+ " 5.0 | \n",
+ " 2.3 | \n",
+ " 3.3 | \n",
+ " 1.0 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " | 101 | \n",
+ " 5.8 | \n",
+ " 2.7 | \n",
+ " 5.1 | \n",
+ " 1.9 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | 3 | \n",
+ " 4.6 | \n",
+ " 3.1 | \n",
+ " 1.5 | \n",
+ " 0.2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) \\\n",
+ "66 5.6 3.0 4.5 1.5 \n",
+ "114 5.8 2.8 5.1 2.4 \n",
+ "93 5.0 2.3 3.3 1.0 \n",
+ "101 5.8 2.7 5.1 1.9 \n",
+ "3 4.6 3.1 1.5 0.2 \n",
+ "\n",
+ " class class_pred \n",
+ "66 1 1 \n",
+ "114 2 2 \n",
+ "93 1 1 \n",
+ "101 2 2 \n",
+ "3 0 0 "
+ ]
+ },
+ "execution_count": 112,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_final.head()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 115,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "df_final[\"correct\"] = df_final['class'] == df_final.class_pred"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 117,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " sepal length (cm) | \n",
+ " sepal width (cm) | \n",
+ " petal length (cm) | \n",
+ " petal width (cm) | \n",
+ " class | \n",
+ " class_pred | \n",
+ " correct | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 125 | \n",
+ " 7.2 | \n",
+ " 3.2 | \n",
+ " 6.0 | \n",
+ " 1.8 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " | 147 | \n",
+ " 6.5 | \n",
+ " 3.0 | \n",
+ " 5.2 | \n",
+ " 2.0 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " | 67 | \n",
+ " 5.8 | \n",
+ " 2.7 | \n",
+ " 4.1 | \n",
+ " 1.0 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " | 55 | \n",
+ " 5.7 | \n",
+ " 2.8 | \n",
+ " 4.5 | \n",
+ " 1.3 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ " | 31 | \n",
+ " 5.4 | \n",
+ " 3.4 | \n",
+ " 1.5 | \n",
+ " 0.4 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " True | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ " sepal length (cm) sepal width (cm) petal length (cm) petal width (cm) \\\n",
+ "125 7.2 3.2 6.0 1.8 \n",
+ "147 6.5 3.0 5.2 2.0 \n",
+ "67 5.8 2.7 4.1 1.0 \n",
+ "55 5.7 2.8 4.5 1.3 \n",
+ "31 5.4 3.4 1.5 0.4 \n",
+ "\n",
+ " class class_pred correct \n",
+ "125 2 2 True \n",
+ "147 2 2 True \n",
+ "67 1 1 True \n",
+ "55 1 1 True \n",
+ "31 0 0 True "
+ ]
+ },
+ "execution_count": 117,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "df_final.sample(5)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 118,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "accuracy = df_final.correct.sum() / df_final.shape[0]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 119,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1.0"
+ ]
+ },
+ "execution_count": 119,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "accuracy"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 121,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sklearn.metrics import accuracy_score"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 122,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.975"
+ ]
+ },
+ "execution_count": 122,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "accuracy_score(y_train, log.predict(X_train))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 123,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1.0"
+ ]
+ },
+ "execution_count": 123,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "accuracy_score(y_test, log.predict(X_test))"
+ ]
},
{
"cell_type": "markdown",
@@ -189,10 +1841,52 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 125,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "from sklearn.metrics import balanced_accuracy_score"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 126,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1.0"
+ ]
+ },
+ "execution_count": 126,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "balanced_accuracy_score(y_test, log.predict(X_test))"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 127,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.9736842105263158"
+ ]
+ },
+ "execution_count": 127,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "balanced_accuracy_score(y_train, log.predict(X_train))"
+ ]
},
{
"cell_type": "markdown",
@@ -203,10 +1897,60 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 129,
"metadata": {},
"outputs": [],
- "source": []
+ "source": [
+ "from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score, fbeta_score"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 141,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1.0"
+ ]
+ },
+ "execution_count": 141,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "precision_score(\n",
+ " y_true = y_test,\n",
+ " y_pred = log.predict(X_test),\n",
+ " average = \"macro\"\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 142,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.9767441860465116"
+ ]
+ },
+ "execution_count": 142,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "precision_score(\n",
+ " y_true = y_train,\n",
+ " y_pred = log.predict(X_train),\n",
+ " average = \"macro\"\n",
+ ")"
+ ]
},
{
"cell_type": "markdown",
@@ -217,10 +1961,51 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 140,
"metadata": {},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1.0"
+ ]
+ },
+ "execution_count": 140,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "recall_score(\n",
+ " y_true=y_test,\n",
+ " y_pred= log.predict(X_test),\n",
+ " average = \"macro\"\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 143,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.9736842105263158"
+ ]
+ },
+ "execution_count": 143,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "recall_score(\n",
+ " y_true=y_train,\n",
+ " y_pred= log.predict(X_train),\n",
+ " average = \"macro\"\n",
+ ")"
+ ]
},
{
"cell_type": "markdown",
@@ -231,10 +2016,51 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 144,
"metadata": {},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "1.0"
+ ]
+ },
+ "execution_count": 144,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "f1_score(\n",
+ " y_true=y_test,\n",
+ " y_pred=log.predict(X_test),\n",
+ " average='macro'\n",
+ ")"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 145,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.9742531770919293"
+ ]
+ },
+ "execution_count": 145,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "f1_score(\n",
+ " y_true=y_train,\n",
+ " y_pred=log.predict(X_train),\n",
+ " average='macro'\n",
+ ")"
+ ]
},
{
"cell_type": "markdown",
@@ -245,17 +2071,157 @@
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 153,
"metadata": {},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | col_0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | class | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 8 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 0 | \n",
+ " 12 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 10 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "col_0 0 1 2\n",
+ "class \n",
+ "0 8 0 0\n",
+ "1 0 12 0\n",
+ "2 0 0 10"
+ ]
+ },
+ "execution_count": 153,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pd.crosstab(y_test['class'], log.predict(X_test))"
+ ]
},
{
"cell_type": "code",
- "execution_count": null,
+ "execution_count": 154,
"metadata": {},
- "outputs": [],
- "source": []
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | col_0 | \n",
+ " 0 | \n",
+ " 1 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " | class | \n",
+ " | \n",
+ " | \n",
+ " | \n",
+ "
\n",
+ " \n",
+ " \n",
+ " \n",
+ " | 0 | \n",
+ " 42 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ "
\n",
+ " \n",
+ " | 1 | \n",
+ " 0 | \n",
+ " 35 | \n",
+ " 3 | \n",
+ "
\n",
+ " \n",
+ " | 2 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 40 | \n",
+ "
\n",
+ " \n",
+ "
\n",
+ "
"
+ ],
+ "text/plain": [
+ "col_0 0 1 2\n",
+ "class \n",
+ "0 42 0 0\n",
+ "1 0 35 3\n",
+ "2 0 0 40"
+ ]
+ },
+ "execution_count": 154,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "pd.crosstab(y_train['class'], log.predict(X_train))"
+ ]
},
{
"cell_type": "markdown",
@@ -263,6 +2229,84 @@
"source": [
"## Bonus: For each of the data sets in this lab, try training with some of the other models you have learned about, recalculate the evaluation metrics, and compare to determine which models perform best on each data set."
]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 181,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.9733333333333334"
+ ]
+ },
+ "execution_count": 181,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "from sklearn.model_selection import cross_validate\n",
+ "from sklearn.tree import DecisionTreeClassifier\n",
+ "clf = DecisionTreeClassifier(random_state=666, max_depth=3)\n",
+ "cross_validate(clf, X, y, cv=5)['test_score'].mean()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 183,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "from sklearn import tree\n",
+ "iris = load_iris() \n",
+ "X, y = iris.data, iris.target\n",
+ "clf2 = tree.DecisionTreeClassifier()\n",
+ "clf2 = clf2.fit(X, y)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 184,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/plain": [
+ "0.9666666666666668"
+ ]
+ },
+ "execution_count": 184,
+ "metadata": {},
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "cross_validate(clf2, X, y, cv=5)['test_score'].mean()"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 186,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "image/png": "iVBORw0KGgoAAAANSUhEUgAAAV0AAADnCAYAAAC9roUQAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA4+0lEQVR4nO3de3zU1Z34/9eBBAeacktCIgQIYgW+lFUgSGDJys2IQvcLJtKu8mVLy1eKhZ+RoFIVilIUvhkgbgCXJTQICkRjW7O4SsBLwdJwx4CKrAsxhJABQi60ZphJOL8/JjPMQBJymXvez8djHsx8+FzOO+fMmfM5n/M5H6W1RgghhHe083UChBCiLZFKVwghvEgqXSGE8CKpdIUQwouk0hVCCC+SSlcIIbxIKl0hhPAiqXSFEMKLpNIVQggvkkpXCCG8KMTXCRDBp2PHjqVmsznK1+lwB4PBYKquro72dTpE8FAy94JwN6WUDpZypZRCa618nQ4RPKR7QQghvEgqXSGE8CLp0xU+k5WVxbhx43jzzTfp27cv0dHRhISEcODAAWJjYxk+fDg7duxg6dKlLtvV1tbSvn37evf53nvvcezYMcaNG8eECRMAOHr0KBs3buSNN95g2rRpJCUlMWPGDE+HJ0S9pKUrfGbmzJk888wzPPbYYwDExcUxceJEnnnmGUpKShg4cCBhYWGO9YuLi3n99ddJT08HID09nfT0dNauXetYJykpiV//+tecOXMGAKvVSkFBAf379wcgPDycv/3tb16KUIhbSaUrfKaqqoqwsDCuXLnistxoNDJ79uxb1k9NTaVXr16kpKQ0uE+r1cr69ev513/9VwCOHz9OSUkJ+/bt49KlS2RmZlJZWUl1dbVbYxGiqaR7QfhMZmYmGzZsYNWqVcTExADwxhtvcPHiRQ4ePMhDDz3ksn52djanTp0iIyODlJSUeivfJUuW0L59e44cOcL58+dJTk5mxIgRGI1G2rVrx4oVKygtLaVjx47eCFGIW8iQMeF2LRky9sknnwAwfvx4x7JTp05x5MgRnnjiCbemrzlkyJhwN+leEH5h/Pjx1NTUuCyLjIxk4MCBjW63evVqXnzxRcrKygD4/vvvWb58OdnZ2S7vT58+TXp6Oo8//rjHYhCiKaR7QfhUZmYmVquV4uJiunXrRocOHdi7dy/V1dXMmTOHs2fPMnz4cIqLi8nJyQEgNjaWqVOnAqC15sknn+Szzz4jKSmJ3bt3YzabsVqtLu/vueceoqKiCAmRIi98S1q6wqdMJhNz586lXbsbRXHSpEmEh4e3aH9Wq5Vx48ZRWFjo8h4gNzeXn/zkJ+5IthAtJj/7wqd69OjB+vXrqa2tdSxzroDtYmJi6r1wprVmw4YNLFiwgJycHMaOHcvy5csJCwtzeQ/w3Xff0bdvX4/FIkRTyIU04XbNuZB24sQJ8vLyGDBgAFOmTPFwyppPLqQJd5NKV7idTHgjRMOkT1cEBKPR2KLtnnvuOccFuGnTpvHWW29htVpZtGgRy5Ytc2cShWgS6dMVXpeZmcm1a9dITk4mOzsbi8VCREQExcXFmEwmunbtSmJiIlu3bmXUqFH06tULsN1dlpubS5cuXYiKiqK8vJzp06cTHh5Ofn4++fn5AIwZM4a4uDgAnnrqKQ4fPgzcuAX4iy++4OGHH6awsJCysrIWX7QToiWkpSu8rk+fPly9ehWz2YxSyjG6YPbs2fTs2ZMlS5ZQUFBAdHQ0s2bNclSae/bsISYmBovFQr9+/aisrOT69etNPq7zLcBKSY+B8A1p6Qqvq6ysxGKxUFRURGhoKBaLBYCQkBBCQ0Pt/aiYTCZWr17NsGHDOHnyJBMmTGDnzp0MGjSI8vJyQkJCMJlMREZGEh8fT3x8/C3Hevfdd/nqq68YNWoUW7dupbS0lJEjR7J48WI6deokrVzhdXIhTbiduy6kGY1GFi5c6IYUtZxcSBPuJpWucDsZvSBEw6RPV3hdS0cipKSkUFpayvz580lPT8dsNt8y94Jda9YxGo2OfmQh3E0qXeExRqORmpoa1q1bx/bt25k/f75jAnF7xWs0GsnOzmblypXk5uYCtnl27ROUb9myxbG/mJgYoqOjiYyMpLKy0tH3a597wVlr1rGPfBDCE6TSFR4TFRVFdnY2Y8eOpaqqCoPB4Hiig11tbS35+flERUVRWVnZpP0uWbKEhx56yDEdpJ3VanXLOkJ4klS6wmMmT57Mpk2bGDx4MKWlpWitHUO8unfv7hjCNXLkSCoqKhyP1OncubNjkvKZM2fest+MjAy2bt3Kvffe65h74YEHHiAjI8Mt6wjhSXIhTbidpy6krV27luTkZKKjo+v9/8uXLxMREdHoPpqyzubNm0lISKB///5yIU24nVS6wu1k9IIQDZObI4TbGQwGk1IqytfpcAeDwWDydRpEcJGWrvALynZf7p+Ab7TWz7lxvz8FXgaGa63/7q79CtFSUukKv6CUmgPMAUZpra+5ed9vAtVa61+5c79CtIRUusLnlFIDgX3AP2mtv/bA/jsDx4AFWuv33b1/IZpDKl3hU0qpDsBfgY1a63/34HFGA38ASoDxWusKTx1LiMbIOF3ha68A54ENHj5OJFAF/K+6lxA+IZWu8AmlVAel1Djg/wC/9MIYs/8CXsdW5sd7+FhCNEi6F4TX1Y1UKAGswJNa64+8eOwQoDZoBhKLgCMtXeELdwI9AAX8gzcPrLWukQpX+JLcHCF8YSBwDfgdsMnHaRHCq6R7QQS0jh07lprN5oC++81gMJiqq6vrn1BCBB2pdEVAC4Z5HmR+h7ZF+nSFEMKLpNJtozp27FiqlNKB9urYsWNpc2PNysqisLCQl19+mc2bN/PRRx/xxRdfsGbNGt5++21OnTrF0qVLb9mutra2wX3u37+fGTNmOD5///33pKenM3nyZK5evcq0adN46623mptU0QbIhbQ2ymw2RwXiaXlLZi+bOXMmycnJLF++nIMHDxIXF0dERATvvfceERERDBw4kLCwMMf6xcXFvPfee9TU1JCamkp6ejpge0T8vHnzABg9ejT79+93bNOpUydSUlK4evUqP/zhDwkPD3c8mkgIZ9LSFc2Sl5fn8rmsrIwjR440us3ND4b8+uuvWbp0KVlZWR5Lp7OqqirCwsK4cuWKy/JXXnmFqqqqW9ZPTU2lV69epKSkNOs4RUVFxMbGAjieilFdXd3SZIsgJS1dcVuZmZlYrVaKi4vp1q0bHTp0YO/evVRXVzNnzhzOnj3L8OHDKS4uJicnB4DY2FimTp0K4PLQx6SkJHbt2sXixYsdLUhvpH/Dhg2sWrWKmJgYAD766CMOHDjg+OwsOzubU6dOkZGR4Xhs0M2+/PJL9u3bx7Bhw7hy5QrJycnk5uYyY8YMysrK2LhxI6WlpXTs2NHT4YkAI5WuuC2TycSLL77I4sWLHcsmTZrE3r17fZiqpnv22WcBWLx4MZ988gkFBQVMmjSJSZMmAXDq1CnuvPNOl20GDhzIwIEDG9zn4MGDef991wnL7F0PAIsWLXJX8kWQkUpX3FaPHj1Yv369y4Wldu1u7ZmKiYmpt1Vof+jjggULyMnJITExkWXLltG7d29PJrte48e7TruQl5dHYmKio4ItKyujsLCQ4cOHN7iP1atXU1ZWxoIFCwgPD+ezzz7jgw8+YPLkyYwdO9aTyRdBQMbptlHNGd964sQJ8vLyGDBgAFOmTPFwyhp385jWlozTvbm7JC4uzqW75PDhwyQnJzfYXbJq1SqSk5M5fPgwSUlJHDhwgPfff5+xY8eSmJjY6phEcJMLaeK2hgwZQmpqqs8rXHcxmUzMnTvXpbU+adIkwsPDW7S/kSNH8uqrr/KXv/zFXUkUQUy6F4RbGI1GFi5c2Oztpk2bRlJSEj/96U9ZvHgxP/jBD1z6jj3B3d0ld911Fx9++CHdu3f3ZLJFkJDuhTaqsdPyzMxMrl27RnJyMtnZ2VgsFiIiIiguLsZkMtG1a1cSExPZunUro0aNolevXhQUFDBx4kRyc3Pp0qULUVFRlJeXM336dMLDw8nPzyc/Px+AMWPGEBcXB8Ds2bOJi4sjLi6Ov//97xQWFjJlypQGW53u6F7wp+4SkO6Ftka6F8Qt+vTpw9WrVzGbzSilKCwsBGwVZM+ePVmyZAkFBQVER0cza9YsDh8+DMCePXuIiYnBYrHQr18/KisruX79eqPHch7Paptm1/OCrbtEBBapdMUtKisrsVgsFBUVERoaisViAWx3ZIWGhtpbZphMJlavXs2wYcMAmDBhAufPn6dfv36Ul5cTEhKCyWQCID4+3jHm1d7KLSsrY8WKFVy4cIGRI0fywQcfUFhY2OK+VXcwGo0t2u65554jJycHq9XKokWLWLZsmct7Ieyke6GNcsfsXC3tx22N5nQveLObpLCwkMOHDxMbG+voJhk4cCBms7nZXSYiuElLV7SYtyvc5vJmN4kz524Sb3WZiMAhla4IWt7qJgF49913+eCDD7jnnnsc3SRDhw71iy4T4We01vJqgy9b1jcsLS2t0f9vyNNPP60vXLig582bp9esWaOrq6v1qlWr9AsvvKAvX77ssm5TlqelpelDhw45/q8u3U2OoylaGqu73ByTvIL7JS3dNs5oNFJTU8O6devYvn078+fPd0xJaL+oZDQayc7OZuXKleTm5gK2mbvS09NJT09ny5Ytjv3FxMQQHR1NZGQklZWVjtakfcIbZ01Z7tya9BR/7yYRwUUq3TYuKiqK7Oxsxo4dS1VVFQaDgTNnzrisU1tbS35+PlFRUVRWVjZpv0uWLOGhhx7ik08+cVlutVrrXb+h5a3V0tEIKSkplJaW3jItpd38+fNJT0/HbDY3ex2j0ejoPxZtj1S6bdzkyZPZtGkTgwcPprS0FK2146JR9+7dHeNoR44cSUVFBf379wegc+fOjr7NmTNn3rLfjIwMtm7dyr333ovWtju4HnjgATIyMhzrNGV5Y5TTVSpPtdgbao03pSXf0DreaL0L/yW3Abdx3bt3d7RGf/vb3zqW33fffS3an8FgoLS0lPnz5zuWOZ++O1fQTVleWFhIQkKCyzGUUt2A/wM8aV/m3GL//PPPG22x33vvvU1usTuzWq2EhoYCtpZ8fn5+vS35261TH6XU/wY+0FrXNDthIqBIS7eNMhgMJqUU7n7Nnz+fO++8s8H/j4yMbNbyWbNmcffddzs+GwwGM3AWGAU4JrD1VIu9odZ4U1ryDa3TgOeBQqXUy0op7895KbxGbo4Qfk0p1QWYAcwBOgL/AWzWWl+q+3/tiTK8du1akpOTiY6Odiy7fPkyERERjW7XlHU2b95MQkKCo+K33xyhlBqCLc7Hgb8AG4APtdYNPyFTBBypdIXfqeurHYGtAnoU2I2tAvpUa339pnU9Uul6Uz132f0A+Cm27pNeQCawSWtd7KMkCjeSSlf4DaVUZ+AJbJVNF2yt2iyttamhbTp27FhqNpub/YRgf2IwGEzV1dXR9f2fUuo+bH+PnwH7sP347JLWb+CSSlf4nFIqDlurNhn4BFvFsufmVm1bppQKw1bxzgF6ABuB32utS3yaMNFsUukKn1BK/RD4F2yVSDg3KpELPk1YAFBKDcP2d5sOfIrtR2q3/EgFBql0hVcppYZyo8L4MzcqDDldbqa6H67Hsf09u3Hjh6vUpwkTjZJKV3hc3YUh+6lxNDcqh/M+TViQqLvwGIet7zcZ+Bjbj9nH0vr1P1LpCo9RSt2LraL9GfA5torgI2nVeo7Txcg5QBi2H7gsrfVFnyZMOEilK9xKKdUJ23CnOUAMN4Y7nfNpwtqYutbv/dwYdreLG8Pu5EvvQ1LpCrdQSv2YGwP7/4ptuNd/yW2tvqeU6sqNG0zu4MYNJpd9ma62Sipd0WJKqY7AY9i+zLHAJiBTa13ky3SJ+tW1fkdhy6//DXyIrfX7Z2n9eo9UuqLZlFL/C9tFmxnAIWxf3J3Sqg0cTpMGzQHaY2v9vqm1Lmt0Q9FqUul6WCDeMeV8h1Rd6+hpYAcwEduX9G7g99hatWd9llDRanX5+4/Y8vUnwE5sP6LXgR9orfOc1w/08uwPpNL1sECcG8B5LgClVAa2LoT2wDFsX8hcrbVnZh0XPqOUCgdmYquAQ7Hd+TZda/2h0zoBXZ79gVS6HhbIhVQp1QcoBGqAvVrrib5NmfAGpdSdwBFsY6ovaa2jnP4vYMuzr9NhJ5WuhzVUSLOyshg3bhxvvvkmffv2JTo6mpCQEA4cOEBsbCzDhw9nx44dLF261GW72tpa2rdv3+DxnnrqKX7xi18QFxdHRUUFr7zyCnfccQevvfYa06ZNIykpiRkzZtwuzc4tXYVt8pl2Wusrzf4DiICklIoGqrTW39+0vMFK1xtlWmvN4sWLqaio4OWXX2b27Nm3LdP+VunKkyN8ZObMmSQnJ7N8+XIOHjxIXFwcERERjB49mnXr1vHEE08QFhbmWL+4uJj33nuPmpoaUlNTSU9PB2yPE583zzaX9wcffMDo0aMd25w+fZpHHnmEP//5z5SVlREeHu54hE1T1X3DKlobrwgsLbmV2BtlGsBkMnHt2jU6d+7cojLta/LkCB+pqqoiLCyMK1dcG49Go5HZs2ffsn5qaiq9evUiJSWlwX2eOHGC/Px8Dh48CMCwYcM4duwYp0+fJiQkxPH0hOrqarfGIgR4p0x///33TJw4kccff5wvv/wyIMu0VLo+kpmZyYYNG/j000+xn6698cYbXLx40VHAnGVnZ/PjH//Y8TgY+yNm7C0CgEWLFpGcnMz9999PTk4O9uc2JiQkUFNTw4oVK7hw4QIdO3b0QoSirfFGmQ4JCWHPnj188MEH9O7dOyDLtPTpelhTLjzYH1w4fvx4x7JTp05x5MgRnnjiCY+mrz7+1gcm/EdTL6T5U5n2t/Isla6HNedqb15eHomJiY7PZWVlFBYWMnz48Aa3Wb16NWVlZSxYsIDw8HBKSkp46qmnyMzMpFOnTqxZs4a7776buLg4tm3bRkVFBatWrbpdmv2qkAr/4e3y/PXXX5OdnU3fvn2ZNWsW77zzDkVFRTz66KP853/+J6GhoTz11FO3S7NflWe5kOZjmZmZWK1WiouL6datGx06dGDv3r1UV1czZ84czp49y/DhwykuLiYnJweA2NhYpk6dCtieVvvkk0/y2WefkZSURM+ePR3/t3v3bsxmM1arlXbt2lFcXEzXrl19E6hoE9xdnnft2sXixYtJT0/nzJkzdO/enaKiIu666y5CQkL4+9//7sNoW0b6dH3MZDIxd+5c2rW7kRWTJk0iPDy81fu2Wq2MGzeOwsJCzp07x7PPPiuVrvAoT5bn/fv3c/LkSUf/8K9//Ws6derU6v16m7R0faxHjx6sX7+e2tobU8w6F1i7mJiYeq/yaq3ZsGEDCxYsICcnhwcffJC8vDyqq6t57LHHWL58OWFhYXTt2pWMjIyAuuAgAo+7y3NiYiLLli2jd+/ejrG4NTU1/PWvf+Xjjz/mjjvu8FgsniJ9uh52uz6wEydOkJeXx4ABA5gyZYoXU9Ywf+sDE/5DynPrSaXrYXLbpAgmUp5bT/p0A4jRaGzRdtOmTeOtt94C4OjRo8ydO9edyRKiRVpanp3L8Lp163j99dddujP8nfTp+khmZibXrl0jOTmZ7OxsLBYLERERFBcXYzKZ6Nq1K4mJiWzdupVRo0bRq1cvAI4fP05ubi5dunQhKiqK8vJypk+fTnh4OPn5+eTn5wMwZswY4uLiABy3SlqtVgoKCujfv7/P4hbByVvl2bkMV1RU8Pnnnzc6BM0fSUvXR/r06cPVq1cxm80opSgsLARg9uzZ9OzZkyVLllBQUEB0dDSzZs3i8OHDAOzZs4eYmBgsFgv9+vWjsrKS69cbf+Cr/VbJ/Px8SkpK2LdvH5cuXfJ0iKIN8VZ5Pn78uKMMW61WfvSjHzFkyBCOHj3qjTDdQlq6PlJZWYnFYqGoqIjQ0FAsFgtgm+wjNDTU3g+FyWRi9erVDBs2jJMnTzJhwgR27tzJoEGDKC8vJyQkBJPJRGRkJPHx8cTHx7scp6ysjI0bN1JaWkpCQgIJCQkYjUYiIyN9EbYIUt4qzyNGjGDEiBGOMmyxWPjwww9vmbnMn8mFNA9r7YUHo9HIwoUL3Zii2/O3Cw/Cf0h5bj2pdD1MrvaKYCLlufWkT1cIIbxIKl0faumQmZSUFEpLS1m9ejUvvvgiZWWuD3CtqqriwQcfBGDJkiU888wzt6wzf/580tPTMZvNGI1Gx4UNIVrDU2V627ZtvPTSS7ds51zWA6VMS6XrBUajkZqaGtatW8f27duZP3++Y7Z7eyE1Go1kZ2ezcuVKcnNzAVuBSk9PJz09nS1btjj2FxMTQ3R0tMvkIM7eeecdJk60Pc7sjjvuYMqUKbesExkZSWVlJUopx9AyIZrK22X68ccfr3feEOeyHihlWipdL4iKiiI7O5uxY8dSVVWFwWDgzJkzLuvU1taSn59PVFQUlZWVzT6G1Wp7OK/ZbOabb75h//79HDt2jJiYGD755BNCQ0Md64CtBfzQQw855j0Vojm8WaYbWn5zWQ+UMi2VrhdMnjyZTZs2MXjwYEpLS9FaO8Yidu/e3TGOduTIkVRUVDhuXujcubNjNv2ZM2fesl/75CAPPPCAY/Z9g8FAWloaCQkJDB06lPbt29OhQwcmTpzoWAcgIyODrVu3cu+993rhLyCCjTfLNMCuXbvYt28fp0+fbrCsB0yZ1lrLy4Mv25/YvTIyMvSFCxdcll26dOm22zW0TlZWlv72228dn+vS7PO/nbz87+WJ8qx188p0U8q6c5n2t/IsQ8Y8rGPHjqVmsznK1+loDoPBYKquro72dTqE/5Hy3HrSveBBSillNpsXAZeBZ4D2Wmvlby9gCFAA/AGI9KcCKvxLdXV1dDPK1XPA50CIm8ppKJAPPNOc7fytPEtL10OUUuHABuAe4Amt9QkfJ6lRSqk7gN8B/wL8Qmud5+MkiQCmlBoG7AJGaK0L3bjf/tgq3gla6wJ37debpKXrAUqpROALoBC4398rXACt9TWt9bPATCBTKfW6UkoeMyGaTSnVCdgGPO3OChdAa/0/wEJgW6CWT2npulFdIXgNeBSYpbX+2MdJahGlVDfg34EfY2ulH/dtikSgUErNAP4R+KHWeoaHjqGAHYBJa/3/eeIYniSVbivVFYD/CxwE3gK+BOZqra/4NGGtVBfXE8Aa4P9h6/P9b631mUY3FG2WUqorUAKUA1O11oc8eKxu2M4mf6W1/i9PHccTpNJtJaXUw8CbgAIWAG/pIPqjKqVigS1ANHBOaz3BtykS/qquW20XUAb81NNnekqpsdi6Me7TWl/05LHcSfp0W28L0B1oD+wMpgoXoK5PrgDoBYxXSj3q2xQJP3Ye2AT09UbXmtb6M2wNnt8rpZ5VSgVEfSYt3VZSSiUB/43t1Lva1+nxhLquhl5AApCntS67zSZCeIVS6n5srd1IYIjWusjHSbotqXSFEAFLKfUPQDYwEJiptd7q4yTdlt9VunLHi/8LlDxqa/kCbTNv6roVngX+pLX+xh379CS/q3RlZnr/Fyh51NbyBSRvAkFAdDwLIUSwkKcBCyH8TqB0kzhrapdJQLV0s7KyKCws5OWXX2bz5s189NFHfPHFF6xZs4a3336bU6dO1fso5tra2gb3uX//fmbMcL1xZt26dbz++uvU1tYybdo03nrrLXeHEnS8lTfO+SF50zT15c1nn33GihUr+MMf/tCivFm5ciXp6el8++23AFRUVLBgwQJ+85vfAK3PG7PZHKX9YBrG5rya+iMRUJXuzJkzeeaZZ3jssccAiIuL495776W8vJzr168zcOBAwsLCHOsXFxfz+uuvk56eDuB4TMjatWsd64wePZr77rvP8bmiooLPP//cMTt9eHi44zEkomHeyBtwzQ/Jm6apL2+OHDnCokWLOHv2bIvyJiIigqqqKtq1s1Uhp0+f5pFHHiEkJISysjLJm0YEVKVbVVVFWFgYV6643mH7yiuvUFVVdcv6qamp9OrVi5SUlCYfo6amhh/96EcMGTKEo0ePOmbAr64OyiG4buONvAFc8kPypmkaypuGNCVvfvnLX/Liiy/y9ttvAzBs2DCOHTvG6dOnCQkJ8Vne5OW5To5XVlbGkSNHGt3m5odhfv311yxdupSsrCyPpDGg+nQzMzPZsGEDq1atIiYmBoCPPvqIAwcOOD47y87O5tSpU2RkZDgeEXKzL7/8kn379jFs2DCuXLlCcnIyFouFDz/8kMWLF7NixQpKS0vp2DEgJzTyGm/kzbhx49i4cSOlpaV8//33vP7665I3TVBf3gwdOpTXXnuNe+6555b1m5I3f/rTnzh06BAJCQnk5OQwbdo0ABISEqipqfHq9yYzMxOr1UpxcTHdunWjQ4cO7N27l+rqaubMmcPZs2cZPnw4xcXF5OTkABAbG8vUqVMB29Nz7A/DTEpKYteuXSxevNjR0nc7X/eD3PyiiY8D+fjjj/XHH3/ssuzrr7/Wb731VpO2dyf87HEgnn7dLo/8JW/aWr7oIMqbptYDWmv9u9/9Tmut9UsvvaTT0tL0p59+qg8cOKDT0tL02bNn9bvvvqu11vrcuXN6zZo1es2aNfqPf/yjY3uj0agLCwt1Tk6O1lrrNWvW6JqaGm00Gt0ak/0VUN0LzsaPH09NTY3LssjISAYOHNjodrc7lXjnnXcwGo2UlJQwdepULl++7JkAgpi78gZu5Edj70XTBWPe9OjRg/Xr17tc+LP3NTuLiYlxtNztrVxwfRhmTk4OiYmJLFu2rN5HvrtDQHUvgGdPJc6cOUP37t0pKiqiZ8+eLhkjbs/deeOcHw29F00TzHkTHx9PXl4eo0ePZsqUKY7lcXFxjjgas3DhQsf75ORkgHpHc7hLwLV0TSYTc+fOdfklmzRpEuHh4a3e9/79+zl58iQHDx5s9b7aInfnjXN+NPReNE0w582QIUNITU11qXD9WcC1dJt7KnEz+6nEggULXE4levfu7RgTWlNTQ2VlJXl5eVRXVzN37lyPxRNM3J03zvnR0HvRNG05b4xGo0trtqmOHj3Kxo0bWbNmDZmZmZw/f57XXnut1ekJuLkXTpw4QV5eHgMGDPCbX7a2dh95Q3nkb3nT1vIFgidvGoojMzOTa9eukZycTHZ2NhaLhYiICIqLizGZTHTt2pXExES2bt3KqFGj6NWrFwUFBUycOJHc3Fy6dOlCVFQU5eXlTJ8+nfDwcPLz88nPzwdgzJgxxMXFYbVaefvtt7l8+TILFy7k448/Ztu2bWzatKnFMdkFXPdCc04lWtqZf/ToUebOnYvWmpdeeol58+a5XEAQ9WvJaV5L88j5rkFxe97KG7PZzNq1ax13prlbnz59uHr1KmazGaUUhYWFAMyePZuePXuyZMkSCgoKiI6OZtasWRw+fBiAPXv2EBMTg8VioV+/flRWVnL9+vUGj3P8+HFKSkrYt28fly5dYsKECcTHxztummqNgOleaMkvHNj+eM39hSsoKKB///6ArS/s2rVrdO7c2WexBwpv5ZH9rsHhw4f7MtyA4q28MRgMDBo0iGPHjnkkjsrKSiwWC0VFRYSGhmKxWAAICQkhNDTU3trEZDKxevVqhg0bxsmTJ5kwYQI7d+5k0KBBlJeXExISgslkIjIykvj4eOLj412OM2LECEaMGIHRaMRqtfLqq69y7tw5Zs+e3eoYAqbS7dOnD0ePHnX5hYuIiGD27NlkZWWxcOFC/uM//sPxC/fqq6/SoUMHxy9cWVkZ/fr1o7CwsEm/cAcOHOCxxx5j4sSJdOnShS+//PKWW1KFK2/l0c13DY4YMcKLUQYmb+UNwIQJEzhz5gxWq5XQ0FC3xmG/lRlsN2I4s/fbzps3D6PRyIIFCwDbBUOw3RBiZ192O/Z9vvDCCy1P9E0CptL1xS9cdHQ0e/bswWAwsGzZMl+EHVC8lUcRERGOuwY9ObQnmHgrb0pKSti8ebPbWoUt1ZILZ17TlDsovPmiGXei1CctLa1V27cEbezOp0DJo7aWLzqI8qaxOFqaxqefflpfuHBBr1q1Sr/wwgv68uXLLv/f0PLKyko9ceJErbXW27dv188995w+f/68TktL04cOHWpyTPZXwF1Iux2//oUTgOSRP/OnvDEajdTU1LBu3Tq2b9/O/PnzHTOX2S/yGY1GsrOzWblyJbm5uYBtgh/7zGhbtmxx7C8mJobo6Gi0vnGjh7OGlr/zzjtMnDgRsN1wcf78edq3b++4+aK5gq7SFUIEh6ioKLKzsxk7dixVVVUYDAbOnDnjsk5tbS35+flERUVRWVnZ7GM0NBrBvtxsNvPNN9+wf/9+jh07xt13301KSgrfffdd8wOqE3CVbkuHGKWkpFBaWlrvPeRg+3V88MEHAdiyZQu/+tWv2L17t8s627Zt46WXXnKkwz4cRdzgqfxJT09n3rx5XLx40WW5c75JnjTOU3nj/L1w5pxnLcmbyZMns2nTJgYPHkxpaSlaa8dFvO7duzumjxw5ciQVFRWOEUedO3d2zLEwc+bMW/ar9Y25FjIyMhpdbjAYSEtLIyEhgaFDh5KWlkZmZibR0a14pmZT+iC8+aKuLyctLU1brVa9du1avW3bNj1v3jx99epVnZaW5ujTSUtL0zt27NArVqzQ77//vqP/xT6T0Jtvvunob7Fvc/OMQnYbN27UK1ascHx+7bXXtMVi0Tez7+fTTz919OfQxvoOAa/nj9a2/rRTp065LHPON+c8aYv54su8aaif1Z5nzc0bWtk3XZ+MjAx94cIFl2WXLl2qd92GljvLysrS3377reNzU8ub37Z0vXlqcfMphH3foaGhbhkMHYy8fep37tw5SkpKGDBgQKP5JvzjtBxc86y5DAaDSSmFO1/z58/nzjvvdFkWGRlZ77oNLXd+zZo1i7vvvtvx2WAwmJoSm99Wut48tbj5FOLo0aOOMX3Opx+7du1i3759nD592tPh+z1vn/rNmTMHsH2RG8o3YePtvHH+XjSUZ81VXV0drbVWgfRqykMpHX9If3rhgdMKrZt3atGUdZxPLWhjp7GeyCN3nPq19HQvmF6SN/7/8rsJb4L50cvBIlDyqK3lC0jeBAK/q3SbQynVDzgAJGqtj7thf+2A3cAnWuvlrd1fW6aU6gscAiZprY+6YX/tgI+Av2itX27t/toypVRv4DAwRWt9yA37U8B/AYe11otbu79gF7CVrlIqBPgM+IPWerUb9xsDHAF+orWWWbJbQCnVHvgU2Km1/n9u3G9P4CjwqNZ6v7v225bU5c0eYLfW+lU37jcaOAZM11rvc9d+g5HfXkhrgt8A1UC6O3eqtS4GngLeVkqFuXPfbcjzQA3g1gdlaa1LgF8BbymlZNq3lkkF2gMr3blTrXUp8H+BrUqpru7cd7AJyJauUioe+BMwrO6L6IljbALQWv/SE/sPVkqp+4H/BOK01s2/bN20Y2wADMAy4H90IBZiH1BKDQc+BEZorVt+S1Xjx1gHdNVaP+GJ/QeDgGvpKqV+CLwNzPVUhVvnaeCflFLJHjxGUKk7M3gbmOepCrfOc8BoILfuX3EbSqkfYMubpz1V4dZ5FhiqlJJKtwEBV+kC/4btQtcfPXkQrfXfgCeAdXX9vOL20oHPtdbvevg4dwGRwADgHz18rGCxCjiktd7uyYNorb8HHgfSlVKxnjxWoAqY+XTrTlvvwvYlG+aNY2qtDyql/g14Uym1CCjQWl/zxrEDiVJqBBALjAU8fpeC1vqYUmowtpab9O02QikVB/QBHgLu88YxtdbHlVIrsPW9PwOc1FpXe+PYgSBg+nSVUuex9ePN0lrnevG4nYC9wA+AZ7XWO7117EChlPoOCANme/oMRDSPUup/gC7YuuM8fQbifFwD8EndsX+rtc7x1rH9XUB0L9T14/YE7gAGefnwdwK9sZ3KjvPysf1e3Y9SH2w/iN7OG9EIpdQdQD+gE97Pmx7Yzn4GARO8fGy/FijdC6HYxgD+XGtd4M0Da63/Ryl1F5ABNH9mkOAXAhwHfqG1dtusM4FyZxX49d1VocAX2M5AjnjzwFrrIqVUf2z9/Fe8eWx/FzDdC6JtUUoFzEiwuueLKV+nQwSGgOheEEKIYNHk7oVAOt1z1tipXyDF1JRT2ECJx49Pxz0mmPImUGIB/yxrTe5eCKTTPWeNnfoFUkxNOYUNlHhaE0tWVhbjxo3jzTffpG/fvkRHRxMSEsKBAweIjY1l+PDh7Nix45ZHs9fW1tK+fft6j7Vy5UruuOMOpkyZwt133w3A0aNH2bhxI2+88QbTpk0jKSmJGTNmuD0efxNMsYB/dv0EyoU0IQCYOXMmycnJLF++nIMHDxIXF0dERASjR49m3bp1PPHEE4SF3Zgyo7i4mPfee4+amhpSU1NJT08HICQkhHnz5gEQERHB+fPnadfO1ttmtVopKChwTO4dHh7ueAqtEK3l8T7dvLw8l89lZWUcOdL4hdSbH4D39ddfs3TpUrKysjyWzqYKpngCMZaqqirCwsK4csX1grjRaGT27Nm3rJ+amkqvXr1ISUlpcJ+//OUvefHFF3n77bcBOH78OCUlJezbt49Lly45nrRQXe298f2BmDeNCbZ4WsMjLd3MzEysVivFxcV069aNDh06sHfvXqqrq5kzZw5nz55l+PDhFBcXk5NjGzMdGxvL1KlTAdfnzyclJbFr1y4WL17saKV4WzDFE+ixZGZmsmHDBlatWkVMjO3u7DfeeIOLFy9y8OBBHnroIZf1s7OzOXXqFBkZGY5H0dzsT3/6E4cOHSIhIYGcnBySk5MZMWIERqORdu3asWLFCkpLS+nYsaPHYwvkvAn2eNzFIy1dk8nE3LlzHadrAJMmTSI8PNwTh/O4YIon0GN59tln6dSpE4sXL6Zv374UFBQwd+5c1q5dy0MPPcSpU6e48847XbYZOHBgoy3dqVOnsnz5ciZNmkRy8o35jRYuXEh4eDiLFi3yyhc90PPmZsEWj7t4pKXbo0cP1q9fT21trWOZ8x/eLiYmpt4vg9a2B+AtWLCAnJwcEhMTWbZsGb179/ZEcm8rmOIJpljGjx9/y2lrZGQkAwcObHS71atXU1ZWxoIFCxwVwDvvvENRURELFy5s8L2nBVPeQPDF4y4eGb1w4sQJ8vLyGDBgAFOmTGlN+lrNHaMX/CEed11VDoZYbj5tjYuLczltPXz4MMnJyQ2etq5atYrk5GQOHz5MUlISZ86c4cyZMxw/fpxHH3203veNVbqSN/ULlHi8zSMt3SFDhjBkyBBP7NongimeYIjFZDLx4osvsnjxjcdxTZo0ib1797Zof/v37+fy5cscPHiQ6Ojoet97QzDkjbNgi8ddfHZHmtHYsie5HD16lLlz5/L999+Tnp7O5MmTuXr1qptT1zItjem5555ztMj8RUtiMZvNrF27lt/85jceSNENzT1tTUlJcbRy4cZp6wMPPEBOTg4zZswgJSWF+++/v8H3/iSYyhm0LJ5Lly6xcuVKUlNTPZAiz3JLSzczM5Nr166RnJxMdnY2FouFiIgIiouLMZlMdO3alcTERLZu3cqoUaPo1asXYBuak5ubS5cuXYiKiqK8vJzp06cTHh5Ofn4++fn5AIwZM4a4uDiX8ZOdOnUiJSWFq1ev8sMf/tAdYfgkJoCnnnqKw4cPuz0Gb8diMBgYNGgQx465bd6besXHx5OXl8fo0aNdTlvtf8/Y2NhGt3fuKrj5wtnt3rtbMJUzb8YTGRnJ888/z8svB96Dod3S0u3Tpw9Xr17FbDajlKKwsBCA2bNn07NnT5YsWUJBQQHR0dHMmjXLkfF79uwhJiYGi8VCv379qKys5Pr16w0e5+bxk0VFRbf9gvl7TN7gzVgmTJhAfHw8VqvVY/EMGTKE1NRUn18vcIdgKmfg3Xh2797NiBEjPB2S27mlpVtZWYnFYqGoqIjQ0FAsFott5yEhhIaG2juzMZlMrF69mmHDhnHy5EkmTJjAzp07GTRoEOXl5YSEhGAymYiMjCQ+Pp74+HiX44wYMcIxfjIyMpK1a9c2eGtmoMQE8O677/LVV1/xyCOP0KlTp4CNpaSkhM2bN3Pu3Ll6b1TwJaPR2OwWq9lsJjMzk/Pnz/Paa695JF3BVM68GY/JZGLlypVMmTKFhx9+GKX86lpZo7w690JLCn5reXruBW/F5I174gMllpacwhYUFDBx4sRmn5J//PHHbNu2jU2bNnksnqYIlLxpKn+Kx9u8eiHN2xWuNwRTTIESS7B1lzRFoORNUwVbPM3htkq3pVdUU1JSKC0tveU+a7uqqioefPBBALZs2cKvfvUrdu/e7bKO87ZGo9FtFws8FVNDy7dt28ZLL73kOLa7L3p4O54dO3bw/PPPU1JS4tZ4WnIKC7YK9Pz58/Tr18/lFBZsF+fsIx3srdySkhJeffVVjh49SkiIZ+eG8lTeOJcpZ576zoD3y1l6ejrz5s3j4sWLHvneuFuzS5LRaCQlJYUNGzbQvXt39u/f7+jvsp8yGI1GevfuTWFhIYMGDeKf//mfqaqq4ve//z0A3bt3Z+bMmYBtWE90dPQt91nbvfPOO0ycOBGwzTBVUlLC2LFjXdLkvK39C+PPMTW0/PHHH3cU2JbE4W/xxMXFsXPnTtq3b9+qeG722GOPOd4nJCS4/J+9BTVv3jyMRiMLFiwAbON4AYYOvfGwYvuyhvTs2ZMXXnjBLWm283beOJcpZ639zvgiloaWp6SksGPHDsrLy91azjyl2S3dqKgosrOzGTt2LFVVVRgMBs6cOeOyTm1tLfn5+URFRVFZ2fzHitlP5cxmM9988w379+93DEOqra0lNDTUrad73oypqctbw1/iufvuu0lJSeG7775r9v7dwR9PYf0lb9zBX2I5d+4cJSUlDBgwoNn794VmV7qTJ09m06ZNDB48mNLSUrTWjn6x7t27O6bBGzlyJBUVFY45STt37uw4fbP/sjlzHrCekZEBgMFgIC0tjYSEBIYOHcrRo0cdLRX7Ojdv2xLejKmx5bt27WLfvn2cPn26RXH4WzxpaWlkZmYSHe3+ifs9dQrrfKrqzF1dP97OG+cy5c7vjC9iaWj5nDlzAFvlGxC01k162VZ1v4yMDH3hwgWXZZcuXbrtdg2tk5WVpb/99lvH57p0+21M7ohDB1g8zYklLS1NW61WvXbtWr1t2zY9b948ffXqVZ2WlqbT0tIc6+zYsUOvWLFCv//++1prrSsrK/WaNWv0mjVr9JtvvulIh30bo9GoCwsLdU5Ozi1p3b59uz516tQty+3bfvrpp/rQoUOO5W01b9zNV98bb798/uQI++z9ziIiIm67XUPr/PznP29tklqtOTH5cxx2vozH+RT2888/b/QU9t57723xKWxoaChw41T1Zz/7mctyfxVMZS2YYmlMk7sXDAaDSSlFoL0MBoMpGGJqLI5Ai6cpsdh5+xTW+VTVnV0/wZQ3gRJLc8uatzT55gghvEl56OGHa9euJTk52aWf+fLly/W2nBpavnnzZhISEhwVvFL+NwBf+C+pdIVf8lSl6wlS6Yrm8HmfrhD1qTuFjfJ1OprCH09hhf+Slq4IWEopA3AA+DetdcOTIzR/v08D/wIkaK19e/+vCDpS6YqApZRaDfQFkt3ZF6GUagd8CORrrX/rrv0KAVLpigCllHoQ+D1wn9a67Hbrt2D/dwLHgEe11vvdvX/RdvnscT1CtJRSKgLIAn7uiQoXQGt9AZgDvKWU6uyJY4i2SVq6IqAopRTwR+C/tdbPeuF4/w500lrfOthXiBaQlq4IGEqpMGA2tn7cW+cr9IxU4H6l1L/UHV+IVpGWrggISqlw4AvAAPyT1vorLx57GPBR3ce+Wutqbx1bBB9p6YpA8WMgCrAC/+DlYw8FaoHuQGDMHyj8llS6IlD8GKgAfg5ke/nYv8d2Ua0KGOzlY4sgI90LQgjhRdLSFUIIL5K5F0SzdezYsdRsNvv9vAgGg8FUXV3d6GMrgikWERike0E0W6DMANaU2b+CKRYRGKR7QQghvEgqXeFxeXl5Lp/Lyso4cuRIo9vc/ODIr7/+mqVLl5KVleWxdDZVsMUjvEv6dIVHZGZmYrVaKS4uplu3bnTo0IG9e/dSXV3NnDlzOHv2LMOHD6e4uJicnBwAYmNjmTp1KmB7nM6TTz7JZ599RlJSErt27WLx4sWkp6dLPCKgSUtXeITJZGLu3Lm0a3ejiE2aNInw8HAfpqrlgi0e4TvS0hUe0aNHD9avX09tba1jmXOFZRcTE0NKSsoty+0PjlywYAE5OTkkJiaybNkyevfu7clkNyjY4hG+I6MXRLM15Yr/iRMnyMvLY8CAAUyZMsVLKXPlztELvo5HRi8ED6l0RbMF0zCrYIpFBAbp0xU+ZTQam73NpUuXWLlyJampqR5IUcu1JBaA5557znHxTQQ/6dMVbpOZmcm1a9dITk4mOzsbi8VCREQExcXFmEwmunbtSmJiIlu3bmXUqFH06tULgOPHj5Obm0uXLl2IioqivLyc6dOnEx4eTn5+Pvn5+QCMGTOGuLg4IiMjef7553n55ZcDPhaAp556isOHD3ssFuFfpKUr3KZPnz5cvXoVs9mMUorCwkIAZs+eTc+ePVmyZAkFBQVER0cza9YsR0WzZ88eYmJisFgs9OvXj8rKSq5fv97osXbv3s2IESOCIhbRtkhLV7hNZWUlFouFoqIiQkNDsVgsAISEhBAaGmrvl8RkMrF69WqGDRvGyZMnmTBhAjt37mTQoEGUl5cTEhKCyWQiMjKS+Ph44uPjXY5jMplYuXIlU6ZM4eGHH8b2BJ/AjAXg3Xff5auvvuKRRx6hU6dObo9F+Be5kCaarbUXn4xGIwsXLnRjiurnjQtp/hSLCAxS6YpmC6Yr/sEUiwgM0qcrhBBeJJWucKuWDptKSUmhtLT0lolh7NLT05k3bx4XL150We68vtFodPsoAE/F09Dybdu28dJLLzmOLaMago9UuqJFjEYjNTU1rFu3ju3btzN//nz+9re/Of7P/m92djYrV64kNzcXgKqqKtLT00lPT2fLli2O/cXExBAdHe0yMYyzlJQUxowZQ3l5ucty5/XtQ7ACIZ6Glj/++ON07doVoFXxCP8lla5okaioKLKzsxk7dixVVVUYDAbOnDnjsk5tbS35+flERUVRWVnZ7GNYrVbH+3PnzlFSUsKAAQNclruLt+NpynIRnKTSFS0yefJkNm3axODBgyktLUVr7RiP2r17dzIzM6msrGTkyJFUVFTQv39/ADp37kxKSgopKSnMnDnzlv3aJ4Z54IEHyMjIcCyfM2cOYKt8nZc7rx9I8TS0fNeuXezbt4/Tp0+3Kh7hx7TW8pJXs162YuNeGRkZ+sKFCy7LLl26VO+6DS3PysrS3377reNzXTq9HovW7o+nKbHIKzBeMmRMNFswPcwxmGIRgUEqXSGE8CLp0xVCCC+SSlcIIbxIKl0hhPAiqXSFEMKLpNIVQggvkkpXCCG8SCpdIYTwIql0hRDCi6TSFUIIL5JKVwghvEgqXSGE8CKpdIUQwouk0hVCCC/6/wFGW3rTYL+03gAAAABJRU5ErkJggg==\n",
+ "text/plain": [
+ ""
+ ]
+ },
+ "metadata": {
+ "needs_background": "light"
+ },
+ "output_type": "display_data"
+ }
+ ],
+ "source": [
+ "tree.plot_tree(clf2);"
+ ]
}
],
"metadata": {
@@ -281,7 +2325,7 @@
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
- "version": "3.7.2"
+ "version": "3.8.8"
}
},
"nbformat": 4,