diff --git a/4. QuickDraw(你画我猜)在线交互识别系统/homeworks/泰坦尼克号数据集分析.ipynb b/4. QuickDraw(你画我猜)在线交互识别系统/homeworks/泰坦尼克号数据集分析.ipynb new file mode 100644 index 0000000..8b01e95 --- /dev/null +++ b/4. QuickDraw(你画我猜)在线交互识别系统/homeworks/泰坦尼克号数据集分析.ipynb @@ -0,0 +1,662 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 1, + "id": "d10c64c7", + "metadata": {}, + "outputs": [], + "source": [ + "# 相关性分析,nan填充,标签转数值" + ] + }, + { + "cell_type": "code", + "execution_count": 125, + "id": "92457571", + "metadata": {}, + "outputs": [], + "source": [ + "import pandas as pd\n", + "import numpy as np\n", + "import matplotlib.pyplot as plt\n", + "import seaborn as sns\n", + "plt.rcParams['font.family'] = ['serif', 'SimSun']\n", + "plt.rcParams['mathtext.fontset'] = 'cm'" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "id": "cbf9bd80", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PassengerIdSurvivedPclassAgeSibSpParchFare
count891.000000891.000000891.000000714.000000891.000000891.000000891.000000
mean446.0000000.3838382.30864229.6991180.5230080.38159432.204208
std257.3538420.4865920.83607114.5264971.1027430.80605749.693429
min1.0000000.0000001.0000000.4200000.0000000.0000000.000000
25%223.5000000.0000002.00000020.1250000.0000000.0000007.910400
50%446.0000000.0000003.00000028.0000000.0000000.00000014.454200
75%668.5000001.0000003.00000038.0000001.0000000.00000031.000000
max891.0000001.0000003.00000080.0000008.0000006.000000512.329200
\n", + "
" + ], + "text/plain": [ + " PassengerId Survived Pclass Age SibSp \\\n", + "count 891.000000 891.000000 891.000000 714.000000 891.000000 \n", + "mean 446.000000 0.383838 2.308642 29.699118 0.523008 \n", + "std 257.353842 0.486592 0.836071 14.526497 1.102743 \n", + "min 1.000000 0.000000 1.000000 0.420000 0.000000 \n", + "25% 223.500000 0.000000 2.000000 20.125000 0.000000 \n", + "50% 446.000000 0.000000 3.000000 28.000000 0.000000 \n", + "75% 668.500000 1.000000 3.000000 38.000000 1.000000 \n", + "max 891.000000 1.000000 3.000000 80.000000 8.000000 \n", + "\n", + " Parch Fare \n", + "count 891.000000 891.000000 \n", + "mean 0.381594 32.204208 \n", + "std 0.806057 49.693429 \n", + "min 0.000000 0.000000 \n", + "25% 0.000000 7.910400 \n", + "50% 0.000000 14.454200 \n", + "75% 0.000000 31.000000 \n", + "max 6.000000 512.329200 " + ] + }, + "execution_count": 17, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df_base = pd.read_csv(\"train.csv\")\n", + "df = df_base.copy()\n", + "df.describe()" + ] + }, + { + "cell_type": "code", + "execution_count": 36, + "id": "6dd49ea7", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
PclassSexAgeSibSpParchFareEmbarked
03122.0107.25002
11038.01071.28330
23026.0007.92502
31035.01053.10002
43135.0008.05002
........................
8862127.00013.00002
8871019.00030.00002
8883029.01223.45002
8891126.00030.00000
8903132.0007.75001
\n", + "

891 rows × 7 columns

\n", + "
" + ], + "text/plain": [ + " Pclass Sex Age SibSp Parch Fare Embarked\n", + "0 3 1 22.0 1 0 7.2500 2\n", + "1 1 0 38.0 1 0 71.2833 0\n", + "2 3 0 26.0 0 0 7.9250 2\n", + "3 1 0 35.0 1 0 53.1000 2\n", + "4 3 1 35.0 0 0 8.0500 2\n", + ".. ... ... ... ... ... ... ...\n", + "886 2 1 27.0 0 0 13.0000 2\n", + "887 1 0 19.0 0 0 30.0000 2\n", + "888 3 0 29.0 1 2 23.4500 2\n", + "889 1 1 26.0 0 0 30.0000 0\n", + "890 3 1 32.0 0 0 7.7500 1\n", + "\n", + "[891 rows x 7 columns]" + ] + }, + "execution_count": 36, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "cols = ['Pclass', 'Sex', 'Age', 'SibSp', 'Parch', 'Fare', 'Embarked']\n", + "df = df_base[cols]\n", + "y = df_base['Survived']\n", + "\n", + "from sklearn.preprocessing import LabelEncoder\n", + "label_encoders = {}\n", + "for col in cols:\n", + " if df[col].dtype == 'object':\n", + " encoder = LabelEncoder()\n", + " df[col] = encoder.fit_transform(df[col])\n", + " label_encoders[col] = encoder\n", + "df['Age'] = df['Age'].fillna(int(df['Age'].mean()))\n", + "df" + ] + }, + { + "cell_type": "code", + "execution_count": 45, + "id": "f1dbe0a1", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.preprocessing import StandardScaler\n", + "std_scaler = StandardScaler()\n", + "X = std_scaler.fit_transform(df)" + ] + }, + { + "cell_type": "code", + "execution_count": 54, + "id": "7e8d23f4", + "metadata": {}, + "outputs": [], + "source": [ + "from sklearn.model_selection import train_test_split\n", + "X_train, X_test = train_test_split(X, test_size=0.3, random_state=42)\n", + "y_train, y_test = train_test_split(y, test_size=0.3, random_state=42)" + ] + }, + { + "cell_type": "code", + "execution_count": 112, + "id": "6751f651", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'SGD': 0.7576387096774194, 'tree': 0.7704903225806452, 'kneighbor': 0.792916129032258, 'forest': 0.7945935483870968, 'svc': 0.8234193548387096, 'log': 0.7993161290322581}\n" + ] + } + ], + "source": [ + "from sklearn.model_selection import cross_val_score\n", + "from sklearn.linear_model import SGDClassifier\n", + "from sklearn.tree import DecisionTreeClassifier\n", + "from sklearn.neighbors import KNeighborsClassifier\n", + "from sklearn.ensemble import RandomForestClassifier\n", + "from sklearn.svm import SVC\n", + "from sklearn.linear_model import LogisticRegression\n", + "models = {}\n", + "fold_scores = {}\n", + "sgd = SGDClassifier(); models['sgd'] = sgd\n", + "fold_scores['SGD'] = np.mean(cross_val_score(sgd, X_train, y_train))\n", + "tree = DecisionTreeClassifier(); models['tree'] = tree\n", + "fold_scores['tree'] = np.mean(cross_val_score(tree, X_train, y_train))\n", + "kneighbor = KNeighborsClassifier(); models['kneighbor'] = kneighbor\n", + "fold_scores['kneighbor'] = np.mean(cross_val_score(kneighbor, X_train, y_train))\n", + "forest = RandomForestClassifier(); models['forest'] = forest\n", + "fold_scores['forest'] = np.mean(cross_val_score(forest, X_train, y_train))\n", + "svc = SVC(); models['svc'] = svc\n", + "fold_scores['svc'] = np.mean(cross_val_score(svc, X_train, y_train))\n", + "logistic = LogisticRegression(); models['log'] = logistic\n", + "fold_scores['log'] = np.mean(cross_val_score(logistic, X_train, y_train))\n", + "print(fold_scores)" + ] + }, + { + "cell_type": "code", + "execution_count": 113, + "id": "d63dbdc1", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "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rclUiIiISEMahQYTExMAj/+X/zSVSiWtq8qMGTPQunVrfPLJJzXuc8qUKcjNzZUeN2/elD0PIiIi0pyeJpUtLS1hbm6O9PR0tfL09HQ4ODhU2XbFihU4ceIEduzYUSt9Ghoalts7QURERHVH4xMhfXx8kJiYKC0LIXDq1Cn4+flV2mbjxo3YvHkztm7dCgMDA6Smpqqd5KhNn0RERFS/NA4NERER2Lt3L1JSUgAA0dHR0NXVRVhYGABg2LBhGDx4sFR/9+7diIiIwLRp05CUlITExETs378fR48eld0nERERNTyNDk8AgJubG6KiohASEgJjY2MoFArExMTA1NQUAFBUVITi4mKp/rBhw3Dv3j34+Pio9TN9+nTZfRIREVHD0zg0AEBQUBCCgoIqXLdx40a15czMzBr3SURERA2PP1hFREREsjA0EBERkSwMDURERCQLQwMRERHJwtBAREREsjA0EBERkSwMDURERCQLQwMRERHJwtBAREREsjA0EBERkSwMDURERCQLQwMRERHJwtBAREREsjA0EBERkSwMDURERCQLQwMRERHJwtBAREREsjA0EBERkSwMDURERCQLQwMRERHJwtBAREREsjA0EBERkSwMDURERCQLQwMRERHJwtBAREREsjA0EBERkSwMDURERCQLQwMRERHJolVo2L59O1xcXODp6QmlUomkpKQq65eVlWHhwoUwNjbGoUOHyq2fMWMGnJ2d4eXlJT369++vzdCIiIiojuhp2iAhIQFDhgxBYmIiHB0dsXbtWvj7+yM5ORmmpqbl6ufk5CA4OBht27ZFUVFRpf0uXrwYXl5emg6HiIiI6onGexoiIyMREBAAR0dHAEBoaChKSkoQFRVVYf0HDx4gMjISn332Wc1GSkRERA1K49AQFxcHV1fX/3WgUKBbt26IjY2tsH6bNm3g4uKi/QiJiIjoH0Gj0JCVlYXc3FxYWVmplVtZWSE1NbVGA1m1ahW8vLzg4eGBsLAwXLlypcr6KpUKeXl5ag8iIiKqOxqFhsLCQgCAoaGhWrmhoaG0Ths2Njbo2rUrYmNjER8fD3t7e3Tr1g23b9+utM3cuXNhbm4uPaytrbV+fiIiIqqeRqHBxMQEwOP/5T9NpVJJ67QxfPhwTJw4EXp6elAoFJg2bRqMjIywfPnySttMmTIFubm50uPmzZtaPz8RERFVT6OrJywtLWFubo709HS18vT0dDg4ONTaoHR1dWFnZ1flIQpDQ8NyezyIiIio7mh8IqSPjw8SExOlZSEETp06BT8/P60HMX78+HJlaWlpPORARET0D6JxaIiIiMDevXuRkpICAIiOjoauri7CwsIAAMOGDcPgwYM16nPXrl3YtWuXtLxy5UpkZGRg+PDhmg6PiIiI6ojGN3dyc3NDVFQUQkJCYGxsDIVCgZiYGOnGTkVFRSguLlZr8/bbbyMtLQ0AMGHCBFhYWCAuLg66uroAgDlz5mDx4sVYtGgRVCoVDAwMsH//fnTq1Kmm8yMiIqJaonFoAICgoCAEBQVVuG7jxo3lyrZt21ZlfyEhIQgJCdFmKERERFRP+INVREREJAtDAxEREcnC0EBERESyMDQQERGRLAwNREREJAtDAxEREcnC0EBERESyMDQQERGRLAwNREREJAtDAxEREcnC0EBERESyMDQQERGRLAwNREREJAtDAxEREcnC0EBERESyMDQQERGRLAwNREREJAtDAxEREcnC0EBERESyMDQQERGRLAwNREREJAtDAxEREcnC0EBERESyMDQQERGRLAwNREREJAtDAxEREcnC0EBERESyMDQQERGRLFqFhu3bt8PFxQWenp5QKpVISkqqsn5ZWRkWLlwIY2NjHDp0qFb6JCIiovqlp2mDhIQEDBkyBImJiXB0dMTatWvh7++P5ORkmJqalqufk5OD4OBgtG3bFkVFRbXSJxEREdU/jfc0REZGIiAgAI6OjgCA0NBQlJSUICoqqsL6Dx48QGRkJD777LNa65OIiIjqn8ahIS4uDq6urv/rQKFAt27dEBsbW2H9Nm3awMXFpVb7JCIiovqnUWjIyspCbm4urKys1MqtrKyQmpqq1QDqok8iIiKqfRqd01BYWAgAMDQ0VCs3NDSU1mlK2z5VKhVUKpW0nJeXp9XzExERkTwa7WkwMTEBALU/1k+Wn6zTlLZ9zp07F+bm5tLD2tpaq+cnIiIieTQKDZaWljA3N0d6erpaeXp6OhwcHLQagLZ9TpkyBbm5udLj5s2bWj0/ERERyaPxiZA+Pj5ITEyUloUQOHXqFPz8/LQehDZ9GhoawszMTO1BREREdUfj0BAREYG9e/ciJSUFABAdHQ1dXV2EhYUBAIYNG4bBgwfXap9ERETU8DS+uZObmxuioqIQEhICY2NjKBQKxMTESDdhKioqQnFxsVqbt99+G2lpaQCACRMmwMLCAnFxcdDV1ZXVJxERETU8jUMDAAQFBSEoKKjCdRs3bixXtm3bthr1SURERA2PP1hFREREsjA0EBERkSwMDURERCQLQwMRERHJwtBAREREsjA0EBERkSxaXXJJRM8Xu4g9DT2EWnHt674NPQSi5xr3NBAREZEsDA1EREQkC0MDERERycLQQERERLIwNBAREZEsDA1EREQkC0MDERERycLQQERERLIwNBAREZEsDA1EREQkC0MDERERycLQQERERLIwNBAREZEsDA1EREQkC0MDERERycLQQERERLIwNBAREZEsDA1EREQkC0MDERERycLQQERERLIwNBAREZEsDA1EREQki1ahYfv27XBxcYGnpyeUSiWSkpKqrH/06FG4u7tDqVTC3d0d8fHxautnzJgBZ2dneHl5SY/+/ftrMzQiIiKqI3qaNkhISMCQIUOQmJgIR0dHrF27Fv7+/khOToapqWm5+tevX0ffvn2xc+dOeHl54fDhw+jXrx/OnDkDW1tbqd7ixYvh5eVVo8kQERFR3dE4NERGRiIgIACOjo4AgNDQUHz66aeIiorC2LFjy9X/9ttv0bFjRykQKJVKODo6YunSpZg/f37NRk9EVAN2EXsaegi14trXfRt6CPSC0PjwRFxcHFxdXf/XgUKBbt26ITY2tsL6sbGxavUBwNXVtdL6RERE9M+kUWjIyspCbm4urKys1MqtrKyQmppaYZvU1FRZ9VetWgUvLy94eHggLCwMV65cqXIsKpUKeXl5ag8iIiKqOxqFhsLCQgCAoaGhWrmhoaG0rqI21dW3sbFB165dERsbi/j4eNjb26Nbt264fft2pWOZO3cuzM3NpYe1tbUmUyEiIiINaRQaTExMADz+X/7TVCqVtK6iNtXVHz58OCZOnAg9PT0oFApMmzYNRkZGWL58eaVjmTJlCnJzc6XHzZs3NZkKERERaUijEyEtLS1hbm6O9PR0tfL09HQ4ODhU2MbBwUGj+gCgq6sLOzu7Kg9RGBoaltuDQURERHVH4xMhfXx8kJiYKC0LIXDq1Cn4+flVWN/X11etPgAkJiaq1R8/fny5dmlpaTzkQERE9A+icWiIiIjA3r17kZKSAgCIjo6Grq4uwsLCAADDhg3D4MGDpfrjx49HcnIyjhw5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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "forest.fit(X_train, y_train)\n", + "importances = np.asarray(sorted(zip(forest.feature_importances_, cols), key=lambda x: x[0], reverse=True))\n", + "plt.figure(figsize=(6,3))\n", + "plt.bar(importances[:,1], importances[:,0].astype('float32'), label='重要度')\n", + "plt.title(\"参数重要度\")\n", + "plt.legend()\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 120, + "id": "23fd3798", + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "sgd训练集准确率: 0.68212, 测试集准确率: 0.76667\n", + "tree训练集准确率: 0.99539, 测试集准确率: 0.70000\n", + "kneighbor训练集准确率: 0.83902, 测试集准确率: 0.79348\n", + "forest训练集准确率: 0.97778, 测试集准确率: 0.74038\n", + "svc训练集准确率: 0.86486, 测试集准确率: 0.84444\n", + "log训练集准确率: 0.74882, 测试集准确率: 0.80198\n" + ] + } + ], + "source": [ + "from sklearn.metrics import precision_score\n", + "for name, model in models.items():\n", + " model.fit(X_train, y_train)\n", + " train_pred = model.predict(X_train)\n", + " print(name+\"训练集准确率:\", f\"{precision_score(y_train, train_pred):.5f}\", end=', ')\n", + " test_pred = model.predict(X_test)\n", + " print(\"测试集准确率:\", f\"{precision_score(y_test, test_pred):.5f}\")" + ] + }, + { + "cell_type": "code", + "execution_count": 139, + "id": "c8922fad", + "metadata": {}, + "outputs": [ + { + "data": { + "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0UAAAGbCAYAAAALLDvDAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/bCgiHAAAACXBIWXMAAA9hAAAPYQGoP6dpAABaCUlEQVR4nO3de5xN9f7H8feeu3EZUxi55FLuw7iTKTO5ljgVKiHX06EmuSSZLghzhuMuitLFrURJyKkIp0gJlSTkMsllGGIYwx4ze/3+8LNrZzAze9trz6zX8zzW47TX97vXfJfjzLvPWt/1XTbDMAwBAAAAgEX5mT0AAAAAADATRREAAAAAS6MoAgAAAGBpFEUAAAAALI2iCAAAAIClURQBAAAAsDSKIgAAAACWRlEEAAAAwNIoigAAAABYGkURAAAAAEujKAIAeM2PP/6oLl26qHbt2qpbt67q1KmjJk2aaNCgQdq6dat69OihUqVKyWazqVKlSnrhhReuOEarVq1UokQJlStXTsOHD3fut9vtmj59uqKjo1WvXj3VqVNHderU0YMPPqg5c+YoOTnZm6cKAMhHAsweAADAGn766Sc1bdpUcXFxmjdvnoKCgiRJq1ev1gMPPKAiRYpo3rx5WrZsmR588EE98MADSkhIuOI4a9asUd26dfXmm2+qQYMGkqRjx46pXbt2Cg8P18KFC1WxYkVJUlpamiZOnKjHH39cMTExWr9+vbdOFwCQj9gMwzDMHgQAoOAbOnSoJk2apNOnTyssLMyl7emnn1axYsU0duxYZWZmqly5csrMzNSRI0ecxdNlW7duVd++ffXDDz8498XExOi3337Tzp07FRoaesXP7t27tw4cOEBRBADIFtPnAABekZmZKUlKSkq6oi0hIUFDhw6VJAUEBOixxx7TyZMn9fHHH1/R980331Tfvn2dnz/99FN9+eWX6t+/f7YFkSQNHDhQLVq08MBZAAAKIooiAIBXtGrVSpJ0//3366233tKZM2ecbUWLFlXx4sWdny8XPW+++abLMc6fP6+lS5eqW7duzn0rVqyQJDVr1uyqP7tu3boaMWKE2+cAACiYKIoAAF7Rvn17JSYm6tixY+rbt69KlCihli1b6rXXXlNqaqpL3+rVq+uOO+7Q6tWrdfDgQef+Dz/8UHfffbduuukm574DBw5IkkqXLu2dEwEAFDgURQAArxk+fLiOHDmiWbNmqU2bNtq0aZOefPJJ3XbbbVq3bp1L3759+8rhcOidd95x7vv71DkAADyBoggA4FXh4eHq16+fVq5cqZSUFM2YMUNpaWnq0aOHS79HHnlERYoU0dtvvy3DMLRv3z799ttvatmypUu/SpUqSRJLbgMA8oyiCADgFVu2bNG3337rsq9w4cKKi4vTY489pkOHDun48ePOtiJFiuihhx5SUlKSvvjiC7311lvq1auXbDabyzHat28vSdq0adNVf/b+/fv1+eefiwVXAQDZoSgCAHjFypUrNXny5Gzb/P39FRQUpGLFirnsvzxV7vXXX9f8+fPVq1evK7577733qkWLFpo9e7bOnz9/RbthGOratatee+21KwoqAAAkiiIAgBd9+OGHev/9913u2Hz22WdasGCB+vXrp5CQEJf+0dHRql69upYsWaKaNWvq1ltvzfa4ixcv1s0336z7779fv/32m3N/SkqKevbsqRMnTmjatGk35qQAAPkeL28FAHjF7t27tWDBAq1du1anT59WQECAzpw5oxIlSqh79+566qmn5O/vf8X3JkyYoGHDhmnx4sV66KGHrnp8u92uV199Ve+9954uXLggP79L1/06dOiggQMHqkSJEjfs3AAA+RtFEQAAAABLY/ocAAAAAEujKAIAAABgaRRFAAAAACyNoggAAACApVEUAQAAALA0iiIAAAAAlhZg9gDg+ypWrKjQ0FAFBQVJktLS0rRv3z6VL19eN910kyQpIyND6enpSkpK8tjPXbZsmXr16qU1a9aoYcOGbh/v/PnzuuOOO5ScnKxjx46pRo0aCgoK0sWLF+VwONSsWTP961//UpMmTfL8M6ZOnaqKFSvqgQcecHu87ho1apRiY2MVGxtr9lAA4IYzI6tOnz6tqVOn6oEHHlDdunWv2ZcMAnycAVxHhQoVjAMHDjg/r1u3zpBkvP322859Bw4cMCpUqODRn/vFF18YderUMX7++WePHnfkyJGGJJdzOn78uPH8888b/v7+xoABAwyHw5GnY1eoUMHo2bOnZwbqJknGyJEjzR4GAHiFGVl14MCBK37G9ZBBgG/iThGuKyYmRoUKFbpmn0KFCikmJsajP7dFixb68ccfPXrMqylZsqQSEhJUqVIlPf7447r55ps1cuRIr/xsAID7zMoqTyCDAPPxTBGua+7cuYqIiLhmn4iICM2dO1cLFy5U3bp1ZbPZNGLECI0aNUrNmjVTWFiYihcvLkn64Ycf1LVrV0VFRalevXqqW7euxowZo4yMDOfxZs6cqZo1a8pms+mdd96RJK1bt05169ZVUFCQevXqpVdeeUV33nmnypYtqw4dOig5Odntc/3nP/+p2rVra/z48frjjz+c+xMTE9WkSRM1bNhQUVFRatu2rbZt2+Zs3717t+rWrasjR45o+fLlqlu3rurWrat58+bl+Jwl6bvvvlOrVq1Ut25d1atXT9HR0ZowYYJLnzNnzujpp59WxYoVVb16ddWqVUuvvvqqs/3yn5MkzZo1yzmWNWvWuP3nAwC+KjdZJUkLFy5UVFSUqlatqooVK6pv3746ceKES/93331XDRs2VP369VWnTh21b99ey5Ytc36/Xbt2kqQRI0Y4f9fu3Lkzz+dABgEmMvtWFfKf7KYk/J0ko0yZMsaKFSsMwzCM/fv3G+Hh4YZhGEZiYqLRpUsXw263G4ZhGCdPnjTuuOMOY8iQIS7HuNq0hAoVKhhlypQxFixYYBiGYfzxxx9G5cqVjcceeyxH489u6sJfPffcc4YkY8mSJc59xYoVM7777jvn53fffdcoVqyYcejQoSvGlt3UhZyc89mzZ42bbrrJePPNN537PvzwQ+Ov/zfNyMgw7rjjDqNmzZrGsWPHDMMwjG+++cYoVKiQMW7cOJefKaYuALCwa2XVjBkzDJvNZixfvtwwjEu/f5s3b25ERUU5f09v2LDBCAoKMn755RfDMAwjMzPTGDRokBETE+M8jqemz/0VGQSYgztFuGEiIyPVvn17SVKlSpX0zTffSJJ69eql1157zfkw7E033aQePXpo9uzZMgwjR8cuXry4unXrJkkKDw9X27Zt9cUXX3hk3BUqVJAkHThwwLnv22+/dVns4dFHH1WhQoX07rvv5uiYOTnnXbt26Y8//lC1atWc3+vYsaOef/555+eFCxdq06ZNGjVqlEqVKiVJatKkiR599FElJCQoPT09j2cNANZw9uxZxcfH695771WHDh0kSUWKFNHYsWP1448/6v3335ckbdq0SSEhIc5M8Pf317Bhw9S5c+cbOj4yCDAHRRFumMjISJfPVatWlXSpoHn99dfVrFkz1a5dW3Xr1tW///1vnTt3LsdT4GrUqOHyuUSJEh6ZPvdXNpvN+c/nzp3Tww8/rDp16jinAvzxxx/au3dvjo6Vk3OuXr26ypQpo/vvv18vvfSS83mqhIQE53E+++wzSdKdd97pcvzatWvr7Nmz+u6779w6ZwAo6L7++mudPXs229+jkrR27VpJl55RSk9PV8OGDTVjxgwdOnRIt9xyi5566imvjJMMAryLhRZwwxQtWjTb/f/85z/13//+V2vWrFG9evUkSe+884569+4tu92eo2MXKVLE5bOfn58cDod7A/5/v/32m6RLy7tK0k8//aQ777xTvXv31nfffafg4GBne07Hm5NzLlKkiL777jv95z//0ezZszV27FhVrVpVL730krp37y5Jzvnu9957r8vxz58/r4iICJ06dcq9kweAAu7y79HXXnvNeVfosoiICF24cEGS1KhRI3399deaOHGinn32WQ0YMEDNmzfXxIkT1ahRoxs2PjIIMAdFEbzq/PnzWrRokfr37+/8xexrPvnkE4WGhqply5aSpEWLFunChQsaPXq0M4xyIzfnXKZMGU2dOlUTJ07U559/rrFjx+qxxx7TLbfcopYtW6pEiRKSpP/9738KCwvL/ckBgMVd/j36zDPPaODAgdfs26hRI73//vs6e/asFi9erFGjRqlVq1ZKSkpSeHj4DRkfGQSYg+lz8KrMzExlZWXJz8/1r97Ro0dNGpGr2bNna8eOHXr++eedgXf5Ktpfx5yVlaXjx49f8f3AwEDn/OyUlBStWbMmx+f8008/OacpBAQEqF27dlq5cqUkOacxtG3bVpL0/fffu3w3NTVVHTt2dFmtKCAgwDmW3377TV9//XVu/igAoEBq1qyZihQpcsXvUUkaO3asPvzwQ0mXVp5bvny5pEszH/r27atp06bpzJkzzud9AgMDJcn5u/aXX37RDz/8kOexkUGAeSiK4FVFixZVbGys3n//fe3fv1+S9Pvvv2vWrFmmjuv48eN64YUXFBcXp0GDBrk8WHr5Qdxx48Y5f8H/+9//1vnz5684TqVKlXTo0CFJ0tKlS/Xvf/87x+d88uRJTZo0yWU513Xr1ikgIMD5RvBu3brpjjvu0LBhw5yBeP78eQ0cOFABAQHOt7b/fSyzZs3SnDlz3PozAoCCoGjRokpMTNR7773nfEZGkpYvX64ZM2aocePGkqQ9e/YoMTHROSXM4XDoyy+/VJkyZVSzZk1Jl6bbFSpU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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.metrics import confusion_matrix\n", + "plt.figure(figsize=(10,4))\n", + "plt.subplot(121)\n", + "train_pred = svc.predict(X_train)\n", + "confuse_mat = confusion_matrix(y_train, train_pred)\n", + "sns.heatmap(confuse_mat, annot=True, fmt=\".0f\")\n", + "plt.ylabel('True')\n", + "plt.xlabel('Predict')\n", + "plt.title(\"Train Dataset\")\n", + "plt.subplot(122)\n", + "test_pred = svc.predict(X_test)\n", + "confuse_mat = confusion_matrix(y_test, test_pred)\n", + "sns.heatmap(confuse_mat, annot=True, fmt=\".0f\")\n", + "plt.ylabel('True')\n", + "plt.xlabel('Predict')\n", + "plt.title(\"Test Dataset\")\n", + "plt.suptitle(\"SVC\")\n", + "plt.show()" + ] + }, + { + "cell_type": "code", + "execution_count": 147, + "id": "7206fd63", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[]" + ] + }, + "execution_count": 147, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "from sklearn.metrics import roc_curve\n", + "fpr, tpr, thresholds = roc_curve(y_train, train_pred)\n", + "plt.plot(fpr, tpr)\n", + "plt.plot([0,1],[0,1],'k--')" + ] + }, + { + "cell_type": "code", + "execution_count": 151, + "id": "91554394", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
Survived
Embarked
C0.553571
Q0.389610
S0.336957
\n", + "
" + ], + "text/plain": [ + " Survived\n", + "Embarked \n", + "C 0.553571\n", + "Q 0.389610\n", + "S 0.336957" + ] + }, + "execution_count": 151, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "df1 = df_base.copy()\n", + "df_base[['Embarked', 'Survived']].groupby(['Embarked']).mean()" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "f7debb78", + "metadata": {}, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.11.2" + } + }, + "nbformat": 4, + "nbformat_minor": 5 +}