Added preliminary analysis and decision tree model files.

This commit is contained in:
Petrus committed 2025-10-21 13:38:30 +02:00
1 parent 6b51a45a76
commit 448eb25e6f
4 files changed
+514 -7

No files matched your search

+364
View File
@@ -0,0 +1,364 @@
{
"cells": [
{
"cell_type": "markdown",
"id": "8b66d061",
"metadata": {},
"source": [
"### Creates a correlation matrix"
]
},
{
"cell_type": "code",
"execution_count": 28,
"id": "557ed2b5",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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 truncated
"text/plain": [
"<Figure size 800x600 with 2 Axes>"
]
},
"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>age</th>\n",
" <th>workclass</th>\n",
" <th>education.num</th>\n",
" <th>marital.status</th>\n",
" <th>occupation</th>\n",
" <th>relationship</th>\n",
" <th>race</th>\n",
" <th>sex</th>\n",
" <th>capital.gain</th>\n",
" <th>capital.loss</th>\n",
" <th>hours.per.week</th>\n",
" <th>native.country</th>\n",
" <th>income</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>82</td>\n",
" <td>2</td>\n",
" <td>9</td>\n",
" <td>6</td>\n",
" <td>3</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>4356</td>\n",
" <td>18</td>\n",
" <td>38</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>54</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>6</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3900</td>\n",
" <td>40</td>\n",
" <td>38</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>41</td>\n",
" <td>2</td>\n",
" <td>10</td>\n",
" <td>5</td>\n",
" <td>9</td>\n",
" <td>3</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3900</td>\n",
" <td>40</td>\n",
" <td>38</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>5</th>\n",
" <td>34</td>\n",
" <td>2</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" <td>7</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3770</td>\n",
" <td>45</td>\n",
" <td>38</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>6</th>\n",
" <td>38</td>\n",
" <td>2</td>\n",
" <td>6</td>\n",
" <td>5</td>\n",
" <td>0</td>\n",
" <td>4</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>3770</td>\n",
" <td>40</td>\n",
" <td>38</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>7</th>\n",
" <td>74</td>\n",
" <td>5</td>\n",
" <td>16</td>\n",
" <td>4</td>\n",
" <td>9</td>\n",
" <td>2</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3683</td>\n",
" <td>20</td>\n",
" <td>38</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>8</th>\n",
" <td>68</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3683</td>\n",
" <td>40</td>\n",
" <td>38</td>\n",
" <td>0</td>\n",
" </tr>\n",
" <tr>\n",
" <th>10</th>\n",
" <td>45</td>\n",
" <td>2</td>\n",
" <td>16</td>\n",
" <td>0</td>\n",
" <td>9</td>\n",
" <td>4</td>\n",
" <td>2</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>3004</td>\n",
" <td>35</td>\n",
" <td>38</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>11</th>\n",
" <td>38</td>\n",
" <td>4</td>\n",
" <td>15</td>\n",
" <td>4</td>\n",
" <td>9</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>1</td>\n",
" <td>0</td>\n",
" <td>2824</td>\n",
" <td>45</td>\n",
" <td>38</td>\n",
" <td>1</td>\n",
" </tr>\n",
" <tr>\n",
" <th>12</th>\n",
" <td>52</td>\n",
" <td>2</td>\n",
" <td>13</td>\n",
" <td>6</td>\n",
" <td>7</td>\n",
" <td>1</td>\n",
" <td>4</td>\n",
" <td>0</td>\n",
" <td>0</td>\n",
" <td>2824</td>\n",
" <td>20</td>\n",
" <td>38</td>\n",
" <td>1</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" age workclass education.num marital.status occupation relationship \\\n",
"1 82 2 9 6 3 1 \n",
"3 54 2 4 0 6 4 \n",
"4 41 2 10 5 9 3 \n",
"5 34 2 9 0 7 4 \n",
"6 38 2 6 5 0 4 \n",
"7 74 5 16 4 9 2 \n",
"8 68 0 9 0 9 1 \n",
"10 45 2 16 0 9 4 \n",
"11 38 4 15 4 9 1 \n",
"12 52 2 13 6 7 1 \n",
"\n",
" race sex capital.gain capital.loss hours.per.week native.country \\\n",
"1 4 0 0 4356 18 38 \n",
"3 4 0 0 3900 40 38 \n",
"4 4 0 0 3900 40 38 \n",
"5 4 0 0 3770 45 38 \n",
"6 4 1 0 3770 40 38 \n",
"7 4 0 0 3683 20 38 \n",
"8 4 0 0 3683 40 38 \n",
"10 2 0 0 3004 35 38 \n",
"11 4 1 0 2824 45 38 \n",
"12 4 0 0 2824 20 38 \n",
"\n",
" income \n",
"1 0 \n",
"3 0 \n",
"4 0 \n",
"5 0 \n",
"6 0 \n",
"7 1 \n",
"8 0 \n",
"10 1 \n",
"11 1 \n",
"12 1 "
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.preprocessing import LabelEncoder\n",
"import seaborn as sns\n",
"\n",
"\n",
"df = pd.read_csv('./Datasets/adult.csv', comment = '#')\n",
"\n",
"\n",
"# First, create a copy of the dataframe to avoid modifying the original\n",
"df_encoded = df.copy()\n",
"df_encoded.drop(['fnlwgt', 'education'], axis=1, inplace=True)\n",
"\n",
"\n",
"# drop all rows that contain '?'\n",
"for column in df_encoded.columns:\n",
" df_encoded = df_encoded[df_encoded[column] != '?']\n",
"\n",
"# Apply label encoding to categorical columns\n",
"label_encoder = LabelEncoder()\n",
"categorical_columns = ['workclass', 'marital.status', 'occupation', \n",
" 'relationship', 'race', 'sex', 'native.country', 'income']\n",
"\n",
"for column in categorical_columns:\n",
" df_encoded[column] = label_encoder.fit_transform(df_encoded[column])\n",
"\n",
"\n",
"matrix = df_encoded.corr()\n",
"\n",
"plt.figure(figsize=(8,6))\n",
"sns.heatmap(matrix, annot=True, cmap=\"coolwarm\", fmt=\".2f\", linewidths=0.5)\n",
"plt.title(\"Correlation Heatmap\")\n",
"plt.show()\n",
"\n",
"df_encoded.head(10)\n",
"#df.head()\n"
]
},
{
"cell_type": "markdown",
"id": "e55b361b",
"metadata": {},
"source": [
"### Creates a pairplot\n",
"This demonstrates that We need a model that is appropriate for discrete data (Decision Tree, Random Forest, Naive Bayes)"
]
},
{
"cell_type": "code",
"execution_count": 30,
"id": "8e3bd968",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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 truncated
"text/plain": [
"<Figure size 3250x3250 with 182 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"sns.pairplot(df_encoded, diag_kind=\"kde\")\n",
"plt.show()"
]
}
],
"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.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
+123
View File
@@ -0,0 +1,123 @@
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"id": "0952f099",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA7wAAAOwCAYAAAAdgXhMAAAAOnRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjEwLjcsIGh0dHBzOi8vbWF0cGxvdGxpYi5vcmcvTLEjVAAAAAlwSFlzAAAPYQAAD2EBqD+naQABAABJREFUeJzs3XdYU9f/B/B3wt6iuMVRV60LUHCDKCooWHEg4kStdVatddVVZx21tVrrrLgBFyqIW1EUERVw1FX3VhRFZAWS+/vDr/lpa60jyQnh/XqePo+G5J43NpD7uedzz5FJkiSBiIiIiIiIyMDIRQcgIiIiIiIi0gYWvERERERERGSQWPASERERERGRQWLBS0RERERERAaJBS8REREREREZJBa8REREREREZJBY8BIREREREZFBYsFLREREREREBokFLxERERERERkkFrxERERERERkkFjwEhERERERkUFiwUtEREREREQGiQUvERERERERGSQWvERERERERGSQWPASERERERGRQWLBS0RERERERAaJBS8REREREREZJBa8REREREREZJBY8BIREREREZFBYsFLREREREREBokFLxERERERERkkFrxERERERERkkFjwEhERERERkUFiwUtEREREREQGiQUvERERERERGSQWvERERERERGSQWPASERERERGRQWLBS0RERERERAaJBS8REREREREZJBa8REREREREZJBY8BIREREREZFBYsFLREREREREBokFLxERERERERkkFrxERERERERkkFjwEhERERERkUFiwUtEREREREQGiQUvERERERERGSQWvERERERERGSQWPASERERERGRQWLBS0RERERERAaJBS8REREREREZJBa8REREREREZJBY8BIREREREZFBMhYdgIiIiEjbfvnlF/w4YzqUSqX6MUmSIJPJ1H8GoP7729jb2yMyageqVaum3bBERKQxLHiJiIjI4EXv2AEz5KJBjbKwMjeBXC6HXCaDUqWCmYkRVCogV6lEtiIPpsZGsDI3gbWFGYzkMtx6lIZcpRIbDp/DiRMnWPASEeUjLHiJiIioQKhbuTSWfPPlR71Wkfuy4CUiovyFBS8REREVSOGHzuJZRjaaO30GcxNjKFUS0rNy8PDZCxSyMkedyqVFRyQiok/EgpeIiIgKlMjjF+FgawkbS1OYGBth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 truncated
"text/plain": [
"<Figure size 1200x1200 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"Mean Squared Error: 0.1921100613293552\n"
]
}
],
"source": [
"import pandas as pd\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt\n",
"from sklearn.model_selection import train_test_split\n",
"from sklearn.pipeline import Pipeline\n",
"from sklearn.tree import DecisionTreeClassifier, plot_tree\n",
"from sklearn.preprocessing import LabelEncoder\n",
"from sklearn.metrics import mean_squared_error, mean_absolute_error , r2_score\n",
"\n",
"df = pd.read_csv('./Datasets/adult.csv', comment = '#')\n",
"\n",
"# First, create a copy of the dataframe to avoid modifying the original\n",
"df_encoded = df.copy()\n",
"df_encoded.drop(['fnlwgt', 'education'], axis=1, inplace=True)\n",
"\n",
"# drop all rows that contain '?'\n",
"for column in df_encoded.columns:\n",
" df_encoded = df_encoded[df_encoded[column] != '?']\n",
"\n",
"# Apply label encoding to categorical columns\n",
"label_encoder = LabelEncoder()\n",
"categorical_columns = ['workclass', 'marital.status', 'occupation', \n",
" 'relationship', 'race', 'sex', 'native.country', 'income']\n",
"\n",
"for column in categorical_columns:\n",
" df_encoded[column] = label_encoder.fit_transform(df_encoded[column])\n",
"\n",
"# Now properly separate features and target\n",
"X = df_encoded.drop(columns=['income'])\n",
"y = df_encoded['income']\n",
"\n",
"# Split the data\n",
"X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)\n",
"X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=0.25, random_state=42)\n",
"\n",
"\n",
"# Build pipeline\n",
"model = Pipeline([\n",
" ('full_dt_classifier', DecisionTreeClassifier(random_state=42)) # Train Decision Tree Regressor\n",
"])\n",
"\n",
"# Train the model\n",
"model.fit(X_train, y_train)\n",
"y_pred = model.predict(X_val)\n",
"\n",
"# Visualize the decision tree\n",
"plt.figure(figsize=(12, 12))\n",
"plot_tree(\n",
" model.named_steps['full_dt_classifier'],\n",
" feature_names=df.columns[:-1],\n",
" class_names=[\"Poor\", \"Rich\"],\n",
" filled=True,\n",
" rounded=True,\n",
" max_depth=10, # Keep tree shallow for readability\n",
" fontsize=1,\n",
" precision=2 # Limit decimals\n",
")\n",
"\n",
"#plt.savefig('decision_tree.pdf', format='pdf', dpi=300)\n",
"plt.show()\n",
"\n",
"mse = mean_squared_error(y_val, y_pred)\n",
"print(f'Mean Squared Error: {mse}')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "e567e4e9",
"metadata": {},
"outputs": [],
"source": []
}
],
"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.12"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
BIN
View File
Binary file not shown.
+27 -7
View File
@@ -2,20 +2,40 @@
"cells": [ "cells": [
{ {
"cell_type": "code", "cell_type": "code",
"execution_count": 34, "execution_count": 1,
"id": "b6ea6c3b", "id": "b6ea6c3b",
"metadata": {}, "metadata": {},
"outputs": [ "outputs": [
{ {
"ename": "TypeError", "ename": "InvalidIndexError",
"evalue": "'numpy.ndarray' object is not callable", "evalue": "(slice(None, None, None), 0)",
"output_type": "error", "output_type": "error",
"traceback": [ "traceback": [
"\u001b[31m---------------------------------------------------------------------------\u001b[39m", "\u001b[31m---------------------------------------------------------------------------\u001b[39m",
"\u001b[31mTypeError\u001b[39m Traceback (most recent call last)", "\u001b[31mKeyError\u001b[39m Traceback (most recent call last)",
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[25]\u001b[39m\u001b[32m, line 20\u001b[39m\n\u001b[32m 18\u001b[39m X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=\u001b[32m0.2\u001b[39m, random_state=\u001b[32m42\u001b[39m)\n\u001b[32m 19\u001b[39m X_train, X_val, y_train, y_val = train_test_split(X_train, y_train, test_size=\u001b[32m0.2\u001b[39m, random_state=\u001b[32m42\u001b[39m)\n\u001b[32m---> \u001b[39m\u001b[32m20\u001b[39m X_train = \u001b[43mX_train\u001b[49m\u001b[43m.\u001b[49m\u001b[43mvalues\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 23\u001b[39m n_features = \u001b[32m10\u001b[39m\n\u001b[32m 24\u001b[39m fig=plt.figure( figsize=(\u001b[32m15\u001b[39m, \u001b[32m15\u001b[39m) )\n", "\u001b[36mFile \u001b[39m\u001b[32m~/Documents/MLP/Projects/MLPproject/.venv/lib/python3.12/site-packages/pandas/core/indexes/base.py:3812\u001b[39m, in \u001b[36mIndex.get_loc\u001b[39m\u001b[34m(self, key)\u001b[39m\n\u001b[32m 3811\u001b[39m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[32m-> \u001b[39m\u001b[32m3812\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43m_engine\u001b[49m\u001b[43m.\u001b[49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mcasted_key\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 3813\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n",
"\u001b[31mTypeError\u001b[39m: 'numpy.ndarray' object is not callable" "\u001b[36mFile \u001b[39m\u001b[32mpandas/_libs/index.pyx:167\u001b[39m, in \u001b[36mpandas._libs.index.IndexEngine.get_loc\u001b[39m\u001b[34m()\u001b[39m\n",
"\u001b[36mFile \u001b[39m\u001b[32mpandas/_libs/index.pyx:196\u001b[39m, in \u001b[36mpandas._libs.index.IndexEngine.get_loc\u001b[39m\u001b[34m()\u001b[39m\n",
"\u001b[36mFile \u001b[39m\u001b[32mpandas/_libs/hashtable_class_helper.pxi:7088\u001b[39m, in \u001b[36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[39m\u001b[34m()\u001b[39m\n",
"\u001b[36mFile \u001b[39m\u001b[32mpandas/_libs/hashtable_class_helper.pxi:7096\u001b[39m, in \u001b[36mpandas._libs.hashtable.PyObjectHashTable.get_item\u001b[39m\u001b[34m()\u001b[39m\n",
"\u001b[31mKeyError\u001b[39m: (slice(None, None, None), 0)",
"\nDuring handling of the above exception, another exception occurred:\n",
"\u001b[31mInvalidIndexError\u001b[39m Traceback (most recent call last)",
"\u001b[36mCell\u001b[39m\u001b[36m \u001b[39m\u001b[32mIn[1]\u001b[39m\u001b[32m, line 39\u001b[39m\n\u001b[32m 37\u001b[39m ax = fig.add_subplot(n_features, n_features, plt_num)\n\u001b[32m 38\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m(i == j):\n\u001b[32m---> \u001b[39m\u001b[32m39\u001b[39m ax.hist(\u001b[43mX_train\u001b[49m\u001b[43m[\u001b[49m\u001b[43m:\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m, bins=\u001b[32m25\u001b[39m, color=\u001b[33m'\u001b[39m\u001b[33mgray\u001b[39m\u001b[33m'\u001b[39m)\n\u001b[32m 40\u001b[39m \u001b[38;5;28;01melse\u001b[39;00m:\n\u001b[32m 41\u001b[39m ax.scatter(X_train[:, j], X_train[:, i], c=np.array(colors)[y_train], s=\u001b[32m30\u001b[39m, alpha=\u001b[32m0.3\u001b[39m)\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/MLP/Projects/MLPproject/.venv/lib/python3.12/site-packages/pandas/core/frame.py:4113\u001b[39m, in \u001b[36mDataFrame.__getitem__\u001b[39m\u001b[34m(self, key)\u001b[39m\n\u001b[32m 4111\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28mself\u001b[39m.columns.nlevels > \u001b[32m1\u001b[39m:\n\u001b[32m 4112\u001b[39m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[38;5;28mself\u001b[39m._getitem_multilevel(key)\n\u001b[32m-> \u001b[39m\u001b[32m4113\u001b[39m indexer = \u001b[38;5;28;43mself\u001b[39;49m\u001b[43m.\u001b[49m\u001b[43mcolumns\u001b[49m\u001b[43m.\u001b[49m\u001b[43mget_loc\u001b[49m\u001b[43m(\u001b[49m\u001b[43mkey\u001b[49m\u001b[43m)\u001b[49m\n\u001b[32m 4114\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m is_integer(indexer):\n\u001b[32m 4115\u001b[39m indexer = [indexer]\n",
"\u001b[36mFile \u001b[39m\u001b[32m~/Documents/MLP/Projects/MLPproject/.venv/lib/python3.12/site-packages/pandas/core/indexes/base.py:3818\u001b[39m, in \u001b[36mIndex.get_loc\u001b[39m\u001b[34m(self, key)\u001b[39m\n\u001b[32m 3813\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m \u001b[38;5;28;01mas\u001b[39;00m err:\n\u001b[32m 3814\u001b[39m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;28misinstance\u001b[39m(casted_key, \u001b[38;5;28mslice\u001b[39m) \u001b[38;5;129;01mor\u001b[39;00m (\n\u001b[32m 3815\u001b[39m \u001b[38;5;28misinstance\u001b[39m(casted_key, abc.Iterable)\n\u001b[32m 3816\u001b[39m \u001b[38;5;129;01mand\u001b[39;00m \u001b[38;5;28many\u001b[39m(\u001b[38;5;28misinstance\u001b[39m(x, \u001b[38;5;28mslice\u001b[39m) \u001b[38;5;28;01mfor\u001b[39;00m x \u001b[38;5;129;01min\u001b[39;00m casted_key)\n\u001b[32m 3817\u001b[39m ):\n\u001b[32m-> \u001b[39m\u001b[32m3818\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m InvalidIndexError(key)\n\u001b[32m 3819\u001b[39m \u001b[38;5;28;01mraise\u001b[39;00m \u001b[38;5;167;01mKeyError\u001b[39;00m(key) \u001b[38;5;28;01mfrom\u001b[39;00m\u001b[38;5;250m \u001b[39m\u001b[34;01merr\u001b[39;00m\n\u001b[32m 3820\u001b[39m \u001b[38;5;28;01mexcept\u001b[39;00m \u001b[38;5;167;01mTypeError\u001b[39;00m:\n\u001b[32m 3821\u001b[39m \u001b[38;5;66;03m# If we have a listlike key, _check_indexing_error will raise\u001b[39;00m\n\u001b[32m 3822\u001b[39m \u001b[38;5;66;03m# InvalidIndexError. Otherwise we fall through and re-raise\u001b[39;00m\n\u001b[32m 3823\u001b[39m \u001b[38;5;66;03m# the TypeError.\u001b[39;00m\n",
"\u001b[31mInvalidIndexError\u001b[39m: (slice(None, None, None), 0)"
] ]
},
{
"data": {
"image/png": "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",
"text/plain": [
"<Figure size 1500x1500 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
} }
], ],
"source": [ "source": [
@@ -88,7 +108,7 @@
"name": "python", "name": "python",
"nbconvert_exporter": "python", "nbconvert_exporter": "python",
"pygments_lexer": "ipython3", "pygments_lexer": "ipython3",
"version": "3.12.11" "version": "3.12.12"
} }
}, },
"nbformat": 4, "nbformat": 4,