diff --git a/1、人才招聘数据分析/第3组-夏添/homework/泰坦尼克号.ipynb b/1、人才招聘数据分析/第3组-夏添/homework/泰坦尼克号.ipynb
deleted file mode 100644
index 53dbf8d..0000000
--- a/1、人才招聘数据分析/第3组-夏添/homework/泰坦尼克号.ipynb
+++ /dev/null
@@ -1,1827 +0,0 @@
-{
- "cells": [
- {
- "cell_type": "code",
- "execution_count": 362,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:38:58.495322900Z",
- "start_time": "2023-07-14T07:38:58.195320400Z"
- }
- },
- "outputs": [],
- "source": [
- "import pandas as pd\n",
- "import numpy as np\n",
- "import matplotlib.pyplot as plt\n",
- "import seaborn as sns\n",
- "import itertools\n",
- "from scipy import stats,integrate\n",
- "plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签\n",
- "plt.rcParams['axes.unicode_minus']=False #用来正常显示负号"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "## 1 数据预处理"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 363,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:38:58.778198800Z",
- "start_time": "2023-07-14T07:38:58.215319400Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": " PassengerId Survived Pclass \\\n0 1 0 3 \n1 2 1 1 \n2 3 1 3 \n3 4 1 1 \n4 5 0 3 \n\n Name Sex Age SibSp \\\n0 Braund, Mr. Owen Harris male 22.0 1 \n1 Cumings, Mrs. John Bradley (Florence Briggs Th... female 38.0 1 \n2 Heikkinen, Miss. Laina female 26.0 0 \n3 Futrelle, Mrs. Jacques Heath (Lily May Peel) female 35.0 1 \n4 Allen, Mr. William Henry male 35.0 0 \n\n Parch Ticket Fare Cabin Embarked \n0 0 A/5 21171 7.2500 NaN S \n1 0 PC 17599 71.2833 C85 C \n2 0 STON/O2. 3101282 7.9250 NaN S \n3 0 113803 53.1000 C123 S \n4 0 373450 8.0500 NaN S ",
- "text/html": "
\n\n
\n \n \n | \n PassengerId | \n Survived | \n Pclass | \n Name | \n Sex | \n Age | \n SibSp | \n Parch | \n Ticket | \n Fare | \n Cabin | \n Embarked | \n
\n \n \n \n | 0 | \n 1 | \n 0 | \n 3 | \n Braund, Mr. Owen Harris | \n male | \n 22.0 | \n 1 | \n 0 | \n A/5 21171 | \n 7.2500 | \n NaN | \n S | \n
\n \n | 1 | \n 2 | \n 1 | \n 1 | \n Cumings, Mrs. John Bradley (Florence Briggs Th... | \n female | \n 38.0 | \n 1 | \n 0 | \n PC 17599 | \n 71.2833 | \n C85 | \n C | \n
\n \n | 2 | \n 3 | \n 1 | \n 3 | \n Heikkinen, Miss. Laina | \n female | \n 26.0 | \n 0 | \n 0 | \n STON/O2. 3101282 | \n 7.9250 | \n NaN | \n S | \n
\n \n | 3 | \n 4 | \n 1 | \n 1 | \n Futrelle, Mrs. Jacques Heath (Lily May Peel) | \n female | \n 35.0 | \n 1 | \n 0 | \n 113803 | \n 53.1000 | \n C123 | \n S | \n
\n \n | 4 | \n 5 | \n 0 | \n 3 | \n Allen, Mr. William Henry | \n male | \n 35.0 | \n 0 | \n 0 | \n 373450 | \n 8.0500 | \n NaN | \n S | \n
\n \n
\n
"
- },
- "execution_count": 363,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# 导入,读取数据\n",
- "titanic_df = pd.read_csv('train.csv')\n",
- "titanic_df.head()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "数据集的属性列表:\n",
- "- PassengerId – 乘客编号,每个ID对应与唯一的乘客\n",
- "- Pclass – 船舱等级,1 一等舱,2 二等舱,3 三等舱\n",
- "- Sex – 乘客性别,0 男性,1 女性\n",
- "- Age – 乘客年龄\n",
- "- SibSp - 同辈亲属数量(比如兄弟姐妹或者配偶)\n",
- "- Parch – 非同辈亲属数量(比如父母和子女)\n",
- "- Fare – 船票价格\n",
- "- Embarked – 上船的港口,0S (South Ampton), 1C (Cherbourg), 2Q (Queenstown)\n",
- "\n",
- "数据集的标签:\n",
- "- Survived – 该乘客是否幸存, 0 遇难,1幸存"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 364,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:38:58.778198800Z",
- "start_time": "2023-07-14T07:38:58.245340Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "\n",
- "RangeIndex: 891 entries, 0 to 890\n",
- "Data columns (total 12 columns):\n",
- " # Column Non-Null Count Dtype \n",
- "--- ------ -------------- ----- \n",
- " 0 PassengerId 891 non-null int64 \n",
- " 1 Survived 891 non-null int64 \n",
- " 2 Pclass 891 non-null int64 \n",
- " 3 Name 891 non-null object \n",
- " 4 Sex 891 non-null object \n",
- " 5 Age 714 non-null float64\n",
- " 6 SibSp 891 non-null int64 \n",
- " 7 Parch 891 non-null int64 \n",
- " 8 Ticket 891 non-null object \n",
- " 9 Fare 891 non-null float64\n",
- " 10 Cabin 204 non-null object \n",
- " 11 Embarked 889 non-null object \n",
- "dtypes: float64(2), int64(5), object(5)\n",
- "memory usage: 83.7+ KB\n"
- ]
- }
- ],
- "source": [
- "# 观察数据完整性\n",
- "titanic_df.info()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "有三个属性存在数据缺失:**Age,Cabin 和 Embarked\n",
- "**"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 365,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:38:58.858194900Z",
- "start_time": "2023-07-14T07:38:58.265322400Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": " PassengerId Survived Pclass Age SibSp \\\ncount 891.000000 891.000000 891.000000 714.000000 891.000000 \nmean 446.000000 0.383838 2.308642 29.699118 0.523008 \nstd 257.353842 0.486592 0.836071 14.526497 1.102743 \nmin 1.000000 0.000000 1.000000 0.420000 0.000000 \n25% 223.500000 0.000000 2.000000 20.125000 0.000000 \n50% 446.000000 0.000000 3.000000 28.000000 0.000000 \n75% 668.500000 1.000000 3.000000 38.000000 1.000000 \nmax 891.000000 1.000000 3.000000 80.000000 8.000000 \n\n Parch Fare \ncount 891.000000 891.000000 \nmean 0.381594 32.204208 \nstd 0.806057 49.693429 \nmin 0.000000 0.000000 \n25% 0.000000 7.910400 \n50% 0.000000 14.454200 \n75% 0.000000 31.000000 \nmax 6.000000 512.329200 ",
- "text/html": "\n\n
\n \n \n | \n PassengerId | \n Survived | \n Pclass | \n Age | \n SibSp | \n Parch | \n Fare | \n
\n \n \n \n | count | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n 714.000000 | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n
\n \n | mean | \n 446.000000 | \n 0.383838 | \n 2.308642 | \n 29.699118 | \n 0.523008 | \n 0.381594 | \n 32.204208 | \n
\n \n | std | \n 257.353842 | \n 0.486592 | \n 0.836071 | \n 14.526497 | \n 1.102743 | \n 0.806057 | \n 49.693429 | \n
\n \n | min | \n 1.000000 | \n 0.000000 | \n 1.000000 | \n 0.420000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n
\n \n | 25% | \n 223.500000 | \n 0.000000 | \n 2.000000 | \n 20.125000 | \n 0.000000 | \n 0.000000 | \n 7.910400 | \n
\n \n | 50% | \n 446.000000 | \n 0.000000 | \n 3.000000 | \n 28.000000 | \n 0.000000 | \n 0.000000 | \n 14.454200 | \n
\n \n | 75% | \n 668.500000 | \n 1.000000 | \n 3.000000 | \n 38.000000 | \n 1.000000 | \n 0.000000 | \n 31.000000 | \n
\n \n | max | \n 891.000000 | \n 1.000000 | \n 3.000000 | \n 80.000000 | \n 8.000000 | \n 6.000000 | \n 512.329200 | \n
\n \n
\n
"
- },
- "execution_count": 365,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# 观察数据基本统计信息\n",
- "titanic_df.describe()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "
\n",
- "\n",
- "## 1.1 属性分析\n",
- "\n",
- "- PassengerId – 随机赋予的乘客编号;理论上与该乘客是否存活不存在任何关联关系,所以**删除PassengerId属性**\n",
- "- Name - 乘客姓名,同上,无关属性\n",
- "- Pclass – 船舱等级;与是否存活下来有关\n",
- "- Sex – 乘客性别;与是否存活下来有关\n",
- "- Age – 乘客年龄;与是否存活下来有关\n",
- "- SibSp - 同辈亲属数量;与是否存活下来有关\n",
- "- Parch – 非同辈亲属数量;与是否存活下来有关\n",
- "- Fare – 船票价格;与是否存活下来有关\n",
- "- Embarked – 上船的港口,0S (South Ampton), 1C (Cherbourg), 2Q (Queenstown)\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 366,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:38:58.868200600Z",
- "start_time": "2023-07-14T07:38:58.305356200Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": " Survived Pclass Sex Age SibSp Parch Ticket Fare \\\n0 0 3 male 22.0 1 0 A/5 21171 7.2500 \n1 1 1 female 38.0 1 0 PC 17599 71.2833 \n2 1 3 female 26.0 0 0 STON/O2. 3101282 7.9250 \n3 1 1 female 35.0 1 0 113803 53.1000 \n4 0 3 male 35.0 0 0 373450 8.0500 \n\n Cabin Embarked \n0 NaN S \n1 C85 C \n2 NaN S \n3 C123 S \n4 NaN S ",
- "text/html": "\n\n
\n \n \n | \n Survived | \n Pclass | \n Sex | \n Age | \n SibSp | \n Parch | \n Ticket | \n Fare | \n Cabin | \n Embarked | \n
\n \n \n \n | 0 | \n 0 | \n 3 | \n male | \n 22.0 | \n 1 | \n 0 | \n A/5 21171 | \n 7.2500 | \n NaN | \n S | \n
\n \n | 1 | \n 1 | \n 1 | \n female | \n 38.0 | \n 1 | \n 0 | \n PC 17599 | \n 71.2833 | \n C85 | \n C | \n
\n \n | 2 | \n 1 | \n 3 | \n female | \n 26.0 | \n 0 | \n 0 | \n STON/O2. 3101282 | \n 7.9250 | \n NaN | \n S | \n
\n \n | 3 | \n 1 | \n 1 | \n female | \n 35.0 | \n 1 | \n 0 | \n 113803 | \n 53.1000 | \n C123 | \n S | \n
\n \n | 4 | \n 0 | \n 3 | \n male | \n 35.0 | \n 0 | \n 0 | \n 373450 | \n 8.0500 | \n NaN | \n S | \n
\n \n
\n
"
- },
- "execution_count": 366,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# 从数据集中删除PassengerId,Name变量\n",
- "titanic_df.drop(['PassengerId','Name'], axis=1, inplace=True)\n",
- "# 观察更新后的数据\n",
- "titanic_df.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 367,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:38:58.988228100Z",
- "start_time": "2023-07-14T07:38:58.335358Z"
- }
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\ipykernel_launcher.py:1: FutureWarning: In a future version of pandas all arguments of Series.dropna will be keyword-only\n",
- " \"\"\"Entry point for launching an IPython kernel.\n"
- ]
- },
- {
- "data": {
- "text/plain": "",
- "image/png": "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lh588EH98pe/1LXXXqvHH39cdru9SXOe7b635D7gwrN582ZFRkYqNDRUkmSz2TR69Gi1adNG0umfC+vWrVNaWpri4+P19NNPq7a21rUuJSVFGzZs0IsvvqgbbrhBO3bscK3bu3evRowYoYSEBGVnZzc63eaDDz7QzTffrMTERD377LP66aefJEmzZs3ShAkTXNf7zyNMZ9rfihUrdMMNNyg1NVW5ubm6/vrrVVxc7K6HDxeQkpISXX755bJYLJKkrl27qn379vr0009P+/NGOvNz5d1339VNN92kxMREvfTSS/r5jZUmTJigmTNnaurUqbr66qs1ZMgQ7dq1S5LkdDo1Y8YM9e3bVwkJCXr22WfldDp18OBBxcTEaPTo0dq7d69iYmIUExOjgwcPSpIaGhr0pz/9SUlJSUpJSdGCBQskSStXrtTIkSMlScOGDdMLL7ygY8eOKTY2VpWVlRo1apQWLFigxx57TH369NHdd9/NL7huQMCe50JCQjRjxgz95S9/0U033aR3333XtW7fvn0aM2aMRo4cqfz8fFVXVzf6IXc6s2bNUmFhocLDw/X666+rsLBQ999/v2t9SUmJPvroI/3tb3/Tbbfdpueee65Js27YsEFXXXWVrrnmGv373/92BaUkVVdX64knntC8efN09913KzY21hW5//jHP3T77bcrLy9Pe/fu1cyZM88659nue0vvAy485eXl6tSpU6Nljz76qDp27Hja76M9e/Zo3LhxGj16tJYsWaKvvvpKb7zxRqPb+NOf/qT9+/frhRde0MUXX+xa/t577+mxxx7T/PnztXbtWi1cuFCS9NVXX2nChAn6/e9/r3feeUdbt27VCy+80OT7car9VVVVadKkSXrhhRc0fvx4FRQU6N1339Ull1zSoscKF7ajR4+qQ4cOjZZ16NCh0f/X/6czPVcKCws1ceJETZgwQW+99ZaWLl2q5cuXu7ZduHChAgICVFBQoE6dOun111+XdPxnxuLFi/Xmm2/q7bff1po1a7R+/XqFhoaqsLBQr7/+usLDw1VYWKjCwkLXL6dvvfWW3nvvPc2ePVvTp0/XK6+8otWrV+uKK67Qnj175HA4FBQUpD179mjPnj0KDw93vV/9q6++qvj4eC1btkw//PCDK37RcgTsBeCWW27Rxx9/rBEjRmjy5MnKzc2VJC1fvlxXX3217rzzTkVGRmrq1Klas2aN67fN02nXrp0CAwNltVpd/+3n5+da/+OPPyo3N1fdunVTenq69u3b16Q5169frz59+igyMlLBwcHauHGja92wYcMUHR2t0NBQDRgwQOHh4a4jT9dcc42GDx+u6Oho/eY3v9HatWvPOufZ7ntL7wMuPPX19af9SOvTfR+tXLlSV1xxhe644w5FR0fr3nvvdX3f/iwgIEDPP/+8rr/+erVr1861fMCAAerfv79iY2M1cuRIffjhh5KkJUuWKC0tTQMGDFD37t315JNPatGiRWrqW32fan979uxR+/btdf3112vQoEE6ePCgLBaL6+gycC4cDsdZr3Om58qyZcs0YMAApaSkKDY2VsOGDWv0PAoPD1dmZqYiIiI0ePBg1/Ovbdu2kqS6ujpddtllWr16tfr16yeLxaLAwEC1a9dOVqtVgYGBCgwMdB0xXrhwocaPH69evXopMTFRo0eP1t/+9jd169ZN1dXVKikpUXR0tI4dO6ZvvvlGPXv2dM1y9dVXa/To0erWrZtSU1O1f/9+tz2OFyofowdA6zpw4IB++uknRUVFafz48bruuut03333adSoUdq3b58iIiJc1w0LC5Ofn98pY62mpqbJ++zevbtCQkIkSb6+vk3a5tixY9q8ebO++uorvfnmmzp27JjWr1+vm266SZJcPzBP9YMzPDy80X1oyp9mznbfW3IfcGEKDAw86QhSWlqa0tLSTvt9tH//fn399deKj4+XdPxPkydGqqTTvoPBid+34eHhrl+69u3bp4SEBNe6qKgo1dTUqKKi4qTbONXz+VT7u/jii3X06FF9++232r9/vzp27Og6GgU0V8eOHV2np6xYsUKHDx8+5VHZE78/z/Rc2b9/v7744gvXurq6ukanHpz4fDjx+XfdddfpwQcf1FNPPaXy8nLdcsstmjBhgvz9/c84//79+xUZGem6HBUVpYKCAlmtVsXGxurjjz9WdHS09u/fr9LS0kYBe9111zWahc+QOncE7Hnu/fff15o1azR//nxJx5/QPj4+Onr0qLp27droKOeBAwdUW1urrl27qrS0tNFvx1u3bj3pti0WyymfhAEBAc2es7CwUDabTcuXL5fNZtOKFSu0ZMmSJm174gsA9u3bd9IP2FPNeab7vnPnzhbdB1yYYmNjtXv3btntdgUEBKi+vl7fffed6uvrT/t9dNFFF6l///568sknJR0/EvXjjz82us7pfpie+AtmeXm56/s9PDxcZWVlrnVlZWVq27atOnXqJIvFctbn86n25+vrq0svvVSDBw+WzWbTc889J6uVP9yhZWJiYrRixQo5nU5ZLBbNmjVLx44dU2Vl5Wm/P8/0XLnooot01113uU4Nq6+vb3Q7p3v+lZWVaeDAgXrooYd08OBB/frXv9bf//53/epXv5IkWa3WU/5s+/k51qdPH9ftdO3aVZLUs2dPrVq1So888ojKysq0du1ajR8//qyzoOX4f6Lz3PXXX6/NmzdrxYoVOnDggGbNmqXOnTvr0ksvVVpamjZv3qxFixaprKxMzzzzjAYMGKDQ0FCFhYVp586dstvtqqio0Ny5c0+67aioKH322WcqLy/X559/fk5zrl+/Xtdcc426deumiIgIDRw4UGVlZfr222/Puu2WLVu0dOlSffPNN/rzn/+sm2+++axznum+A81xzTXXqHv37nrmmWdUVlammTNnKjAw8IzfS4MHD9Y///lP7dmzR35+fpo/f76ysrKatL9Vq1bpH//4h7Zv36533nlHqampkqQ77rhDBQUFWr16tXbt2qWcnBzdddddslgsCgsLU1FRkerq6rRnzx7XebNn89577yksLEzvvvuuPv30Uw0aNKhJ2wGn0r9/f9XU1GjmzJnq06ePbDab4uLidM0115z2582ZnivDhw/X2rVrdejQIfn4+OiPf/yj6zUQZ7JhwwY9+uij2rZtm+to74kvhoyMjFR5ebm2bdumPXv2aNu2bZKkO++8U6+88oq2bdumTZs26a233tLdd98tSbriiitUVFSk6OhodevWTUVFRY2OwML9CNjzXExMjKZPn65Zs2bplltu0RdffKFXX31Vfn5+Cg8P1+zZs7VgwQKNGDFC/v7+mj59uiSpb9++SkpKUlpamsaMGaOHHnropNt+4okn9Mknn6h///7n/ObqGzZsUN++fV2Xu3fvri5dumj9+vVn3bZ///5avHixRowYoaioKD3yyCNnnfNM9x1oDqvVqtdee00VFRUaMmSINm3apDlz5sjH5/R/4IqKilJubq5ycnJ00003afv27XrppZeatL+UlBS99NJL+uUvf6nrr79e9957rySpd+/eysnJ0fPPP6977rlHvXr1UmZmpqTjERAWFqZbbrlFWVlZGjduXJP2deONN+rLL7/U3XffrcTERPXt21eLFy9u0rbAfwoICNBrr72mtWvX6uabb1bHjh1VVVV1xp83Z3quxMfHa/z48XriiSd06623qq6uTlOmTDnrHLfddpsSEhL0wAMPaOjQoa5za3920UUXKSMjQ7/61a80bNgwbd68WZJ03333adCgQfrNb36jJ598Uo8++qgGDBgg6fgRWJvNpqioKNfrNcLCwtz58OE/WJyciAETmzVrlvbu3aucnByjRwHOO7///e/VtWtXjRo1ShaLRcuXL1dBQYHy8/ONHg3ngbq6Ov3zn//U9ddfb/QoMCHOgQUAnFJaWppeeOEFvfnmm5KkHj166Pe//72xQ+G84evrS7yixTgCCwAAAFPhHFgAAACYCgELAAAAUyFgAQAAYCoELAAAAEyFgAUAN/riiy8UExPT6N/VV199xm1mzZqlCRMmuHWO/Pz8034cbXO0xmwAcK54Gy0AcLOAgAB9/PHHrssWi8XAaQDg/EPAAoCbWSwWBQYGGj0GAJy3OIUAADwgJSVFkydP1rXXXqucnBw9+OCDSkxM1FdffSVJqqqq0ujRo3XNNdcoMzNTx44dc227evVq3XzzzerTp4/uu+8+HThwwLVu1KhRys/P17x589S/f399+umnJ+370KFDSk1N1dKlS13L3n33Xd10001KTEzUSy+9pJ/fEryurk7Z2dlKSEjQbbfdpu+//761HhIAaDECFgDc7IcfflB8fLzr3zPPPCNJqq6u1hNPPKF58+bp7rvvVmxsrD777DNJ0tq1azVs2DDl5eVp9+7deuWVVyQdD9vHH39cDz30kD766COFhITotddea7S/hQsX6rPPPtPUqVN11VVXNVr3448/6qGHHtIdd9yhESNGSJIKCws1ceJETZgwQW+99ZaWLl2q5cuXS5L+9re/ae3atZo/f74effRRFRQUtOZDBQAtwikEAOBm7du317vvvuu63K5dO61bt07Dhg1TmzZtFBoaqgEDBmj16tWqr6+XJMXFxSk9PV2SNGbMGD3//PN64okn1K5dO3388cfq0KGD/v3vf+vYsWM6fPhwo/0dO3ZM8+fPl5+fX6PlDQ0Nevzxx3XkyBGNHTvWtXzZsmUaMGCAUlJSJEnDhg1zBfSqVas0cuRIxcbGKjY2Vqmpqa3xEAHAOSFgAcDNrFarIiIiTlrepk2bRv97ohOv37VrVx08eFCS5HQ69eKLL2rt2rW69NJL1b59ezkcjkbb3n333SfFqyR9+eWXSk5Olr+/v1avXq0BAwZIkvbv368vvvhC8fHxko6fNhATEyNJOnjwoMLDw123ERUV5ZoFALwFAQsAXmDfvn2u/y4vL1doaKgkacWKFdqyZYvWrl2r9u3ba8GCBfrggw8abevv73/K24yKitLMmTP1ySef6KWXXlL//v1ls9l00UUX6a677tL9998vSaqvr3dFcUhIiMrLy1238f3338vX19eddxUAzhnnwAKAmzmdTh09erTRv4aGhjNus3nzZi1btkx79uzRn//8Z9ef96urq+V0OlVVVaVPP/1Ur732musFV2cTFhamtm3b6uabb5avr6/y8/MlScOHD9fatWt16NAh+fj46I9//KNmzpwp6fiLzd555x1t375d69at06pVq1r+QABAK+EILAC4md1uV0JCQqNlp/oT/4mSkpK0ePFiPfvss0pKStJvf/tbSdKIESP0ySefaNCgQbr88st111136Z133tFPP/10ylMRTsViseixxx7T1KlTlZaWpvj4eI0fP15PPPGEDh48qOuvv17Tpk2TdPxdDfbs2aNf/vKXioyMdJ12AADexOJs6q/yAAAAgBfgFAIAAACYCgELAAAAUyFgAQAAYCoELAAAAEyFgAUAAICpELAAAAAwFQIWAAAApkLAAgAAwFQIWAAAAJgKAQsAAABTIWABAABgKv8fnONf4FrgfJkAAAAASUVORK5CYII=\n"
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "titanic_df[\"Embarked\"] = titanic_df[\"Embarked\"].dropna(0)\n",
- "\n",
- "f, ax = plt.subplots(figsize = (8, 6))\n",
- "sns.countplot(x=\"Embarked\", data=titanic_df,hue=\"Survived\") # hue=\"Survived\"\n",
- "ax.set_xticklabels([\"South Ampton\",\"Cherbourg\",\"Queenstown\"])\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 368,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:38:58.988228100Z",
- "start_time": "2023-07-14T07:38:58.565320400Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": " Embarked Survived\n0 C 0.553571\n1 Q 0.389610\n2 S 0.336957",
- "text/html": "\n\n
\n \n \n | \n Embarked | \n Survived | \n
\n \n \n \n | 0 | \n C | \n 0.553571 | \n
\n \n | 1 | \n Q | \n 0.389610 | \n
\n \n | 2 | \n S | \n 0.336957 | \n
\n \n
\n
"
- },
- "execution_count": 368,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# 分析不同码头上船的乘客们的生存几率\n",
- "titanic_df[['Embarked', 'Survived']].groupby(['Embarked'], as_index=False).mean().sort_values(by='Embarked', ascending=True)"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "#### Age | 存在多项缺失值,由于年龄是数值型数据,运用随机森林进行预测填充"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 369,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:38:58.988228100Z",
- "start_time": "2023-07-14T07:38:58.588191400Z"
- }
- },
- "outputs": [],
- "source": [
- "from sklearn.ensemble import RandomForestRegressor"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 370,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:01.660752600Z",
- "start_time": "2023-07-14T07:38:58.608196700Z"
- }
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\base.py:451: UserWarning: X does not have valid feature names, but RandomForestRegressor was fitted with feature names\n",
- " \"X does not have valid feature names, but\"\n",
- "c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\ipykernel_launcher.py:17: UserWarning: \n",
- "\n",
- "`distplot` is a deprecated function and will be removed in seaborn v0.14.0.\n",
- "\n",
- "Please adapt your code to use either `displot` (a figure-level function with\n",
- "similar flexibility) or `histplot` (an axes-level function for histograms).\n",
- "\n",
- "For a guide to updating your code to use the new functions, please see\n",
- "https://gist.github.com/mwaskom/de44147ed2974457ad6372750bbe5751\n",
- "\n",
- " app.launch_new_instance()\n"
- ]
- },
- {
- "data": {
- "text/plain": "",
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAjoAAAGsCAYAAADUnw0DAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAABw2klEQVR4nO3dd3hUZdrH8e+ZmcykEpIQQu8dIQiEXm2gggqIBRT7ruvu6lrXspa17Ir77rrrru7aC3aKKIooRUSqAlIDCYQWCElIJ3Xq+0dIJJBAEjKZZPL7XNe5dOac58x9npwMd57zFMPj8XgQERER8UMmXwcgIiIi4i1KdERERMRvKdERERERv6VER0RERPyWEh0RERHxW0p0RERExG8p0RERERG/pURHRERE/JYSHREREfFbFl8H0FBkZh5Hc0SDYUBUVJjqw4tUx/VD9Vw/VM/epzquXFm9nI0SnRM8HnQDnUT14X2q4/qheq4fqmfvUx3Xjh5diYiIiN9SoiMiIiJ+S4mOiIiI+C0lOiIiIuK3lOiIiIiI31KiIyIiIn5LiY6IiIj4LSU6IiIi4reU6IiIiIjfUqIjIiIifkuJjoiIiPgtJToiIiLit5ToiIiIiN9SoiMiIiJ+y+LrAETEtwzDqPR9j8dTz5GIiNQ9JToiTZgDyC9xVrov1GomoH7DERGpc0p0RJoowzDIL3Gy6WA2dqerwj6rxcygjhFE2ixq2RGRRk2JjkgTZ3e6KHa4fR2GiIhXqDOyiIiI+C0lOiIiIuK3lOiIiIiI31KiIyIiIn5LiY6IiIj4LSU6IiIi4reU6IiIiIjfUqIjIiIifkuJjoiIiPgtJToiIiLit5ToiIiIiN9SoiMiIiJ+S4mOiIiI+C0lOiIiIuK3lOiIiIiI31KiIyIiIn5LiY6IiIj4LSU6IiIi4reU6IiIiIjfUqIjIiIifkuJjoiIiPgtJToiIiLityy+DkBEqscwjCr3eTyeeoxERKTxUKIj0gg4gPwSZ5X7Q61mAuovHBGRRkOJjkgDZxgG+SVONh3Mxu50nbbfajEzqGMEkTaLWnZERE6hREekkbA7XRQ73L4OQ0SkUVFnZBEREfFbatERkXqlTtUiUp+U6IhIvVGnahGpb0p0RKReqFO1iPiCEh0RqVfqVC0i9UmdkUVERMRvKdERERERv6VER0RERPyWEh0RERHxW0p0RERExG8p0RERERG/pURHRERE/JYSHREREfFbSnRERETEbynREREREb+lREdERET8lhIdERER8VtKdERERMRvKdERERERv6VER0RERPyWEh0RERHxWz5JdBITE5k2bRpxcXHMnj0bj8dz1jJLlixh/PjxjBo1ii+//LLSY5KTk4mNja3rcEVERKSRqvdEx263c+edd9K3b1/mz59PUlISCxYsOGOZxMREHnjgAe666y7efPNNXnrpJfbt23facU8++STFxcXeCl1EREQamXpPdFatWkV+fj6PPPIIHTp04L777mPevHlnLDN37lyGDh3K9OnT6dmzJzNnzuTzzz+vcMzChQtJTU31ZugiIiLSyFjq+wN3795NbGwsQUFBAPTs2ZOkpKSzlhkzZkz56/79+/Pyyy+Xv87OzuZvf/sb//73v7n++utrFZdh1KqY3ymrB9WH99S0jg0Dyg6tqohRg/NV97y1Oee5fF5df6bu5fqhevY+1XHlqlsf9Z7o5Ofn065du/LXhmFgMpnIzc0lPDy80jIFBQUVyoSGhpKenl7++vnnn+fSSy9l4MCBtY4rKiqs1mX9kerD+2pSx0XZhYSGBBLgdJ+2z2YxERRsJSoiuMYxVHXeczlnbT7Pm5+pe7l+qJ69T3VcO/We6JjNZqxWa4X3bDYbxcXFVSY6p5YpOx5g3bp1bNy4kUWLFp1TXJmZx6lGn2i/Zxilv0yqD++paR0bhkFRsZP8gmJKHKcnCI4AE0WFdjLd7mp17K/OeWt7ztp+njc+U/dy/VA9e5/quHJl9XI29Z7ohIeHs2fPngrvFRQUEBAQcMYyWVlZpx1fUlLCk08+ydNPP01w8Ln9FejxoBvoJKoP76tJHXtO+W9l+2vzMzvTeWt7ztp+ntc+U/dyvVA9e5/quHbqvTNyv3792LJlS/nr5ORk7HZ7la05lZWJj48nJiaGrVu3cujQIe655x4GDx7M4MGDARg8eDAbN2701iWICKUtNJVtIiINSb236MTFxZGfn8/8+fOZNm0ar776KiNGjMBsNpOXl0dISAhms7lCmQkTJnD99dcza9Ys2rVrx5w5c7jiiiuIjY1l2bJlFY698MILWbhwIdHR0fV5WSJNigPIL3FWui/Uaqbq9lkRkfpV74mOxWLh2Wef5f777+eFF17AZDIxZ84coDQJWrhwIb17965Q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337bx5H5j7/97W/ceeed5a91L9etuXPnMnbsWGJjY7nxxhtJTk4GVM+1pURHgNLF5u6880769u3L/PnzSUpKKv/HQmrv0KFDPProo9x///2sWrWKTp068dhjj6m+veSLL75g9erVAGRlZfGb3/yGyy+/nE8++YRFixaxfv16H0fY+O3evZsPP/yQxx57DNB3R107dOgQL7/8Mq+88gpff/017du35+GHH1Y9nwuPiMfjWbp0qScuLs5TWFjo8Xg8nl27dnmuu+46H0fV+K1YscLz8ccfl79et26dp3///qpvL8jOzvaMGDHCM2HCBM/8+fM9b7/9tmfixIket9vt8XhK7/H777/fx1E2bi6XyzN9+nTPP//5z/L3dC/Xra+//tpz9913l7/euHGjZ+TIkarnc6AWHQFK/0qLjY0lKCgIgJ49e5Y/YpHaGz9+PNdee2356/3799OxY0fVtxfMnj2biy66iAEDBgCQkJDA0KFDy+fV6t+/Pzt37vRhhI3fRx99RGJiIm3btmX58uXY7Xbdy3WsW7durF+/nl27dnH8+HE+/PBDRo4cqXo+B0p0BID8/HzatWtX/towDEwmE7m5uT6Myr/Y7XbefvttrrvuOtV3HVu/fj3r1q3jwQcfLH/v1DoODQ0lPT3dF+H5hYKCAv7973/Tvn17UlJSeOedd5gxY4bu5TrWrVs3JkyYwFVXXcXgwYPZsmULf/zjH1XP50CJjgBgNptPm23aZrNRXFzso4j8z7///W+CgoKYPn266rsOlZSU8OSTT/LUU08RGhpa/v6pdaz6PTdLly6lqKiId999l7vvvpu3336bgoIC5s+fr3u5Dm3bto3vvvuOTz/9lI0bNzJp0iTuuOMOfWecAyU6AkB4eDhZWVkV3isoKCAgIMBHEfmXdevW8cEHH/D3v/+dgIAA1XcdeuWVVzjvvPMYN25chfdPrWPV77lJTU0lNjaWyMhIACwWCz179iQvL0/3ch368ssvufzyy4mNjSUsLIw//OEPJCcn6zvjHFh8HYA0DP369WPu3Lnlr5OTk7Hb7YSHh/swKv+QnJzM/fffzxNPPEG3bt0A1XddWrRoEdnZ2QwePBiA4uJivv76awDOP//88uPi4+OJiYnxSYz+oFWrVpSUlFR4LyUlhUcffZT333+//D3dy+fG7XaTnZ1d/rqgoICioiIsFgtbtmwpf1/1XH1q0REA4uLiyM/PZ/78+QC8+uqrjBgxArPZ7OPIGrfi4mLuvPNOLrzwQi6++GIKCgooKChg8ODBqu868uGHH7Jo0SIWLlzIwoULueCCC7j77rv57rvv2Lx5M2vXrsXhcPDGG28watQoX4fbaI0dO5a9e/fy0UcfkZqaynvvvcfu3bu55JJLdC/XocGDB7N06VLeeecdFi1axF133UV0dDQ33nij6rmWtKinlFu+fDn3338/NpsNk8nEnDlzylsgpHaWLVvGb3/729PeX758OQkJCapvL3j44YcZMmQIU6dO5aOPPuK5554jODiYsLAwPvnkE1q0aOHrEButTZs28cILL7B7926io6N59NFHueCCC/TdUYc8Hg+vvPIK8+bN49ixY3Tv3p3nnnuOPn36qJ5rSYmOVHDs2DF27txJbGwsERERvg7H76m+vS85OZl9+/YxePBgQkJCfB2O39K9XD9UzzWnREdERET8lvroiIiIiN9SoiMiIiJ+S4mOiIiI+C0lOiIiIuK3lOiIiIiI31KiIyKN2rp16+jVqxcZGRm+DkVEGiAlOiLSqK1evRqPx8OaNWt8HYqINEBKdESkUVu7di1Dhgxh7dq1vg5FRBogJToi0mhlZWWxe/dubr311gotOrt372bSpEkMGTKEv/zlL0ycOJE5c+YAsGrVKiZPnszgwYN57LHHsNvtvgpfROqBEh0RabTWrl1Lp06dGDFiBDk5OSQkJADw1FNPcfnll/Pee+8xb948nnvuOa644goOHjzIXXfdxaxZs5g3bx7btm3jjTfe8PFViIg3KdERkUZrzZo1DBgwAJvNRp8+fcofX+3atYuJEyfSq1cvunfvztGjRwkPD2fx4sX07t2b6dOn06lTJ2bMmMGKFSt8fBUi4k0WXwcgIlJba9asITs7m6VLl1JcXExYWBi33HILHTp0YMuWLURERHDgwIHyFZ5TU1PZtWsXgwcPBsDlchEcHOzLSxARL1OiIyKN0t69e0lLS+PTTz8lKiqKjRs38uSTT2K32+nWrRvPPvssjz/+ODNnzqRXr14AtGrVivHjx/PHP/4RALfbTVFRkS8vQ0S8TImOiDRKq1evpmPHjsTGxgLQvHlzHnvsMebOncvGjRv56KOPCAsLo3Xr1uVlyvrtHDx4kO7du/P666+zadMmFixY4KvLEBEvU6IjIo3S2rVrGTZsWPnr0NBQ+vXrx+HDh4mKiuLGG2/k+PHjWCwWrrrqKp5++mk6dOjA7Nmzef7550lOTqZ///784x//8OFViIi3GR6Px+PrIERE6srcuXNZsmQJzz77LIGBgSQkJPCrX/2KtWvXEhoa6uvwRKSeqUVHRPzKsGHD+PLLL5k0aRIlJSW0adOG+++/X0mOSBOlFh0RERHxW5pHR0RERPyWEh0RERHxW0p0RERExG8p0RERERG/pURHRERE/JYSHREREfFbSnRERETEbynREREREb/1/4ww/5T0UNQFAAAAAElFTkSuQmCC\n"
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "age_df = titanic_df[[\"Age\", \"Fare\", \"Parch\", \"SibSp\", \"Pclass\"]].copy() # .copy()用于复制原始数据 挑选数值型字段\n",
- "\n",
- "# 分割有缺失值的数据集\n",
- "age_df_notnull = age_df.loc[age_df.Age.notnull()]\n",
- "age_df_isnull = age_df.loc[age_df.Age.isnull()]\n",
- "\n",
- "# 利用非缺失数据建模\n",
- "x = age_df_notnull.iloc[:, 1:]\n",
- "y = age_df_notnull.values[:, 0]\n",
- "x_test = age_df_isnull.values[:, 1:]\n",
- "\n",
- "rfr = RandomForestRegressor(n_estimators=1000, n_jobs=-1)\n",
- "rfr.fit(x, y)\n",
- "y_pred = rfr.predict(x_test)\n",
- "\n",
- "titanic_df.loc[titanic_df[\"Age\"].isnull(), \"Age\"] = y_pred\n",
- "sns.distplot(titanic_df[\"Age\"].dropna(), kde=True, bins=50, fit=stats.gamma)\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "### 对Age属性的进一步处理尝试:划分为多个年龄段"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 371,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:01.765674400Z",
- "start_time": "2023-07-14T07:39:01.660752600Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": " AgeLevel Survived\n0 (0.34, 20.315] 0.428571\n1 (20.315, 40.21] 0.369732\n2 (40.21, 60.105] 0.398601\n3 (60.105, 80.0] 0.217391",
- "text/html": "\n\n
\n \n \n | \n AgeLevel | \n Survived | \n
\n \n \n \n | 0 | \n (0.34, 20.315] | \n 0.428571 | \n
\n \n | 1 | \n (20.315, 40.21] | \n 0.369732 | \n
\n \n | 2 | \n (40.21, 60.105] | \n 0.398601 | \n
\n \n | 3 | \n (60.105, 80.0] | \n 0.217391 | \n
\n \n
\n
"
- },
- "execution_count": 371,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "titanic_df['AgeLevel'] = pd.cut(titanic_df['Age'], 4)\n",
- "titanic_df[['AgeLevel', 'Survived']].groupby(['AgeLevel'], as_index=False).mean().sort_values(by='AgeLevel', ascending=True)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 372,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:01.765674400Z",
- "start_time": "2023-07-14T07:39:01.686083800Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": " Survived Pclass Sex Age SibSp Parch Ticket Fare \\\n0 0 3 male 1 1 0 A/5 21171 7.2500 \n1 1 1 female 1 1 0 PC 17599 71.2833 \n2 1 3 female 1 0 0 STON/O2. 3101282 7.9250 \n3 1 1 female 1 1 0 113803 53.1000 \n4 0 3 male 1 0 0 373450 8.0500 \n\n Cabin Embarked \n0 NaN S \n1 C85 C \n2 NaN S \n3 C123 S \n4 NaN S ",
- "text/html": "\n\n
\n \n \n | \n Survived | \n Pclass | \n Sex | \n Age | \n SibSp | \n Parch | \n Ticket | \n Fare | \n Cabin | \n Embarked | \n
\n \n \n \n | 0 | \n 0 | \n 3 | \n male | \n 1 | \n 1 | \n 0 | \n A/5 21171 | \n 7.2500 | \n NaN | \n S | \n
\n \n | 1 | \n 1 | \n 1 | \n female | \n 1 | \n 1 | \n 0 | \n PC 17599 | \n 71.2833 | \n C85 | \n C | \n
\n \n | 2 | \n 1 | \n 3 | \n female | \n 1 | \n 0 | \n 0 | \n STON/O2. 3101282 | \n 7.9250 | \n NaN | \n S | \n
\n \n | 3 | \n 1 | \n 1 | \n female | \n 1 | \n 1 | \n 0 | \n 113803 | \n 53.1000 | \n C123 | \n S | \n
\n \n | 4 | \n 0 | \n 3 | \n male | \n 1 | \n 0 | \n 0 | \n 373450 | \n 8.0500 | \n NaN | \n S | \n
\n \n
\n
"
- },
- "execution_count": 372,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "titanic_df.loc[titanic_df['Age'] <= 20.315, 'Age'] = 0\n",
- "titanic_df.loc[(titanic_df['Age'] > 20.315) & (titanic_df['Age'] <= 40.21), 'Age'] = 1\n",
- "titanic_df.loc[(titanic_df['Age'] > 40.21) & (titanic_df['Age'] <= 60.105), 'Age'] = 2\n",
- "titanic_df.loc[titanic_df['Age'] > 60.105, 'Age'] = 3\n",
- "titanic_df['Age'] = titanic_df['Age'].astype(int)\n",
- "titanic_df.drop(['AgeLevel'], axis=1, inplace=True)\n",
- "titanic_df.head()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "### Pclass | 船舱等级,可以看出等级越高,存活率越高,成正相关"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 373,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:02.015704400Z",
- "start_time": "2023-07-14T07:39:01.715705Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": "",
- "image/png": "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9rOfhdatra3VihUrlJSUpDfffFOvv/66JGnLli1qaGjQggUL9KMf/Uhjx45VfHy8U28RaLNJkyZp+/bt3/qc6667Tg888AD7DvB38fHx2rhxo6Kjo2XbR/8H5EAgEDoyyr5zciNgERapqamaPn26fvjDH2r37t2KiorS6tWr9dlnn2nnzp1auXKlJOngwYOaNGlSq3VdLpe2bdumxx57TD/5yU/kdrvV3Nys2bNn62c/+5kGDRqkUaNGqaCgQL/97W+5Oxsi3tKlS+VyuWRZ1lGXNzc3y+0+/OOZfQc4zLKsdt28iH3n5MYpBGi3QCCg5uZmuVyu0B+yxxIMBtXc3KyoqKij/mF944036oYbbtDll19+zNe4/PLLtXDhQt1www268847tXnzZrndbjU1NemRRx6RJHk8Hl199dU67bTT9Oyzzyo6OvrE3iQQ4dh3cCry+/1qaWlRTEzMEcsCgYAOHTqk2NjYb30N9p2TA0dg0W4ffPCBbrjhhnats2bNGp1xxhltunPa1z+EoqOjW50kv3r1ar355ptqampSc3OzEhISdMstt4SW5+Tk6Dvf+Q4/RHBS8fl8crlc7DuApPfee0833XTTMZfHx8frvffek8S+c7LjCCzarba2Vm+99ZaioqKOu9P6fD41Nzfr3Xff1dtvv/2tP0h27typPn36yOVyyefzaeHChfrtb3+rsrIyJScny+1266uvvlJWVpbmzZunyZMn68Ybb1S/fv20du1aud3uVucwASeDGTNm6L/+67/YdwAdviB43759R/2zJxgMqqWlRf369ZPEvnOy4wgs2i05OVkTJ05s1zoTJ05UMBg85jl/LS0tSk9P1wsvvKDU1NTQ408++aRycnI0d+5ceb1eeTwevfnmm6HlaWlpGjRokDZv3qyGhoYOvR8gkj3wwAPsO8DfxcTE6PTTT2/Tc9l3Tm4ELMKmuLhYL730krp163bMHyjXX3+9mpub9fOf/1zXXHONpMOf+xcdHa2pU6fqpz/96RHrTJ48WeXl5frVr37VleMDjmHfATqGfefkRcAibKZOnaqpU6dq8eLFsiyr1XlEX/9N+M9//nOrvwnv379fBw8e1Hnnnadx48apqanpiNedOXOmEhISZFmWXn/9dV122WXheDtAu3m9Xn3++efHvfhR+r/Pgx06dCj7Dk55gUBALS0tx7wg+JtaWlp04MABJSUlse+cxAhYhF12drZyc3N1/vnn6/zzz5ek0A+If/xsv82bNystLU2SdNttt4U+fkiS3G63GhoadMEFF0iSVq5cqVWrVvGDBBGrvLxct912m9xu9zE/x/JrgUBAPp9P7777rnr06CGJfQenrq1btx7xUVdtWedr7DsnHwIWYTdgwAA988wzGjx4sCRp3rx5+tvf/qbvfOc7SklJafXcNWvWKCcnR5JUU1Ojxx57TEVFRZKkf/mXf9Gdd94ZWqe2tlazZ88O4zsB2ufCCy886r3V24p9B6eqQYMG6bXXXpPb7T7uEdiv//L3Tew7Jx8+hQCOq6mp0f79+5Wenn7ElaWffvqpEhIS1LNnTwWDQXm9XsXFxTk0KRBZ2HeAjmHfMR8BCwAAAKN8+0lYAAAAQIQhYAEAAGAUAhYAAABGIWABAABgFAIWAAAARiFgASBM3n33XaWlpSktLU3p6ekaP358q3usf5vPP/889OHqAHCq40YGABBGcXFxev3119XU1KQ33nhD//7v/65XXnlFffr0cXo0ADAGR2ABIIwsy1JCQoJ69+6ta6+9Vqmpqdq0aZPTYwGAUQhYAHCQy+VSc3OzPv74Y1133XX63ve+p+uvv15VVVVtWv/999/XpEmTlJGRoauvvlrV1dWhZevXr9fYsWOVkZGh66+/Xv/7v/8bWvbyyy9rzJgxOv/883Xrrbeqrq6u098bAHQVAhYAHPL2229r27ZtOvfcc3Xbbbfp0ksv1SuvvKJhw4bp5z//+XHXDwQCuueee5STk6PXXntNmZmZKi4uDi3/xS9+oauuukqvvPKKBg0apF//+teSJI/Ho6lTp6qgoEAvv/yyXC6XFi9e3GXvEwA6G+fAAkAYHThwQMOHD9ehQ4cUHR2t6dOnq6qqSgkJCbrjjjskSXfddZfefvvtNr3eypUrlZiYqIqKCu3fv1/bt28PLYuJiVFLS4sSExM1Z84ctbS0SJLcbnfoyG/v3r315JNPKhAIdP6bBYAuwhFYAAijHj166C9/+Ytee+01vffee7rmmmu0a9cupaamhp6TmJiosWPHHve1bNvWM888o4svvlgPPPCA9u/f3ypEH374Yb377ru65JJLdNNNN4VOS+jWrZseffRRLV26VP/8z/+sKVOm6Msvv+z8NwsAXYSABYAwsm1bqamp6tOnjyzLkiT17dtXO3fuDD3H6/Vq3Lhx2rt377e+1rvvvqvly5dr9erVWr58ua6++urQsoMHD8rv92vx4sXasGGDLrjgAk2dOlWS1NDQoJSUFP3Hf/yH1q9fr6SkJD344INd8G4BoGsQsADgsKysLDU2NmrhwoX68ssv9eSTT8rv9yslJeVb1/N6vZKk/fv36/3339fcuXMVDAYlSX6/X7feeqtWrVql2tpaBYNB+f1+SVJtba1uvPFGlZWVqaGhIfR8ADAFAQsADouPj9dTTz2l//zP/9QVV1yhjz76SL/5zW9CR2iP5eKLL9bo0aN11VVXadasWbr22mu1Z88e7du3T3FxcXr44Yf15JNPKicnR6+//rpmz54tSRo0aJDuvfdezZo1Szk5Odq+fbt++ctfhuOtAkCnsIJf/3UdAAAAMABHYAEAAGAUAhYAAABGIWABAABgFAIWAAAARiFgAQAAYBQCFgAAAEYhYAEAAGAUAhYAAABGIWABAABgFAIWAAAARiFgAQAAYJT/D6BAX0HDdeFkAAAAAElFTkSuQmCC\n"
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "titanic_df[['Pclass', 'Survived']].groupby(['Pclass'], as_index=False).mean()\n",
- "\n",
- "f, ax = plt.subplots(figsize = (8, 6))\n",
- "sns.countplot(x=\"Pclass\", hue=\"Survived\", data=titanic_df)\n",
- "ax.set_xticklabels([\"一等舱\",\"二等舱\",\"三等舱\"])\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "### Sex | 性别,可以看出女性存活率比男性高"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 374,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:02.125704Z",
- "start_time": "2023-07-14T07:39:01.945677300Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": "",
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAArAAAAIKCAYAAADbFXylAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAAAq8UlEQVR4nO3df5yVdZ3//+c5A8MP+REgsioQhYWJwrZBlJER/ihF3VWy1vpq7bbrF7BPtbqtkb/TbcG+uq26bLaibZQbBabiamb2g1xFP7tGbSqoYEXmisgPnVlhYGa+f7jONusPGGXOmbfc77ebtxvnus51rtfMbbzmweG6rlNpb29vDwAAFKJa7wEAAKArBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEXpVe8Baumpp56JD84FAOh5KpVk2LCBu/TcPSpg29sjYAEACucUAgAAiiJgAQAoioAFAKAoe9Q5sAAA9dTW1pbW1h31HqMuGhp6pVrdPe+dClgAgG7W3t6ep5/emGefbar3KHXVr9+ADBo0NJVK5VW9joAFAOhmz8frgAFD0tjY51UHXGna29vT0rItTU2bkiSDBw97Va8nYAEAulFbW2tHvA4YMKje49RNY2OfJElT06YMHDjkVZ1O4CIuAIBu1NramuR/Am5P9vz34NWeByxgAQBqYE87beDF7K7vgYAFAKijX/ziP/Knf/r/5MgjD8unPjUnTz65vlv3d999/5YPfOC4bnntW25Zlk984rRuee3fJWABAOpk69atmTv3zMyc+cF8/evfSv/+/fO3f/vFbt3nhAm/n3/6p3/u1n10NwELAFAnv/zlo2lqeiYzZhyfESN+L3/yJ3+WtrbWbt1nr169stdeA7p1H91NwAIA1MmIESNSqVTz1a9enR07duTNbz4w8+Zd9oJ/in/88d9m6tRJHY8/8YnTcssty/LNb349M2cem7vvvjNJ8rWvXZPPf/7cjuetXftIjjnm8OzY8T8XTb3YKQQ7227Firty6qkfyvvfPy3z5l2UlpaWjud+9atX59hjj8wf//GJeeih1bvpO/PyBCwAQJ0MGTI05557Yb75za/nj//4hHz3u/+yy9veeOP1+b//99585jOfy0EHHZwkmTZteu69d0Xa29uTPBeeU6cell69Xv7OqS+33W9+sy5z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gP34xz+e66+/Pkly77335uijj86UKVNy7bXXdnred7/73bz3ve/N1KlTc/PNN9djVAAAeoC6BuxNN92UO++8M0mycePGzJ49OzNmzMjixYuzbNmyrFixIkny0EMP5S//8i8zZ86cLFy4MJdffnnWrl1bz9EBAKiTugXs5s2bM3/+/LzhDW9I8lzM7rPPPjn99NMzZsyYzJkzJ0uWLEmSfPvb386UKVNy0kknZdy4cfnIRz6SG2+8sV6jAwBQR73qteP58+fniCOOyLZt25Ikq1evzpQpU1KpVJIkEyZMyKWXXpokWbVqVQ477LCObSdMmJC///u/7/I+//uloSb8vAHAruvK7826BOyKFSty99135+abb87FF1+cJGlqasrYsWM7njNgwICsX78+SdLc3JyRI0e+6LquGDZs4KucHHbNkCF71XsEAHjNqnnAbtu2Leeff34uuOCCDBgwoGN5Q0NDGhsbOx736dMnW7du3em6rnjqqWfS3v4qhn8FGhqqYmYPtGlTc1pb2+o9BgAUo1LZ9Tcbax6wCxYsyMEHH5xp06Z1Wj548OBs3Lix43Fzc3N69+6903Vd0d6emgcsey4/awDQPWoesMuWLcumTZsyadKkJMnWrVtz6623Jkne+ta3djzvgQceyIgRI5IkhxxySFauXJmTTjrpBesAANiz1Dxgr7vuuuzYsaPj8SWXXJKJEyfmhBNOyLRp03LXXXdl8uTJufrqqzN16tQkyfve976cfPLJOfXUUzNy5MgsWrQoxx9/fK1HBwCgB6h5wP7e7/1ep8f9+/fPkCFDMnTo0MydOzennXZa+vfvn4EDB2bevHlJkgMPPDCnnnpqZs6cmT59+uT1r399PvzhD9d6dAAAeoBKe3vPOlNv3bp1Wbt2bSZNmpS99up88dMjjzySJ554IpMnT+50Udeu2rCh9hdx9er13EVcH/nSzVn12Madb0DRDtx/aL7x6WOzaVNzduxwERcA7KpKJdl77x56EdfOjBo1KqNGjXrRdQcccEAOOOCAGk8EAEBPUtePkgUAgK4SsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEURsAAAFEXAAgBQFAELAEBRBCwAAEWpW8A+/fTT+dnPfpYtW7bUawQAAApUl4C99dZbM3369Jxzzjl5z3vek1tvvTVJ8tBDD2XmzJmZPHly5s+fn/b29o5t7r333hx99NGZMmVKrr322nqMDQBAD1DzgH3mmWdy4YUX5utf/3qWLVuW8847L1/84hfT0tKSWbNmZfz48Vm6dGnWrFmT66+/PkmycePGzJ49OzNmzMjixYuzbNmyrFixotajAwDQA9Q8YJuamvK5z30uBx54YJLkoIMOyqZNm7J8+fI0NTVl7ty5GT16dM4444wsWbIkSXLTTTdln332yemnn54xY8Zkzpw5HesAANiz9Kr1Dvfdd98cf/zxSZLt27fnn/7pn3LkkUdm1apVmThxYvr165ckGTduXNasWZMkWb16daZMmZJKpZIkmTBhQi699NIu7/u/N4ea8PMGALuuK783ax6wz1u1alU++tGPpnfv3rnllluyYMGCjBw5smN9pVJJtVrNli1b0tTUlLFjx3asGzBgQNavX9/lfQ4bNnC3zA47M2TIXvUeAQBes+oWsOPGjcvChQvzN3/zNznnnHMyatSoNDY2dnpOnz59snXr1jQ0NHRa9/zyrnrqqWfyO9eF1URDQ1XM7IE2bWpOa2tbvccAgGJUKrv+ZmPdArZSqeTggw/OvHnzcuSRR+aMM87Iww8/3Ok5zc3N6d27dwYPHpyNGze+YHlXtben5gHLnsvPGgB0j5pfxHXvvfdm/vz5HY8bGxtTqVQyduzYrFy5smP5unXr0tLSksGDB+eQQw7ptO6BBx7IiBEjajg1AAA9Rc0DdsyYMfnWt76VxYsX5/HHH89ll12Wd73rXXnPe96TpqamLF26NEly1VVX5dBDD01DQ0OmT5+e++67L3fddVe2b9+eq6++OlOnTq316AAA9AA1D9h99tknl19+eb72ta9lxowZefbZZ3PJJZekV69eufjii3PRRRdlypQpueOOO/KXf/mXSZKhQ4dm7ty5Oe200/Kud70rjz76aGbPnl3r0QEA6AEq7e0960y9J598Mvfff38mTpyYIUOGdFq3bt26rF27NpMmTcpee3X9wqgNG2p/EVevXs9dxPWRL92cVY9t3PkGFO3A/YfmG58+Nps2NWfHDhdxAcCuqlSSvffu4RdxvZThw4dn2rRpL7pu1KhRGTVqVG0HAgCgR6n5KQQAAPBqCFgAAIoiYAEAKIqABQCgKAIWAICiCFgAAIoiYAEAKIqABQCgKAIWAICiCFgAAIoiYAEAKIqABQCgKAIWAICiCFgAAIoiYAEAKIqABQCgKAIWAICiCFgAAIoiYAEAKIqABQCgKAIWAICiCFgAAIoiYAEAKIqABQCgKAIWAICiCFgAAIoiYAEAKMpuCdj29va0trbujpcCAICX1eWAveCCC9LS0tJp2YoVK3LMMcfstqEAAOCldDlgFy9e/IKAPeCAA/LYY4/ttqEAAOCl9NrVJ95www1JnjtdYNmyZenXr1/H4xUrVuTggw/ulgEBAOB37XLALl26NElSqVSybNmyNDQ0JEmq1WpGjx6dyy67rHsmBACA37HLAbto0aIkyYEHHpivfOUrGTBgQLcNBQAAL6XL58B+6EMfSmNjY3fMAgAAO7XL78A+78ILL0xLS0sef/zxtLe3d1q333777bbBAADgxXQ5YL/xjW9k/vz52b59e6eArVQqefDBB3frcAAA8L91OWAvv/zynHXWWfngBz+Y3r17d8dMAADwkrp8Duxee+2Vd7zjHeIVAIC66HLAnnPOOTn33HPz8MMPd8c8AADwsrp8CsHFF1+czZs35/jjj8+gQYM63U7rjjvu2K3DAQDA/9blgJ03b153zAEAALukywE7cuTI7pgDAAB2SZcDdvr06alUKh230KpUKh3r3EYLAIDu1uWAXbVqVceft27dml/84he54oor8tGPfnS3DgYAAC+my3ch+F19+/bNpEmT8uUvfzlXXnnl7poJAABe0qsK2Odt3rw5Tz311O54KQAAeFmv+BzY57W3t2f9+vU59dRTd+tgAADwYl71bbQqlUpGjBiR0aNH77ahAADgpXT5FIK3v/3tefvb356+fftm48aN6dOnj3gFAKBmuvwO7BNPPJHZs2fnl7/8ZUaMGJH169dnzJgxWbBgQUaMGNEdMwIAQIcuvwN73nnn5eCDD86KFSty66235u6778748eNz7rnndsd8AADQSZcD9t///d8ze/bsNDY2JkkaGxsza9as3Hfffbt9OAAA+N+6HLBvfvOb853vfKfTsu985zt505vetNuGAgCAl9Llc2AvuOCCfPzjH8+yZcsycuTIrFu3Ls3Nzbnmmmu6Yz4AAOikywH75je/Obfddlt++MMf5vHHH88JJ5yQadOmpX///t0xHwBQZ9VqJdVqZedP5DWhra09bW3t9R7jZXU5YB955JF85jOfyWmnnZY/+7M/y3HHHZcFCxbkiiuuyBve8IbumBEAqJNqtZIhr+uXakNDvUehRtpaW7Np87M9OmK7HLDnnXdeJk+enKlTpyZJFi9enAULFuT888/P1772td0+IABQP9VqJdWGhmy4/rPZvmFtvcehm/Xe+43Z+8R5qVYrr62AffDBB/OlL30pAwcOTJL0798/p5xySo455pjdPhwA0DNs37A22//zwXqPAUlewV0Ixo0b94K7ENx4443uQgAAQE28olMI/vzP/zw33nhjRo4cmcceeyxbtmzJ1Vdf3R3zAQBAJ10O2IMOOii33XZbfvSjH+Xxxx/P8ccfn2nTpmXAgAHdMR8AAHTS5YBNkgEDBuTYY4/d3bMAAMBOdfkcWAAAqCcBCwBAUQQsAABFEbAAABRFwAIAUBQBCwBAUQQsAABFEbAAABRFwAIAUBQBCwBAUQQsAABFEbAAABRFwAIAUBQBCwBAUQQsAABFEbAAABRFwAIAUBQBCwBAUQQsAABFEbAAABSlLgH7/e9/P4cffngOOuig/OEf/mHWrFmTJHnooYcyc+bMTJ48OfPnz097e3vHNvfee2+OPvroTJkyJddee209xgYAoAeoecD++te/zuc+97mceeaZWb58ecaMGZOzzz47LS0tmTVrVsaPH5+lS5dmzZo1uf7665MkGzduzOzZszNjxowsXrw4y5Yty4oVK2o9OgAAPUDNA3bNmjU588wzc8wxx2TvvffOySef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\n"
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "titanic_df[[\"Sex\", \"Survived\"]].groupby(['Sex'], as_index=False).mean()\n",
- "\n",
- "f, ax = plt.subplots(figsize = (8, 6))\n",
- "sns.countplot(x=\"Sex\", hue=\"Survived\", data=titanic_df)\n",
- "ax.set_xticklabels([\"男性\",\"女性\"])\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "### SibSp + Parch | 家属们"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 375,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:02.283849400Z",
- "start_time": "2023-07-14T07:39:02.125704Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": " Survived Pclass Sex Age Ticket Fare Cabin Embarked \\\n0 0 3 male 1 A/5 21171 7.2500 NaN S \n1 1 1 female 1 PC 17599 71.2833 C85 C \n2 1 3 female 1 STON/O2. 3101282 7.9250 NaN S \n3 1 1 female 1 113803 53.1000 C123 S \n4 0 3 male 1 373450 8.0500 NaN S \n\n IsAlone \n0 1 \n1 1 \n2 0 \n3 1 \n4 0 ",
- "text/html": "\n\n
\n \n \n | \n Survived | \n Pclass | \n Sex | \n Age | \n Ticket | \n Fare | \n Cabin | \n Embarked | \n IsAlone | \n
\n \n \n \n | 0 | \n 0 | \n 3 | \n male | \n 1 | \n A/5 21171 | \n 7.2500 | \n NaN | \n S | \n 1 | \n
\n \n | 1 | \n 1 | \n 1 | \n female | \n 1 | \n PC 17599 | \n 71.2833 | \n C85 | \n C | \n 1 | \n
\n \n | 2 | \n 1 | \n 3 | \n female | \n 1 | \n STON/O2. 3101282 | \n 7.9250 | \n NaN | \n S | \n 0 | \n
\n \n | 3 | \n 1 | \n 1 | \n female | \n 1 | \n 113803 | \n 53.1000 | \n C123 | \n S | \n 1 | \n
\n \n | 4 | \n 0 | \n 3 | \n male | \n 1 | \n 373450 | \n 8.0500 | \n NaN | \n S | \n 0 | \n
\n \n
\n
"
- },
- "execution_count": 375,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# Family = SibSp + Parch\n",
- "titanic_df['FamilySize'] = titanic_df['SibSp'] + titanic_df['Parch']\n",
- "titanic_df['IsAlone'] = 0\n",
- "titanic_df.loc[titanic_df['FamilySize'] == 1, 'IsAlone'] = 1\n",
- "\n",
- "# 删除原有的列 Parch & SibSp\n",
- "titanic_df.drop(['SibSp'], axis=1, inplace=True)\n",
- "titanic_df.drop(['Parch'], axis=1, inplace=True)\n",
- "titanic_df.drop(['FamilySize'], axis=1, inplace=True)\n",
- "titanic_df.head()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "### Fare | 使用分位数对数据进行划分,可以得到大小基本相等的bin,转换为数值型数据"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 376,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:02.285818600Z",
- "start_time": "2023-07-14T07:39:02.165706300Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": " FareLevel Survived\n0 (-0.001, 7.91] 0.197309\n1 (7.91, 14.454] 0.303571\n2 (14.454, 31.0] 0.454955\n3 (31.0, 512.329] 0.581081",
- "text/html": "\n\n
\n \n \n | \n FareLevel | \n Survived | \n
\n \n \n \n | 0 | \n (-0.001, 7.91] | \n 0.197309 | \n
\n \n | 1 | \n (7.91, 14.454] | \n 0.303571 | \n
\n \n | 2 | \n (14.454, 31.0] | \n 0.454955 | \n
\n \n | 3 | \n (31.0, 512.329] | \n 0.581081 | \n
\n \n
\n
"
- },
- "execution_count": 376,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "titanic_df['FareLevel'] = pd.qcut(titanic_df['Fare'], 4)\n",
- "titanic_df[['FareLevel', 'Survived']].groupby(['FareLevel'], as_index=False).mean().sort_values(by='FareLevel', ascending=True)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 377,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:02.285818600Z",
- "start_time": "2023-07-14T07:39:02.185677800Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": " Survived Pclass Sex Age Ticket Fare Cabin Embarked \\\n0 0 3 male 1 A/5 21171 0 NaN S \n1 1 1 female 1 PC 17599 3 C85 C \n2 1 3 female 1 STON/O2. 3101282 1 NaN S \n3 1 1 female 1 113803 3 C123 S \n4 0 3 male 1 373450 1 NaN S \n\n IsAlone \n0 1 \n1 1 \n2 0 \n3 1 \n4 0 ",
- "text/html": "\n\n
\n \n \n | \n Survived | \n Pclass | \n Sex | \n Age | \n Ticket | \n Fare | \n Cabin | \n Embarked | \n IsAlone | \n
\n \n \n \n | 0 | \n 0 | \n 3 | \n male | \n 1 | \n A/5 21171 | \n 0 | \n NaN | \n S | \n 1 | \n
\n \n | 1 | \n 1 | \n 1 | \n female | \n 1 | \n PC 17599 | \n 3 | \n C85 | \n C | \n 1 | \n
\n \n | 2 | \n 1 | \n 3 | \n female | \n 1 | \n STON/O2. 3101282 | \n 1 | \n NaN | \n S | \n 0 | \n
\n \n | 3 | \n 1 | \n 1 | \n female | \n 1 | \n 113803 | \n 3 | \n C123 | \n S | \n 1 | \n
\n \n | 4 | \n 0 | \n 3 | \n male | \n 1 | \n 373450 | \n 1 | \n NaN | \n S | \n 0 | \n
\n \n
\n
"
- },
- "execution_count": 377,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "titanic_df.loc[titanic_df['Fare'] <= 7.91, 'Fare'] = 0\n",
- "titanic_df.loc[(titanic_df['Fare'] > 7.91) & (titanic_df['Fare'] <= 14.454), 'Fare'] = 1\n",
- "titanic_df.loc[(titanic_df['Fare'] > 14.454) & (titanic_df['Fare'] <= 31.0), 'Fare'] = 2\n",
- "titanic_df.loc[titanic_df['Fare'] > 31.0, 'Fare'] = 3\n",
- "titanic_df['Fare'] = titanic_df['Fare'].astype(int)\n",
- "titanic_df.drop(['FareLevel'], axis=1, inplace=True)\n",
- "titanic_df.head()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "### OneHotEncoder | 将类别型变量全部onehot"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 378,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:02.286813500Z",
- "start_time": "2023-07-14T07:39:02.215674700Z"
- }
- },
- "outputs": [],
- "source": [
- "# one-hot编码\n",
- "sex_dummies_titanic = pd.get_dummies(titanic_df['Sex'])\n",
- "sex_dummies_titanic.columns = ['男性', '女性']\n",
- "titanic_df = titanic_df.join(sex_dummies_titanic)\n",
- "\n",
- "embark_dummies_titanic = pd.get_dummies(titanic_df['Embarked'])\n",
- "embark_dummies_titanic.columns = ['港口S', '港口C','港口Q']\n",
- "titanic_df = titanic_df.join(embark_dummies_titanic)\n",
- "\n",
- "class_dummies_titanic = pd.get_dummies(titanic_df['Pclass'])\n",
- "class_dummies_titanic.columns = ['一等舱', '二等舱', '三等舱']\n",
- "titanic_df = titanic_df.join(class_dummies_titanic)\n",
- "\n",
- "age_dummies_titanic = pd.get_dummies(titanic_df['Age'])\n",
- "age_dummies_titanic.columns = ['孩子', '少年', '中年','老人']\n",
- "titanic_df = titanic_df.join(age_dummies_titanic)\n",
- "\n",
- "fare_dummies_titanic = pd.get_dummies(titanic_df['Fare'])\n",
- "fare_dummies_titanic.columns = ['便宜票价', '普通票价', '高级票价','豪华票价']\n",
- "titanic_df = titanic_df.join(fare_dummies_titanic)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 379,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:02.287810500Z",
- "start_time": "2023-07-14T07:39:02.245674500Z"
- }
- },
- "outputs": [],
- "source": [
- "del titanic_df['Sex']\n",
- "del titanic_df['Embarked']\n",
- "del titanic_df['IsAlone']\n",
- "del titanic_df['Pclass']\n",
- "del titanic_df['Age']\n",
- "del titanic_df['Fare']\n",
- "del titanic_df['Cabin']\n",
- "del titanic_df['Ticket']"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "## 2 使用清理后的数据"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 380,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:02.288845300Z",
- "start_time": "2023-07-14T07:39:02.260813800Z"
- }
- },
- "outputs": [],
- "source": [
- "from sklearn.model_selection import train_test_split\n",
- "from sklearn.metrics import precision_recall_curve, roc_auc_score, roc_curve\n",
- "from sklearn.metrics import accuracy_score, mean_squared_error, r2_score, confusion_matrix\n",
- "from sklearn.model_selection import GridSearchCV # 参数调优"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 381,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:02.377666700Z",
- "start_time": "2023-07-14T07:39:02.275845100Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": " Survived 男性 女性 港口S 港口C 港口Q 一等舱 二等舱 三等舱 孩子 少年 中年 老人 便宜票价 普通票价 \\\n0 0 0 1 0 0 1 0 0 1 0 1 0 0 1 0 \n1 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 \n2 1 1 0 0 0 1 0 0 1 0 1 0 0 0 1 \n3 1 1 0 0 0 1 1 0 0 0 1 0 0 0 0 \n4 0 0 1 0 0 1 0 0 1 0 1 0 0 0 1 \n\n 高级票价 豪华票价 \n0 0 0 \n1 0 1 \n2 0 0 \n3 0 1 \n4 0 0 ",
- "text/html": "\n\n
\n \n \n | \n Survived | \n 男性 | \n 女性 | \n 港口S | \n 港口C | \n 港口Q | \n 一等舱 | \n 二等舱 | \n 三等舱 | \n 孩子 | \n 少年 | \n 中年 | \n 老人 | \n 便宜票价 | \n 普通票价 | \n 高级票价 | \n 豪华票价 | \n
\n \n \n \n | 0 | \n 0 | \n 0 | \n 1 | \n 0 | \n 0 | \n 1 | \n 0 | \n 0 | \n 1 | \n 0 | \n 1 | \n 0 | \n 0 | \n 1 | \n 0 | \n 0 | \n 0 | \n
\n \n | 1 | \n 1 | \n 1 | \n 0 | \n 1 | \n 0 | \n 0 | \n 1 | \n 0 | \n 0 | \n 0 | \n 1 | \n 0 | \n 0 | \n 0 | \n 0 | \n 0 | \n 1 | \n
\n \n | 2 | \n 1 | \n 1 | \n 0 | \n 0 | \n 0 | \n 1 | \n 0 | \n 0 | \n 1 | \n 0 | \n 1 | \n 0 | \n 0 | \n 0 | \n 1 | \n 0 | \n 0 | \n
\n \n | 3 | \n 1 | \n 1 | \n 0 | \n 0 | \n 0 | \n 1 | \n 1 | \n 0 | \n 0 | \n 0 | \n 1 | \n 0 | \n 0 | \n 0 | \n 0 | \n 0 | \n 1 | \n
\n \n | 4 | \n 0 | \n 0 | \n 1 | \n 0 | \n 0 | \n 1 | \n 0 | \n 0 | \n 1 | \n 0 | \n 1 | \n 0 | \n 0 | \n 0 | \n 1 | \n 0 | \n 0 | \n
\n \n
\n
"
- },
- "execution_count": 381,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "dataset = titanic_df\n",
- "# 观察数据\n",
- "dataset.head()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 382,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:02.555162900Z",
- "start_time": "2023-07-14T07:39:02.308755400Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": " Survived 男性 女性 港口S 港口C 港口Q \\\ncount 891.000000 891.000000 891.000000 891.000000 891.000000 891.000000 \nmean 0.383838 0.352413 0.647587 0.188552 0.086420 0.722783 \nstd 0.486592 0.477990 0.477990 0.391372 0.281141 0.447876 \nmin 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n25% 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n50% 0.000000 0.000000 1.000000 0.000000 0.000000 1.000000 \n75% 1.000000 1.000000 1.000000 0.000000 0.000000 1.000000 \nmax 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 \n\n 一等舱 二等舱 三等舱 孩子 少年 中年 \\\ncount 891.000000 891.000000 891.000000 891.000000 891.000000 891.000000 \nmean 0.242424 0.206510 0.551066 0.227834 0.585859 0.160494 \nstd 0.428790 0.405028 0.497665 0.419670 0.492850 0.367270 \nmin 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n25% 0.000000 0.000000 0.000000 0.000000 0.000000 0.000000 \n50% 0.000000 0.000000 1.000000 0.000000 1.000000 0.000000 \n75% 0.000000 0.000000 1.000000 0.000000 1.000000 0.000000 \nmax 1.000000 1.000000 1.000000 1.000000 1.000000 1.000000 \n\n 老人 便宜票价 普通票价 高级票价 豪华票价 \ncount 891.000000 891.000000 891.000000 891.000000 891.000000 \nmean 0.025814 0.250281 0.243547 0.257015 0.249158 \nstd 0.158668 0.433418 0.429463 0.437233 0.432769 \nmin 0.000000 0.000000 0.000000 0.000000 0.000000 \n25% 0.000000 0.000000 0.000000 0.000000 0.000000 \n50% 0.000000 0.000000 0.000000 0.000000 0.000000 \n75% 0.000000 0.500000 0.000000 1.000000 0.000000 \nmax 1.000000 1.000000 1.000000 1.000000 1.000000 ",
- "text/html": "\n\n
\n \n \n | \n Survived | \n 男性 | \n 女性 | \n 港口S | \n 港口C | \n 港口Q | \n 一等舱 | \n 二等舱 | \n 三等舱 | \n 孩子 | \n 少年 | \n 中年 | \n 老人 | \n 便宜票价 | \n 普通票价 | \n 高级票价 | \n 豪华票价 | \n
\n \n \n \n | count | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n 891.000000 | \n
\n \n | mean | \n 0.383838 | \n 0.352413 | \n 0.647587 | \n 0.188552 | \n 0.086420 | \n 0.722783 | \n 0.242424 | \n 0.206510 | \n 0.551066 | \n 0.227834 | \n 0.585859 | \n 0.160494 | \n 0.025814 | \n 0.250281 | \n 0.243547 | \n 0.257015 | \n 0.249158 | \n
\n \n | std | \n 0.486592 | \n 0.477990 | \n 0.477990 | \n 0.391372 | \n 0.281141 | \n 0.447876 | \n 0.428790 | \n 0.405028 | \n 0.497665 | \n 0.419670 | \n 0.492850 | \n 0.367270 | \n 0.158668 | \n 0.433418 | \n 0.429463 | \n 0.437233 | \n 0.432769 | \n
\n \n | min | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n
\n \n | 25% | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n
\n \n | 50% | \n 0.000000 | \n 0.000000 | \n 1.000000 | \n 0.000000 | \n 0.000000 | \n 1.000000 | \n 0.000000 | \n 0.000000 | \n 1.000000 | \n 0.000000 | \n 1.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n 0.000000 | \n
\n \n | 75% | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n 0.000000 | \n 0.000000 | \n 1.000000 | \n 0.000000 | \n 0.000000 | \n 1.000000 | \n 0.000000 | \n 1.000000 | \n 0.000000 | \n 0.000000 | \n 0.500000 | \n 0.000000 | \n 1.000000 | \n 0.000000 | \n
\n \n | max | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n 1.000000 | \n
\n \n
\n
"
- },
- "execution_count": 382,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# 继续观察数据基本统计信息\n",
- "dataset.describe()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 383,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:02.608043600Z",
- "start_time": "2023-07-14T07:39:02.388605600Z"
- }
- },
- "outputs": [],
- "source": [
- "# 获得数据集的特征(输入变量)和输出\n",
- "x = np.array(dataset.iloc[:, 1:])\n",
- "y = np.array(dataset.iloc[:, 0])\n",
- "# 分割数据集\n",
- "x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.3, random_state=33)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 384,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:02.645952800Z",
- "start_time": "2023-07-14T07:39:02.408551400Z"
- }
- },
- "outputs": [],
- "source": [
- "# 绘制混淆矩阵函数\n",
- "def plot_confusion_matrix(cm, classes,\n",
- " normalize=False,\n",
- " title='Confusion matrix',\n",
- " cmap=plt.cm.Blues):\n",
- " plt.figure()\n",
- " plt.imshow(cm, interpolation='nearest', cmap=cmap)\n",
- " plt.title(title)\n",
- " plt.colorbar()\n",
- " tick_marks = np.arange(len(classes))\n",
- " plt.xticks(tick_marks, classes, rotation=45)\n",
- " plt.yticks(tick_marks, classes)\n",
- "\n",
- " fmt = '.2f' if normalize else 'd'\n",
- " thresh = cm.max() / 2.\n",
- " for i, j in itertools.product(range(cm.shape[0]), range(cm.shape[1])):\n",
- " plt.text(j, i, format(cm[i, j], fmt),\n",
- " horizontalalignment=\"center\",\n",
- " color=\"white\" if cm[i, j] > thresh else \"black\")\n",
- "\n",
- " plt.tight_layout()\n",
- " plt.ylabel('True label')\n",
- " plt.xlabel('Predicted label')\n",
- " plt.show()"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 385,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:02.665889600Z",
- "start_time": "2023-07-14T07:39:02.420516200Z"
- }
- },
- "outputs": [],
- "source": [
- "# 模型性能评估\n",
- "def model_performance_evaluation(model_name, test, pred):\n",
- " print(model_name, '| 准确率: %.4f' % accuracy_score(test, pred))\n",
- " print(model_name,'| 均方误差: %.4f' % mean_squared_error(test, pred))\n",
- " print(model_name, '| R2-score: %.4f' % r2_score(test, pred))\n",
- " print(model_name, '| 混淆矩阵:\\n', confusion_matrix(test, pred))"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "## 3 对数几率回归模型"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 386,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:02.666887100Z",
- "start_time": "2023-07-14T07:39:02.435478500Z"
- }
- },
- "outputs": [],
- "source": [
- "from sklearn.linear_model import LogisticRegression"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 387,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:02.666887100Z",
- "start_time": "2023-07-14T07:39:02.450465700Z"
- }
- },
- "outputs": [],
- "source": [
- "# 模型参数组合\n",
- "param_lr = {'penalty':['l1','l2'], 'C':[1,1e+2,1e+4], 'max_iter':[1e+2,1e+3,1e+4]}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 388,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:03.199478900Z",
- "start_time": "2023-07-14T07:39:02.468391600Z"
- }
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py:372: FitFailedWarning: \n",
- "45 fits failed out of a total of 90.\n",
- "The score on these train-test partitions for these parameters will be set to nan.\n",
- "If these failures are not expected, you can try to debug them by setting error_score='raise'.\n",
- "\n",
- "Below are more details about the failures:\n",
- "--------------------------------------------------------------------------------\n",
- "45 fits failed with the following error:\n",
- "Traceback (most recent call last):\n",
- " File \"c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\model_selection\\_validation.py\", line 680, in _fit_and_score\n",
- " estimator.fit(X_train, y_train, **fit_params)\n",
- " File \"c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py\", line 1461, in fit\n",
- " solver = _check_solver(self.solver, self.penalty, self.dual)\n",
- " File \"c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\linear_model\\_logistic.py\", line 449, in _check_solver\n",
- " % (solver, penalty)\n",
- "ValueError: Solver lbfgs supports only 'l2' or 'none' penalties, got l1 penalty.\n",
- "\n",
- " warnings.warn(some_fits_failed_message, FitFailedWarning)\n",
- "c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\model_selection\\_search.py:972: UserWarning: One or more of the test scores are non-finite: [ nan 0.78 nan 0.78 nan 0.78 nan 0.78 nan 0.78 nan 0.78 nan 0.78\n",
- " nan 0.78 nan 0.78]\n",
- " category=UserWarning,\n"
- ]
- },
- {
- "data": {
- "text/plain": "LogisticRegression(C=1, max_iter=100.0)"
- },
- "execution_count": 388,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# 建模、训练和预测\n",
- "base_line_model = LogisticRegression() # 默认 penalty='l2'\n",
- "lr = GridSearchCV(estimator=base_line_model, param_grid=param_lr, cv=5, n_jobs=1)\n",
- "lr.fit(x_train, y_train)\n",
- "y_pred_lr = lr.predict(x_test)\n",
- "lr.best_estimator_"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 389,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:03.283591500Z",
- "start_time": "2023-07-14T07:39:03.199478900Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "对数几率回归模型在训练集上的性能 -- \n",
- "LogisticRegression | 准确率: 0.7849\n",
- "LogisticRegression | 均方误差: 0.2151\n",
- "LogisticRegression | R2-score: 0.0889\n",
- "LogisticRegression | 混淆矩阵:\n",
- " [[327 58]\n",
- " [ 76 162]]\n",
- "\n",
- "\n",
- "\n",
- "对数几率回归模型在测试集上的性能 -- \n",
- "LogisticRegression | 准确率: 0.8097\n",
- "LogisticRegression | 均方误差: 0.1903\n",
- "LogisticRegression | R2-score: 0.1986\n",
- "LogisticRegression | 混淆矩阵:\n",
- " [[140 24]\n",
- " [ 27 77]]\n"
- ]
- }
- ],
- "source": [
- "# 模型性能评估\n",
- "print(\"对数几率回归模型在训练集上的性能 -- \")\n",
- "model_performance_evaluation('LogisticRegression', y_train, lr.predict(x_train))\n",
- "print(\"\\n\"*2)\n",
- "print(\"对数几率回归模型在测试集上的性能 -- \")\n",
- "model_performance_evaluation('LogisticRegression', y_test, y_pred_lr)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 390,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:03.473589200Z",
- "start_time": "2023-07-14T07:39:03.223961300Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": "",
- "image/png": "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mjRp4jafQ5LWrVvn1gb4vVZNeQQFBenYsWOu/c2bN2vfvn2u/fXr12vevHm69dZbNWLECL311luqWrWqlixZUq7xmzRpIovF4vY5du/erf379xv6OS4kOztbaWlpGjt2rNLS0hQREaHDhw+fc11YWNglV4x+T3FxsSZNmqQxY8YoIiJCzz77rNfuBeDiMccDFY7FYtHIkSM1evRo1axZUzfffLNmzJihmJgY14TF+++/X3fffbfGjh2rjh07asWKFfr888/16quvGhZHw4YNtWzZMnXv3l0HDx5UVlaWrrjiCtf5oKAgTZ06VcHBwWrcuLF27typ77//vtwVivj4eHXr1k2TJ0+W0+lUtWrVNHXqVNWvX19paWmGfY4LiYmJ0aZNm7R27VodOnRIM2bMkN1u18mTJ92ua9q0qV588UW9//77iomJ0datWw1th4wdO1bx8fEaOHCgGjZsqMGDB7vmzwDwH1Q8UCF17dpVU6ZM0YoVK5Seni6r1aq5c+eqcuXKkk7P55g1a5Y+//xzDR06VJ9//rlmzZrlmlhqhIceekhOp1N/+MMflJmZqREjRui6665znU9KStL48eO1ePFiDR48WM8//7z69eunfv36lfse48ePV69evfTss89qxIgRql+/vubOnauwsDDDPseFPPbYY6pWrZruvfdeTZs2Tb1791bjxo31+eefu113yy23KD09XU899ZQGDx7stnz5Ur3zzjtatWqVxo4dK6vVqpYtWyotLU2PPfYYLRfAz/DkUgAA4DNUPAAAgM+QeAAAAJ8h8QAAAD5D4gEAQAArKSlRamrqOc8+OuOee+5xe7fSZ599pk6dOqlFixYXtRKQxAMAgABVUlKi9PR0t2cMnW3JkiVas2aN2/X33Xef0tLStHDhQi1dulTr1q3z6J4kHgAABKiRI0eqc+fO5z13+PBhTZ48WfXq1XMdW7JkiWrWrKn7779fV199tTIyMlwvyywvEg8AACoQh8Mhm83mtp15eeavjR8/XgMGDDjvucmTJ6t9+/a68cYbXccKCgrUokUL1/uamjZtqi1btngUH4kHAAAmOXDoiOFjHj9+XC1btlTz5s1d2+zZs8977W89KXndunVau3atHnroIbfjNpvN7a3PUVFRKi4u9ii+y/KR6fU7PCrbz2Vmh4FfRFUKU9H7E/m5+Jndq3lXiT8KD5ZK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t9MWFBS47bdr104rV67Uli1blJiYqJiYGNe5Pn36qHXr1ioqKlJSUpIiIyM9uheJBwAAJvLXt9PWqFFDbdq0Oe+5+Pj48y7FLQ/meAAAAJ+h4gEAgIn8odXiS1Q8AACAz1DxAADARP46x8NbSDwAADCRRQa2WowZxqtotQAAAJ+h4gEAgImsFousBpU8jBrHm0g8AAAwEataAAAAvISKBwAAJgq0VS1UPAAAgM9Q8QAAwERWy+nNqLH8HYkHAABmshjYIrkMEg9aLQAAwGeoeAAAYKJAW05L4gEAgIksv/xn1Fj+jlYLAADwGSoeAACYKNBWtVDxAAAAPkPFAwAAEwXak0tJPAAAMFGgrWqh1QIAAHyGigcAACayWiyyGlSqMGocbyLxAADARIHWailX4tG/f/9yTVh57bXXLjkgAABQcZUr8ejRo4e34wAAICCxquU8unfv7u04AAAISIHWamFVCwAA8BkmlwIAYKJAW9XiccXj+PHjmjVrlnr37q1bb71VO3bsUK9evbR7925vxAcAACoQjxOPp556SsuXL1fPnj1lt9sVHh6uZs2a6YknnvBGfAAAVGgWgzd/53HisWLFCk2fPl133XWXgoKCFBQUpKFDh+q///2vN+IDAKBCO7OqxajN33mceMTGxmrDhg2ufYvFop07dyouLs7QwAAAQMXj8eTShx56SPfff78WLVqkY8eO6emnn9bnn3+uyZMneyM+AAAqNKvl9GbUWP7O48QjJSVFy5Yt0/Lly3X99dcrNjZWDz30kOLj470RHwAAFRoPECuHunXrKj093ehYAABABedx4lFaWqoXXnhBK1as0KFDh1StWjW1b99ew4cPV1RUlDdiBACgQrsMChWG8TjxePzxx1VUVKQHH3xQtWvXVnFxsebMmaMnnnhCU6dO9UaMAACggvA48fjoo4+Um5urunXruo5de+216tWrl6GBAQAQCAJtjofHy2kbN26sL7/80u3Y5s2b1bBhQ8OCAgAgUJxZ1WLU5u/KVfHIyspy/ToyMlJZWVl68803ddVVV+ngwYP68ssv1bp1a68FCQAAKoZyJR5XXXWV269vuOEG1369evXUsmVL4yMDACAABFqrpVyJR2Zm5gWvcTgclxwMAACBxsh3rPh/2nERk0sPHTqkmTNnateuXTp58qQkyel0qqioSJ988onhAQIAgIrD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PHBJHA6HNm7cqDfffFNlZWW6/fbbddtttyksLMzs0AC/c3bykZmZqdGjR6tOnTomRwX4FokHDHHy5ElZLBbXH6oAzu/s5AMIRCQeAADAZ0i7AQCAz5B4AAAAnyHxAAAAPkPiAQAAfIbEAwAA+AyJBwAA8BkSD+AX69evV0JCghISEtSoUSN16dJF//nPfwy/R2pq6gWP+UJubq769+/vtevHjBmj6dOnX0xokqTp06drzJgxF/31APwTiQdwlqioKG3YsEGrVq1S//799de//lXfffedV+/ZvHlzLVmyxOOvS01N1fr1670QEQB4D4kHcBaLxaIqVaqoZs2auvPOOxUXF6cNGzZ49Z7BwcGKiory6j0AwF+QeAC/IygoSMePH5f0v9bB22+/rY4dO2rBggWu6zZv3qzevXurefPmyszM1NGjR13nFi9erJSUFKWkpOiTTz455x6/1WpZu3atunTpombNmmnIkCE6ePCgJOmee+5RQkKC9u3bpwEDBighIUEvvfSS6+vy8vLUpUsXJSUl6dFHH5XD4XCde/HFF9WyZUt17NhRW7duvfRvkKRFixapTZs2atasmTIzM2W3213n9u3bp+7duys5OVkTJkzQiRMnXOf+/e9/q0OHDmrRooWmTp0qHqIMBAYSD+A3fPLJJyoqKtJNN93kOrZmzRq9/vrrevjhh11v4P3pp580dOhQpaSkaMmSJbLZbJo0aZIkKT8/X+PGjdMTTzyhl19+We+880657r1nzx6lp6dr4MCBevfddxUVFaVx48ZJOj33YcOGDapdu7ZmzZqlDRs2aNCgQZKkb7/9VhkZGRowYICys7O1efNmzZkzR5L04Ycfat68eXr++ef19NNPa+nSpZf8PdqxY4fGjh2rCRMm6N1339Xhw4fdErJ33nlHf/3rXzV//nx99NFHWrhwoSRpw4YNeuyxxzRmzBjNmzdPb7311kW1mwBcfoLNDgDwJ0ePHlVSUpLKysoUGhqqxx9/XHXr1nWd3717t95//31VrlzZdWz16tUKCQlRZmamLBaL7r77bj388MOSpA8++ECtWrVS+/btJUl33323XnnllQvG8c477ygpKUm9evWSdLrasm3bNklSpUqVJElWq1WVKlVSlSpVXF/37rvv6vrrr1fv3r0lSX379lVOTo4yMjL0wQcfqHPnzkpOTpYk9ezZU1999dVFf68kqU6dOlqzZo3CwsK0efNmnThxQrt27XKdb9++vdq2bStJ6tevn1asWKF+/frp7bffVvv27V2Vnq5du+qjjz5S165dLykeAP6PxAM4S2RkpP79738rJCRENWvWlMVicTvfrVs3t6RDkg4ePKiSkhLXX+inTp2S3W5XWVmZiouLVbt2bde15X0F+oEDBxQXF+faj42NVWxs7AW/7uDBg9q2bZuSkpIknX5r8JlEpbi4WLfccotbLJeaeJSWlurxxx/Xxo0b1bBhQ1mtVp06dcp1/uzPULt2bR06dMgV5/r1611xHj9+XAkJCZcUC4DLA4kHcBar1er2l+WvnflL/GyxsbFq1KiRpk2bJklyOp2y2WwKDg5WtWrVVFBQ4Lr2wIED5Yqjdu3a2rhxo2t/165dGjFihHJzc12vVLdYLOfMi4iNjVXbtm1dFZdTp07p2LFjkqRq1aqpuLjY41h+z2uvvaajR49qzZo1CgkJ0ZQpU1RSUnLeexQXF6t69equOP/85z+7WkQnTpxwS1gAVFzM8QAuUZs2bXTgwAFt3rxZ4eHhWrFihYYMGSKn06m2bdtqzZo1+vjjj7Vjx45ytVkkKS0tTRs3blRubq4OHDigmTNnqlq1aq6kQzpdsfjkk09UXFystWvXun3dt99+q9DQUM2fP19ZWVmSTi+/Xbp0qb744gv997//1aJFiy75s9vtdjmdTpWUlGjp0qV644033JKhlStX6j//+Y8KCgq0YMEC17yYbt266aOPPtL333+v4OBgTZs2Tc8999wlxwPA/5F4AJeoSpUqmjFjhl599VW1b99e7733nmbOnKng4GA1bdpUDz/8sB599FENGzZMt956a7nGjI+Pd42Zlpamn376SX//+9/drhk9erRWr16ttm3buh7UVadOHU2ePFmTJk1Shw4dVFBQoKlTp0qSOnbsqD//+c/KyMhwmxx7KQYOHCiHw6HbbrtNubm56tWrl2suinQ62Zk6dar+8pe/qGXLlurbt68kKSkpScOHD9fo0aPVqVMnHT9+XE8++eQlxwPA/1mcrGEDAAA+QsUDAAD4DIkHAADwGRIPAADgMyQeAADAZ0g8AACAz5B4AAAAnyHxAAAAPkPiAQAAfIbEAwAA+AyJBwAA8Jn/BxzPf8K9ukLQAAAAAElFTkSuQmCC\n"
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# 绘制混淆矩阵\n",
- "cnf_matrix = confusion_matrix(y_test, y_pred_lr)\n",
- "np.set_printoptions(precision=2) # 设置打印数量的阈值\n",
- "class_names = [0, 1]\n",
- "plot_confusion_matrix(cnf_matrix, classes=class_names, title='Confusion matrix')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 391,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:03.699254300Z",
- "start_time": "2023-07-14T07:39:03.480879400Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "该支持向量机模型的AUC值为 0.7970215759849906\n"
- ]
- },
- {
- "data": {
- "text/plain": "",
- "image/png": "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rY4nIiIiqonDg0+HDh1w8uRJ0+O0tDRoNJpab3PVdE5ycjLCwsLsWCURERE1RA4PPvHx8VAqlVi7di0AYOnSpejWrRskEglKSkqg1+urndOnTx9s3boV586dg0qlwqpVq5CQkODo0omIiKieEwmO3g8ewO7du5GUlARPT0+IxWKsWrUKLVu2RGxsLDZs2IC2bdtWO2fhwoX46quv4OnpiejoaHz//ffw8vJydOlERERUjzkl+ABAbm4uzpw5g06dOiEoyLL1dS5evIjs7GzEx8dXmyBNREREdCtOCz5EREREjuaUvbqIiIiInIHBh4iIiNxGgwg+ztrtnaqry2fx2WefoXPnzrjzzjsxbtw4KJVKB1TqHuryeRiVlJQgISEB6enpdqzQfdT1szAYDBg+fDj+97//2blC92HtZyEIAqZPn47OnTsjLi4OEydO5CK6NlRQUIDExESLf9YcOXIEjzzyCLp06YIVK1ZYfb16H3ycuds7mavLZ7Fp0yZs3rwZy5cvxy+//ILU1FQsW7bMQRU3bHX5PKqaN28ecnNz7Vih+7idz+KHH36AQqHA008/becq3UNdPouNGzfi8uXLWL9+Pb777jtcuHABS5cudVDFDVtBQQFGjx6NjIwMi48fM2YMHn30Ufz000/YvHkzDh8+bNU1633wceZu72SuLp9FVlYW5syZg44dOyI6Ohp9+/ZFcnKygypu2OryeRgdPXoUe/bsQWBgoH2LdBN1/Syys7OxcOFCTJkyhavV20hdPotTp06hT58+aNq0KWJjY9GrVy9cu3bNQRU3bBMmTEC/fv0sPn7Tpk0IDQ3FuHHjEBMTg7Fjx1r8c82o3gefuu723rVrV9Pjjh074syZM3at0x3U5bMYNWoU7r77btPjy5cvIzo62q51uou6fB5AxX8RT5s2DVOmTIGvr6+9y3QLdf0sPvjgAzRp0gRZWVk4fvy4vct0C3X5LFq2bInNmzcjLy8PGRkZ2Lp1K7p16+aIchu89957D88884zFx587dw5dunSBqHLb9rp8f9f74HOz3d5rY6vd3slcXT6Lqi5fvoydO3di2LBh9irRrdT181iyZAliYmLQt29fe5foNuryWZw4cQLbt29HeHg4rl27hokTJ+Ldd991RLkNWl0+iyFDhkClUqF79+5ITExE06ZNMWjQIEeU2+BFRUVZdfy/P7+6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\n"
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# 绘制ROC曲线并计算AUC值\n",
- "auc_lr = roc_auc_score(y_test, y_pred_lr)\n",
- "print(f\"该支持向量机模型的AUC值为 {auc_lr}\")\n",
- "fpr_lr, tpr_lr, thresholds = roc_curve(y_test, y_pred_lr)\n",
- "plt.plot(fpr_lr, tpr_lr, label=\"对数几率模型: \"+str(round(auc_lr, 3)))\n",
- "plt.xlabel('False Positive Rate')\n",
- "plt.ylabel('True Positive Rate')\n",
- "plt.title('ROC')\n",
- "plt.xlim([0,1])\n",
- "plt.ylim([0,1.1])\n",
- "plt.grid()\n",
- "plt.legend(loc='lower right')\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "## 4 决策树"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 392,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:03.819282700Z",
- "start_time": "2023-07-14T07:39:03.699254300Z"
- }
- },
- "outputs": [],
- "source": [
- "from sklearn.tree import DecisionTreeClassifier, export_graphviz\n",
- "params_dt = {'criterion':['entropy','gini'], 'splitter':['best', 'random']}"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 393,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:03.829256900Z",
- "start_time": "2023-07-14T07:39:03.709280200Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": "DecisionTreeClassifier()"
- },
- "execution_count": 393,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "base_line_model = DecisionTreeClassifier()\n",
- "dtc = GridSearchCV(estimator=base_line_model, param_grid=params_dt, cv=5, n_jobs=1)\n",
- "dtc.fit(x_train, y_train)\n",
- "y_pred_dt = dtc.predict(x_test)\n",
- "dtc.best_estimator_"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 394,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:03.829256900Z",
- "start_time": "2023-07-14T07:39:03.769282600Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "决策树模型在 训练集 上的性能 -- \n",
- "DecisionTree | 准确率: 0.8411\n",
- "DecisionTree | 均方误差: 0.1589\n",
- "DecisionTree | R2-score: 0.3269\n",
- "DecisionTree | 混淆矩阵:\n",
- " [[350 35]\n",
- " [ 64 174]]\n",
- "\n",
- "\n",
- "\n",
- "决策树模型在 测试集 上的性能 -- \n",
- "DecisionTree | 准确率: 0.8470\n",
- "DecisionTree | 均方误差: 0.1530\n",
- "DecisionTree | R2-score: 0.3558\n",
- "DecisionTree | 混淆矩阵:\n",
- " [[151 13]\n",
- " [ 28 76]]\n"
- ]
- }
- ],
- "source": [
- "# 模型性能评估\n",
- "print(\"决策树模型在 训练集 上的性能 -- \")\n",
- "model_performance_evaluation('DecisionTree', y_train, dtc.predict(x_train))\n",
- "print(\"\\n\"*2)\n",
- "\n",
- "print(\"决策树模型在 测试集 上的性能 -- \")\n",
- "model_performance_evaluation('DecisionTree', y_test, y_pred_dt)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 395,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:04.029279600Z",
- "start_time": "2023-07-14T07:39:03.789280600Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": "",
- "image/png": "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q8vBz87/XKySlp2n4jPm/P+hYgWb/t493pRr+QqTSwEAsJBN5k24LAsTN8tCjQAAoJwgeAAAYKHzczzM2ryxZMkS/eEPf1BCQoIGDRqkffv2SZJ27typ3r17KykpSVOnTpWZszIIHgAAWMgwJJtJmze5Y+/evXrhhRc0e/ZsLV++XLGxsRo3bpycTqdSUlLUuHFjZWZmKj8/X1lZWaa9X4IHAABBaNu2bUpISFDjxo113XXXqXfv3vr222+Vm5sru92u9PR0xcXFafTo0crIyDDtvkwuBQDAQue7FWZdS5LsdrvH/rCwMIWFhXnsa9iwodauXavt27crJiZGixYt0u9//3vt2LFDCQkJioiIkCTFx8crPz/fnAJF8AAAwFK+eI5H27Zt5XA43PtHjBihkSNHepzbsGFDde7c2f0hrzExMVqyZIleeuklxcTEeFzTZrPp2LFjqlat2lXXSPAAAKCcyc3N9Xj9y26HJG3ZskUffvihFi9erAYNGmjevHkaNmyYbr/99ovODw8PV3FxsSnB46rmeDidTrlcLpWU8CAcAACuhFkTSy8csomMjPTYLhU8li1bpq5duyohIUFVqlTRI488on379qlatWoqKiryONfhcCg0NNSc9+vtF9jtdj311FNq3bq1br31VuXl5alt27b6+uuvTSkIAAD4XklJiY4cOeJ+7XA4dPLkSVWoUEGbN29279+3b5+cTqcp3Q7pCoLH448/rgMHDmjKlCmKiIhQlSpVdN9992nixImmFAQAQDA5/yFxZm2llZiYqJycHL366qvKzs5WamqqatasqUGDBslutyszM1OSNHfuXLVu3VohISGmvF+v53h89tlnys7OVp06dWSz2WQYhnr16qUXXnjBlIIAAAgmNsOQzaTJpd5cp3PnzsrPz9eCBQt0+PBh3XjjjZo1a5ZCQ0M1efJkpaWladq0abLZbFq4cKEp9UlXEDwaNGigrKwsDR8+3D0Td8OGDbrxxhtNKwoAAPiWYRgaPny4hg8fftGxDh06KCcnR1u3blVCQoKqV69u2n29Dh5PPvmkHnroIb355ptyOBx65JFHdPDgQb344oumFQUAQLAI1A+Jq1mzptq1a2fiFc/xOng0a9ZMOTk5+vDDD/X9998rOjpa7dq1U5UqVUwvDgCA8s7buRmXu1ag8zp4HDx4UNK5SSnnnThxQidO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\n"
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# 计算混淆矩阵\n",
- "cnf_matrix = confusion_matrix(y_test, y_pred_dt)\n",
- "np.set_printoptions(precision=2) # 设置打印数量的阈值\n",
- "class_names = [0, 1]\n",
- "# 绘制混淆矩阵\n",
- "plot_confusion_matrix(cnf_matrix, classes=class_names, title='Confusion matrix')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 396,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:04.261454300Z",
- "start_time": "2023-07-14T07:39:04.037489900Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "该支持向量机模型的AUC值为 0.825750469043152\n"
- ]
- },
- {
- "data": {
- "text/plain": "",
- "image/png": "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M0tutmz9LN566y2pS5cuNb4GDx7s7LKbrfr83bjc4MGDpfT0dEeX6RLq81msW7dOGjp0qBQRESHdf//9UmJiojNLbrZs/SxKSkqkl156Serfv78UEREhTZ48WSooKHB22c1aly5davxbM3jwYGnnzp11HvvNN99IPXr0kGJiYqTY2FgpLy/Ppns1m01Kudt741Gfz4Ich59H48HPovHgZ9G0paenIykpCdHR0TYvu9Fsgg8RERHRtTT5MT5ERERE1mLwISIiIpfB4ENEREQug8GHiIiIXAaDDxEREbkMBh+iJmzjxo0IDw+v9fXnn39adf7ff//tlIXYZsyYYamtT58+ePbZZ5Gfn2+3a69cudJp59mq+rm7du2K2NhYfPHFFw6/JxFdGYMPURPXpUsXHD58uMZX3759G7qsWsaNG4fDhw/jhx9+gMlkwuuvv26X677++uuYOHFirfevFequdJ4jfP311/jjjz/w4osvYvHixfj999+tOm/jxo14+OGHHVwdkWth8CFq4mQyGXx8fGp8KRSKhi6rFpVKBR8fH3To0AFTpkzBgQMHIIridV/X3d0darXaaefVh6enJ1q2bIkRI0bgjjvuwF9//eWU+xJRbQw+RM3Yrl27MGzYMPTq1QuPPvoocnJyrDpvy5YtiI2NRa9evTBhwoQauyH/9NNPGDp0KPr164dly5ahPmugKhQKiKJoCT5ff/01YmNjMWDAAKxcudLyviRJWLx4Mfr374+YmBi88cYbte737y6rvLw8hIeH45FHHkFGRoalqykvL++q5wHmffwu7yZctGgR5s+fDwAwGAxYvHgxBgwYgNjYWGzdutXm5wYANzc3VFZWAjBvPPrCCy/gxhtvxIABA/DNN98AAI4fP47w8HDMnDkThw4dQnh4OCIiIizX0Gg0mDVrFvr164fhw4fj0KFD9aqFyBUx+BA1cQkJCZbd1KOjoxEfHw8AKCkpwQsvvICnn34av/76K1q2bIkPP/zwmtfTaDSYMWMGpk+fji1btkAul2Pt2rUAgMOHD2P27NmYMWMGPv/8c/z444/YtGmTTfXqdDp888036N27NxQKBXbs2IH3338fCxYswOrVq7F582bLOJgDBw5g/fr1+Oyzz/DVV19h9+7d1+wmCggIwOHDh/HRRx8hNDTU0v0XEBBwzdqGDh2KAwcOWF7v378fw4YN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\n"
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# 绘制ROC曲线并计算AUC值\n",
- "auc_dt = roc_auc_score(y_test, y_pred_dt)\n",
- "print(f\"该支持向量机模型的AUC值为 {auc_dt}\")\n",
- "fpr_dt, tpr_dt, thresholds = roc_curve(y_test, y_pred_dt)\n",
- "plt.plot(fpr_dt, tpr_dt, label=\"决策树: \"+str(round(auc_dt, 3)))\n",
- "plt.plot(fpr_lr, tpr_lr, label=\"对数几率模型: \"+str(round(auc_lr, 3)))\n",
- "plt.xlabel('False Positive Rate')\n",
- "plt.ylabel('True Positive Rate')\n",
- "plt.title('ROC')\n",
- "plt.xlim([0,1])\n",
- "plt.ylim([0,1.1])\n",
- "plt.grid()\n",
- "plt.legend(loc='lower right')\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "## 5 神经网络"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 397,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:04.361343600Z",
- "start_time": "2023-07-14T07:39:04.261454300Z"
- }
- },
- "outputs": [],
- "source": [
- "from sklearn.neural_network import MLPClassifier\n",
- "params_mlp = {'solver':['sgd', 'lbfgs'], 'alpha': [1e-3, 1e-4], 'learning_rate_init':[1e-3, 1e-4] }"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 398,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:35.464584200Z",
- "start_time": "2023-07-14T07:39:04.271325500Z"
- }
- },
- "outputs": [
- {
- "name": "stderr",
- "output_type": "stream",
- "text": [
- "c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:549: 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",
- " self.n_iter_ = _check_optimize_result(\"lbfgs\", opt_res, self.max_iter)\n",
- "c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:549: 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",
- " self.n_iter_ = _check_optimize_result(\"lbfgs\", opt_res, self.max_iter)\n",
- "c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:696: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (1000) reached and the optimization hasn't converged yet.\n",
- " ConvergenceWarning,\n",
- "c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:696: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (1000) reached and the optimization hasn't converged yet.\n",
- " ConvergenceWarning,\n",
- "c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:549: 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",
- " self.n_iter_ = _check_optimize_result(\"lbfgs\", opt_res, self.max_iter)\n",
- "c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:696: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (1000) reached and the optimization hasn't converged yet.\n",
- " ConvergenceWarning,\n",
- "c:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:549: 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",
- " self.n_iter_ = _check_optimize_result(\"lbfgs\", opt_res, self.max_iter)\n"
- ]
- },
- {
- "data": {
- "text/plain": "MLPClassifier(alpha=0.001, hidden_layer_sizes=(6, 6, 6), max_iter=1000,\n solver='lbfgs')"
- },
- "execution_count": 398,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "# 神经网络训练模型\n",
- "base_line_model = MLPClassifier(solver='lbfgs', alpha=1e-5, hidden_layer_sizes=(6, 6, 6), max_iter=1000)\n",
- "mlp = GridSearchCV(estimator=base_line_model, param_grid=params_mlp, cv=5, n_jobs=1)\n",
- "mlp.fit(x_train, y_train)\n",
- "y_pred_nn = mlp.predict(x_test)\n",
- "mlp.best_estimator_"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 399,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:35.474573100Z",
- "start_time": "2023-07-14T07:39:35.464584200Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "神经网络模型在 训练集 上的性能 -- \n",
- "Neural Network | 准确率: 0.8411\n",
- "Neural Network | 均方误差: 0.1589\n",
- "Neural Network | R2-score: 0.3269\n",
- "Neural Network | 混淆矩阵:\n",
- " [[340 45]\n",
- " [ 54 184]]\n",
- "\n",
- "\n",
- "\n",
- "神经网络模型在 测试集 上的性能 -- \n",
- "Neural Network | 准确率: 0.8321\n",
- "Neural Network | 均方误差: 0.1679\n",
- "Neural Network | R2-score: 0.2929\n",
- "Neural Network | 混淆矩阵:\n",
- " [[145 19]\n",
- " [ 26 78]]\n"
- ]
- }
- ],
- "source": [
- "# 模型性能评估\n",
- "print(\"神经网络模型在 训练集 上的性能 -- \")\n",
- "model_performance_evaluation('Neural Network', y_train, mlp.predict(x_train))\n",
- "print(\"\\n\"*2)\n",
- "\n",
- "print(\"神经网络模型在 测试集 上的性能 -- \")\n",
- "model_performance_evaluation('Neural Network', y_test, y_pred_nn)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 400,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:35.725638100Z",
- "start_time": "2023-07-14T07:39:35.464584200Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": "",
- "image/png": "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+Hi98MILru/Lz89Xz549lZiYqEceeUQOh8N17vnnn1fbtm3VtWtXbdmy5fJ/QJIWLlyoDh06qGXLlho9erTsdrvr3P79+9WnTx8lJSVp8uTJOn36tOvcW2+9pS5duqhNmzaaNm2aeIgyEBhIPIDf8Omnn2rXrl1q1aqV69iqVav06quv6sEHH3S9gfeHH37QyJEjlZycrMWLF8tms2nKlCmSpG3btmnixIl67LHH9OKLL+qdd94p07337t2r1NRUDRs2TO+++64iIiI0ceJESWfnPqxbt05169bV7NmztW7dOg0fPlyS9O233yotLU1Dhw5Vdna2Nm7cqLlz50qSVq5cqZdffln/+te/9NRTT2nJkiWX/TPasWOHJkyYoMmTJ+vdd9/VsWPH3BKyd955R/fcc4+ysrL0wQcf6I033pAkrVu3To8++qgeeughvfzyy3rzzTcvqd0EoPwJNjsAwJ/8+OOPSkxM1MmTJxUaGqrx48erfv36rvN79uzR+++/r6pVq7qOffTRRwoJCdHo0aNlsVh0++2368EHH5QkrVixQu3atVPnzp0lSbfffrteeumli8bxzjvvKDExUf369ZN0ttqydetWSVLlypUlSVarVZUrV1a1atVc3/fuu+/q2muvVf/+/SVJgwYNUk5OjtLS0rRixQr16NFDSUlJkqS+ffvq66+/vuSflSTFxcVp1apVCgsL08aNG3X69Gnt3r3bdb5z587q2LGjJGnw4MFavny5Bg8erLfffludO3d2VXp69eqlDz74QL169bqseAD4PxIP4BeqVKmit956SyEhIapdu7YsFovb+d69e7slHZJ08OBBFRcXu/5CLy0tld1u18mTJ1VUVKS6deu6ri3rK9C/++47xcTEuPajo6MVHR190e87ePCgtm7dqsTEREln3xp8LlEpKirSDTfc4BbL5SYeJSUlGj9+vNavX68mTZrIarWqtLTUdf6Xn6Fu3bo6fPiwK87PP//cFeepU6cUHx9/WbEAKB9IPIBfsFqtbn9Z/tq5v8R/KTo6Wk2bNtX06dMlSU6nUzabTcHBwapRo4YKCgpc13733XdliqNu3bpav369a3/37t0aO3ascnNzXa9Ut1gs582LiI6OVseOHV0Vl9LSUp04cUKSVKNGDRUVFXkcy+955ZVX9OOPP2rVqlUKCQnR1KlTVVxcfMF7FBUVqWbNmq44b7vtNleL6PTp024JC4CKizkewGXq0KGDvvvuO23cuFGVKlXS8uXLdeedd8rpdKpjx45atWqVPv74Y+3YsaNMbRZJ6t69u9avX6/c3Fx99913mjVrlmrUqOFKOqSzFYtPP/1URUVFWr16tdv3ffvttwoNDVVWVpYyMjIknV1+u2TJEv33v//VV199pYULF172Z7fb7XI6nSouLtaSJUv02muvuSVDeXl5+uSTT1RQUKAFCxa45sX07t1bH3zwgY4cOaLg4GBNnz5dzz777GXHA8D/kXgAl6latWqaOXOm5s2bp86dO+u9997TrFmzFBwcrBYtWujBBx/UI488orvuuks33nhjmcaMjY11jdm9e3f98MMP+vvf/+52zQMPPKCPPvpIHTt2dD2oKy4uTpmZmZoyZYq6dOmigoICTZs2TZLUtWtX3XbbbUpLS3ObHHs5hg0bJofDoZtuukm5ubnq16+fay6KdDbZmTZtmv7617+qbdu2GjRokCQpMTFRY8aM0QMPPKBu3brp1KlTevzxxy87HgD+z+JkDRsAAPARKh4AAMBnSDwAAIDPkHgAAACfIfEAAAA+Q+IBAAB8hsQDAAD4DIkHAADwGRIPAADgMyQeAADAZ0g8AACAz/w/+ZhQdYFA2fwAAAAASUVORK5CYII=\n"
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# 计算混淆矩阵\n",
- "cnf_matrix = confusion_matrix(y_test, y_pred_nn)\n",
- "np.set_printoptions(precision=2) # 设置打印数量的阈值\n",
- "class_names = [0, 1]\n",
- "# 绘制混淆矩阵\n",
- "plot_confusion_matrix(cnf_matrix, classes=class_names, title='Confusion matrix')"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 401,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:39:35.975613500Z",
- "start_time": "2023-07-14T07:39:35.725638100Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "神经网络的AUC值为 0.8170731707317074\n"
- ]
- },
- {
- "data": {
- "text/plain": "",
- "image/png": "iVBORw0KGgoAAAANSUhEUgAAAj4AAAHBCAYAAABpHrH9AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMywgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/NK7nSAAAACXBIWXMAAA9hAAAPYQGoP6dpAACGbklEQVR4nO3dd3hU1dbA4d/09F7pNQUIoFQRFbFgFy8W7HpVVGyfYAFsqCiCCio27F0EC4IiiqCiV0FEpCQkgRBICKTXmZRp5/tjkgkxbSakz3qfh0cyOXvOngwyi73XWlulKIqCEEIIIYQHUHf0BIQQQggh2osEPkIIIYTwGBL4CCGEEMJjSOAjhBBCCI8hgY8QQgghPIYEPkIIIYTwGBL4CCGEEMJjSOAjhBBCCI8hgY8QQgghPIYEPkKITmfr1q3ExsY6f40bN47bb7+dtLQ05zU//vgj559/PgkJCVx88cVs2bKlznOYzWYWLVrEuHHjGD16NI899hhVVVXt/VKEEJ2MBD5CiE5r0aJFrFq1iscee4yDBw9y9dVXU1JSwt9//83dd99NXFwcr776Kj169OC2224jIyPDOXbBggV8/fXXPPbYYzz11FP8+OOPPPvssx34aoQQnYG2oycghBCNGThwIAkJCQwfPpzBgwdzwQUX8NNPP7Fx40YGDBjAc889h0qlYty4cUyaNImPPvqIefPmcfDgQVatWsWSJUs499xzASgqKmLBggXcfffdBAQEdPArE0J0FFnxEUJ0CYMHD8bb25vs7Gz+/PNPJk6ciEqlAkCv1zN69Gj++usvADZu3IhWq+WMM85wjk9ISMBisXDw4MGOmL4QopOQwEcI0SWUlZVRUVGBt7c3xcXF9OjRo873o6OjOXz4MACpqan06tULvV7v/P7AgQN588036dWrV7vOWwjRuUjgI4To9AoLC3n88cfR6XSceeaZAHh7e9e5xtvbG5PJ5Lw+MDCwzve9vLw49dRTCQkJaZ9JCyE6JcnxEUJ0Wpdeeqnz9yEhITz//PNotQ3/taUoinPry2w2o9Fo2mWOQoiuRVZ8hBCd1nPPPcdXX31FdHQ0EyZMYMqUKfj6+gJQXl5e59qKigrn93x8fOp9PycnhyuvvJIdO3a0z+SFEJ2SBD5CiE6rX79+DBkyhFtuuYXvvvuOgwcP4ufnR0hICFlZWXWuPXr0KL1793aOO3z4MIqiOL+fk5PD33//3a7zF0J0PhL4CCE6vcsuu4ywsDCWL18OwLhx4/jtt9+w2+0AVFVVsW3bNsaMGQPAxIkTKS0t5c8//3Q+x/bt29Hr9QwePLj9X4AQotOQwEcI0enp9Xpuvvlm1q5dS1ZWFv/97385dOgQ999/P7/99hv33HMPVVVVXH311QCcfPLJnHzyycyePZt169bx5ZdfsmzZMqZNm4afn18HvxohREeSwEcI0SVcccUVBAUF8eabbzJ8+HCWLVtGcnIyt912G0ePHmX58uV1StWXLVvG5MmTeeyxx1i4cCHTpk1j3rx5HfgKhBCdgUo5dhNcCCGEEKIbkxUfIYQQQngMCXyEEEII4TEk8BFCCCGEx5DARwghhBAeQwIfIYQQQngMCXyEEEII4TEk8BFCCCGEx5DARwghhBAeQ9vRE2hPBQVlSLtGIYQQomtQqSA01L9Vn9OjAh9FQQIfIYQQwoPJVpcQQgghPIYEPkIIIYTwGBL4CCGEEMJjSOAjhBBCCI8hgY8QQgghPIYEPkIIIYTwGBL4CCGEEMJjSOAjhBBCCI8hgY8QQgghPIYEPkIIIYTwGBL4CCGEEMJjSOAjhBBCCI8hgY8QQgghPIYEPkIIIYTwGBL4CCGEEMJjSOAjhBBCCI8hgY8QQgghPIYEPkIIIYTwGBL4CCGEEMJjSOAjhBBCCI8hgY8QQgghPIYEPkIIIYTwGBL4CCGEEMJjSOAjhBBCCI8hgY8QQgghPIYEPkIIIYTwGBL4CCGEEMJjdFjgU1hYyOTJkzl8+LBL1//555+ce+65jBs3jnfffbeNZyeEEEKI7qhDAp/CwkJuu+02srKyXL7+9ttv5/zzz+ezzz5j7dq1bNmypY1nKYQQQojupkMCn1mzZnHBBRe4fP2aNWuIiIjgjjvuoF+/fsycOZPPP/+8DWcohBBCiI5UUJzNT9s/bvXn1bb6M7rgySefpHfv3jz11FMuXZ+SksK4ceNQqVQADB8+nOeff74tpyiEEEKIdpJTcJR/Ur/jQP5WjpgPclhTSqYOvPV+XMZtrXqvDgl8evfu7db1RqORgQMHOr/28/MjNze3taclhBBCiDakKApZOUdI2v8D6QVbyTanc0RbwkG9CotKBRrAG8Cx0BFitbf6HDok8HGXRqNBr9c7vzYYDFRWVnbgjIQQQgjRFKvNTuaRLFIP/EhmwVayrenkaEo4YIAKtRp0OH5VZ9342xT6Wb3ppe3JgKARjBp0Lv17DG31eXWJwCcwMJDCwkLn1yaTCZ1O14EzEkIIIUSNSouN9MwMMtJ/5nDRVvKtB8jRlpBmUFGmUYNXzZWOIMfbrtDX6kUfbU8GhYxk1KAp9Asf5kxpaUtdIvBJSEjgm2++cX6dlJREZGRkB85ICCGE8EwlFRbSMw+SffA3jhZtpdB2gDxdMfu9VBRqNOBTc6UGAJ3iCHL66noQEzKCUQOm0Dd8GBqVpkPm36kCH6PRiMFgqLeaM3nyZJ544gl+//13xowZw1tvvcXEiRM7aJZCCCFE96coCjllVRzKSKcwYwu5JVspsaWRry8hzQuOarXgX3O1I5xQKwq9bV7010UTGzqCE/qfyYDQEWjVnSfc6DwzAS666CLmzZvHmWeeWefxkJAQ5s6dy4wZM/Dx8cHf359nnnmmg2YphBBCdC92RSGjsJzMzAOUZm6loOQvypQ0ivXFpBngoF4HgTVXO0IHlaIQbTcwQBfN0NDhJPSdzMDQkRg0hg57Ha5QKYqidPQkXJWZmcmBAwcYPXo0vr6+bo/Pzy+j67xaIYQQovWZrXYO5Bs5nJlGRdZ2Sku2YSKNEkMR+71UpOl02BvItQm36xioi2Jo6AiG9TqNQaEj8dW5/1nsDpUKwsL8m7/QnefsSoHP8ZLARwghhCcxVlnZl2vkaOY+qo5sp6LsbypVaRirg5wUvd5RRv4vQYqWQboohoUkENfzFGJDRxKoD2r3+bdF4NOptrqEEEII0TIFJjMpOWXkZKZgO/oPNuPfWNQHMHo5gpy9XnoqfGoObHCWWeGnaBisi2RoaAIx0ROIDRlJuFd4x7yIdiCBjxBCCNGFKIpCVkklqTml5B1ORsneidq4C7QHMHkVss9LRaKvgbKAmiDH2znWS1EzSB/B0OChxERNICY4gR4+PduljLyzkMBHCCGE6KSsdoWDheWkZpdQcDgZdc4uDKbdaA0HMBkK2e+lJtFfT35wTWm4s5YcraJikD6c+KB4YiLHExs8nN5+fTqsjLyzkMBHCCGE6AQqLTb255tIzSmh+HASmrw9BJQnYjAcoMJQyGEvNYlBeo6E13x01yYWq4H+ulDiAuOJiRhHbPAw+vsPQKeWZr//JoGPEEII0c5KKy2k5BpJzSmhNCsJfd5uwir34ms4iM4rn2IvDXuC9RyMrAlc/OqM76MNJjYwlpjwMcQGD2NQwGC8NF71byTqkcBHCCGEaCOKopBrNJOSa2RfTjHlWYkYCvbQoyqVIK8DRHgVUOSl4a8wPfv1OmwqFRBQ5zmitAHEBsQQGzaamKAhxATG4afza/iGolkS+AghhBCtwK4oZBRVkJprZH92ERVHE/EpTKS/dR/BhnQGexWQ7KUhMULPl3o9ZrWKY7oCAhCi8SHWP4bYsBOJDRpKbGAcQYbgjnlB3ZQEPkIIIYSbzFY7BwpMpOQaScsupCo7Ef/iJGLs+4nUpxPgVUCKl5Y9UXq+NegpV6uBoDrP4a82EOs/mJjQE4gNGkJcYDxhXuEeVWHVESTwEUIIIZpgMlvZl+sIcg5kF2DJ2UNI6V7iSSdWd4A+XgUke2lJjNaz0aCnRKMBQuo8h7dKx2D/AcSGjCQmKJ64wCEeV0beWUjnZiGEEKJaYbkjHyclx0h6dgFK7h4iTMkMU6XTR5tOpVc+e710JOr1JBr05Gnrrx/oVBoG+vYjNmQEsUHxxAbG0cevn8eXkbeEHFlxnCTwEUIIAY6k4yOllaRUr+Qcys5DlbeH3pWpDFMfZIA6narqIGePXk+iwUCWrn6Qo0ZFP5/exIYMJzYwnrigePr7D5Qy8lYigc9xksBHCCE8j7MJYK6RlFwjGdm5aPMTGWjdzzB1OoPVB7EY8kny0pGoN7DHoOegTovSwDZUb+8exAYPIyYwnrjAeAYFxkgZeRuSwOc4SeAjhBDdW00TwJTqICczJxefwkRi7AdIUKcTp0rHaihwBDkGA4l6Rxm5tYEgJ9IQRmzwMGID44kNjCcmMBY/Xet+CIumySGlQgghRLWaJoA121VZOdkEFicxVJVOgjqdM1XpqA0F7Ak0sEevZ6VBT7Jej1kdVe+5gnWBjvLxoPjqQCeOYENIA3cVXZ0EPkIIITo1RVHIq24CWPMrO+co4aZkhqkOMkx9gP+o0lHrC0kMdqzifGHQk2TQU67uUe/5fDW+tQFOkGPLKtwrQiqsPIRsdQkhhOg07IpCZlGFcyUnNddIbk4Wvc37GFa9kjNMnY5eW8Qeg95ZXZVo0FOsqV815aU2MDgwjpjAOOKqA50ePj1Rq9QN3F10NpLjc5wk8BFCiM7DYrNzIL+8zkpOUV4WA2376wQ5PppiEg36OoFObgNl5FqVloEBg5w5ObGB8fT164tGLZsbXZUEPsdJAh8hhOgYxzYBdPTJKcNYmEU8jqTjoaqDJKjT8VcXk1Qd4OypXsk5rKtfGq5GTV+/fs4tq7hARxm5XqPvgFcn2ooEPsdJAh8hhGh7xzYBdGxXlWEtzmKY+gBD1QdJqF7NCVCXkKyvXcXZYzCQ3kgZeS+f3sQExjlzcgYFxOCt9e6AVyfakwQ+x0kCHyGEaD2KonC0tKrOVlVqThk60xGGqau3qlQHGaZOJ1BVSpped8x2lYF9jZSRR3hFOiurYoMcZeT+uoAGZiC6Owl8jpMEPkII0TJWu8Khwtp8nNRcI6l5RgKrjjCseptqmMqRkxOkMnJQp3Ws4ugNJFaXkVep6wc5QfqgOjk5sUHxhEgZuagmfXyEEEK0uUqLjTRnE0DHf/fnG4myHSWhOrg5T5XOMPVBAg0msrQaEvV6/jIYeM/gQ5IhCJO6ftWUr9bXsV1VnZMTExRHpFeUlJGLdiWBjxBCeLDSSgupxyYd5xrJKDTSh2znNtVlqnSGag4SoC0nT6Nmj8HAP3o9H1UHOUUNlJEb1AYGBcY4g5zYwHh6+vaSMnLR4WSrSwghPEBDTQBTc41kl1bQX3XUmXA8TJ3OENUh/FUVlKjV1dtVtcnHudr6QY5WpWWA/yDnSeSxgfH08+snZeTiuEmOz3GSwEcI4QnsisLh4spjSscd/y2tqGSg6kidHjlDVIfwVVVRrlL9q4zcQGaDp5Gr6ePX13kSeUxgPAP9B6LXGDrglYruTgKf4ySBjxCiu7HY7BwoKHeu4KTkGtmXZ6LSbGawKosE9QFnj5whqkN4q8xUqSBV5whw9hj0JHp5cUCrRWkg1aaHT8/a7aqgeAYHxOCt9Wn/Fyo8kiQ3CyGEBys329iXZzxmu8pEWr4Jld3CYNVhhqnTmVa9mhNnyMBLZcEKjjJyvZ5vDb7s8Qpjn06LtYEgJ9wrovZoh8B4YgLjCNBLGbnoXiTwEUKITqiopgngMYnHmUUV6LAQo8okQZ3OdaqDDNOmE6/KQK+yYgcO6bTs0etZb/Aj0cuLvXo9Var6S92B1WXkcdUBTlxQPCGG0PZ/oUK0Mwl8hBCiAzXYBDDXSK7RjAEzsdVBzmRVOgn6dGLVh9FhRQGOajXs0evZaPBjj7c3SXo9pnpBjoKv1pfBgbHOlZzYwHgivaWMXHgmCXyEEKKdNNwE0ERppRUDZoaoDjFMnc6FqoMk6NOJUR9Giw2AfI2aRL2eNwy+7PH2IdFgoEhl/9cdFPRqPYMCYogLqg1yevn2ljJyIapJ4COEEG2gympnf3UTwGOTjqusdrypJF6VQYI6nenqdIbp0xmszkKDI5ApUatI1Bt4z+DLbh9fEg1e5Khs/7qDHY1K4ygjP+YMq35+/aWMXIgmSFWXEEIcp7JKK6l1ko6NHCwox6aAD5UMrW4EOEydzgj1QfqrjjiDnHKVir01JeQ+/uzx8iZTZal3DxUq+vj1q5OTM9B/kJSRi25NqrqEEKIDKYpCvslcp6oqJdfIkZJKAPwoZ6jqEJPUB0jQpjNcc4h+HEGN419cZiBVr2eVwYfdvgHs8fLhoMpM3Q0rR9AT7dOjNienuozcR+vbrq9XiO5IAh8hhGhAvSaA1VtWheWOwCQAE0PVBzlflU6CLp2RmoP04ahzvBVI0+n42uDDbt8g9nj7sE9lrk5LrmEGIMwr3NnxuOaXlJEL0TYk8BFCeLzGmgCazI68mkCMDFOnc7kqnWG6g5ygPUhPJds53g5kaLV8Y/Bhj18Ie3x8ScFMJcfm5VQBEKALrO54XBPoxBHmFd6Or1YIzyaBjxDCo9Q2ATQ5g5y0AhMWm2MlJphSEtTpXK86yHB9OiO1B4my5zrHK0C2WsMGgze7/cNI9PEjSWXGqBybl1MBgI/Wh5iAuDpnWEV5R0sZuRAdSAIfIUS3VVxuqbNVlZJrJKOowrnZFEoJCep0zlSlM9JwkBGag4Tb8+o8RwFqNnt7sSsggj0+/iSpLRTZK4+5wgQK1WXkg505ObGB8fT27SNl5EJ0MhL4CCG6PEVRyC6rch7GWfMr12h2XhNOEcPUB7lYk84o3UES1AcJsefXeZ5SVGzxMrArMIo9PgEkqS3k2MuPuaIM7KBRaejvP9C5ihMXFE8/vwFopYxciE5P/i8VQnQpNrvCoaLqJoA5JlLyjOzLNVJSaa2+QiGSIoar00nQpjNan8FQ1QGCbIV1nqdcUbHdYGBPUDS7fQNJUtvItJU6nwNKwF5TRt7XeXZVXGA8AwMGY5AyciG6JAl8hBCdVlNNAB0UelDAOHU6w3UHGavPII4DBNiKap/E7igQ32MwsCuoJ3t8A0nS2Em3FmNHcVygFFGThxzt3cO5VRUbGMfggFh8dVJGLkR3IYGPEKJTMFZZ65SNp+SaSC8wYXNWfyv0UuVzuiqdkfqDjDVkEGNPw89WUvskNkf8kqrXszu4N7v9gknS2NlvLcKi2AArKAWOWnMg1BBWp+txTGAcgfqgdn3dQoj2JYGPEKLd5Rur6pw6npJrJKvk2IRhhT6qXKao0hltOMRo/SEG2Q7g49yKAiyODamDOj27Q/qy2z+EJI1CirWQSrvZcYE9l5rugAG6AGcJec05VlJGLoTnkcBHCNFm7IpC1r+aAKYc0wQQQIWdvqocLlSnM84rkxN0hxhgTcPbVlb7RGZHkHNUZ2BnaD8S/UNJ1CrstRRitFUAVWA76tyu8tb4EBMY69yuig2KJ9q7h5SRCyEk8BFCtA7rMU0Ajz15vKYJIDiCnP6qbE7VpDPBO5MRmoP0s6ZhsJkcF9ip6fNHgdbArrAB7PYPJUmnYq+liEJrKVAB1sPO7SrdMWXkNdtVvf36oFFp2vX1CyG6Bgl8hBBuq7DYnHk4DTUBBFBjZ4DqCCdoDzLB5zDD1en0NqehrykPt+IMXkq1XuwOG8jugDASdWr2WovIMRcCJrCanNepVRr6+w0gNijOeY5VP/8B6NS6dn39QoiuSwIfIUSTiisszhWc5Jz6TQABNNgYqDrCaMMhTvbOZKjqID2r9qOzOzoYU9tOh3KdF4lhg9kTEM4enYa9tmIyK3OAMrCU1ZzRiQoVvX37OE8ijw2MZ1BAjJSRCyGOiwQ+QgjA0QQwp6yq3snjOWVVda7TYiVOlcVJXhmM9z7MEA4QVZmGtqab8TE5ymatN3sjYtkdEE6iXsdeWzHpFUexKyVgLqkTEEV5R9fJyYkJiJMyciFEq5PARwgPZLMrZBRV1Dt5vLYJoIMOK0NVhznFN5NxXpnEKgeIrNiPxl6dbXxMU2OLzpf94bHsDowkUa9lr62M/eWZWJRCqCp05u4AhBhC6+TkxAbGEWQIbp8XL4TwaBL4CNHNVVntpOWb6gQ4+/JMVDqbADrosTBSk8kkvyxGGzIYbEsjvCINtd3iyLEx1l5r0/tzMDyO3YFRJBp0JNnKSC3PoNKWD5X5dVZ9/HX+zo7HjnOshhBmCJMKKyFEh5DAR4hupMEmgIXl2OxKnesMmBmjPczpAUcYpTvIQGsaIeUHUCsWx8rMMaszNkMgR8Li2B0UTaLBQJK9jJTyQ5RZcqAip+YgcgC8NN7VZeRx1dtW8fTw6SlBjhCi05DAR4guqvkmgA5eVDHBK4tJflmM1B5igHUfQaYDqBRbna0qALshkLzwoewO7sEeg4G9dhPJ5YcorDoK5UfrXK9T6xjoP7j6eAdHoNPHr6+UkQshOjUJfITo5BRFIavk300ATRSYzPWu9aaSU3yPcqrfYYZr0ulr3k+A6QAqxV5nqwrA7hVCccRQ9gT1ZI/BiyTFREp5BtkVh8F4uM71apWGfn79HdtV1YFOf/+BUkYuhOhyJPARohOx2uykF5bXqapKzTXWaQJYw19VweSAbE72OcwwdTq9q1LxM6ajsilQUvdau3cYZeFD2Rvcmz1e3iRRTrLpEJmmQ1B2CMrqXt/Ltw9xNdtVQUMYFDAYL41XG75yIYRoHxL4CNFBKiw29uXVTTpOyzdhtin1rg3WVHBWUDYTvDMZwgF6Vu7Dx3gQVZVSJx8HwOYTSWXEMJKDepHo7UsSlSSbDpJuTMdemg6lda+P9I6qLSOvrrLy0/m14SsXQoiOI4GPEO3g2CaANYFORlEF9voxDtH6Cs4KymG8VwZxShrRFal4Gw+BCcevY9h8o6gKT+BASD/2ePuSSAUp5RnsL92HpWRfvZWfYH1InZPIYwPjCDaEtNnrFkKIzqZDAp/U1FTmzp1LRkYGl156KQ888ECTVR+KojB//ny+++477HY7Z555JvPnz8fLS5beRefiahPAGgN8qjgz6Ahj9RnEKAeINCVjMGY6VmX+tTJj8+uJJXwYGaED2OPtRyJVJJcfZF9JKhVFKVBU93o/rb+zGWDNik64V4RUWAkhPFq7Bz5ms5nbbruNiRMnsnTpUhYsWMCXX37JtGnTGh3z9ddfk56ezldffYXRaGTevHksX76ce+65px1nLkRdNrtC5r+aAKY00ASwxrDAKiYHHGW0/hCDrPsJMyajN2VBYQPP7d8ba0QCWSGDSPTxI0llJtl0kNSSZEoL9ta73kvjxeCAWGegExc4RMrIhRCiAe0e+GzevBmj0cjcuXPx9vZm1qxZPP74400GPrt27WLKlCn07NkTgDPPPJP9+/e315SFwGy1k1ZgIiWndiVnX56xXhNAAI1axYnBZk73z+IE3UEGWPYTWpaM1nQE8uo/ty2gL5aI4RSEDmaPTwBJKgvJpnRSSpIpyN9T73qdWscA/0HOnJy4oHj6+PWTMnIhhHBBuwc+ycnJjBgxAm9vbwBiY2NJS0trcsygQYNYs2YNU6ZMoaqqinXr1nHDDTe0w2yFJzJWWUnNq1tVdaCgfhNAAC+tmnGhlZzid4SRmoP0t+wjsHQvWlN2vXwcAGtgf6wRwykJjSPJN5BEtYUU00FSivdyNHdnvevVqOnn39/ZDLCmjFyv0bfFSxdCiG6v3QMfo9FIr169nF+rVCrUajUlJSUEBgY2OOayyy7j008/5eSTTwbg9NNP55JLLmmX+YruLd9krpd0fLi4fhNAgEAvDeNDqzjFN5ME9UH6mvfhX5yEpiS3XhKxggpb8ECsYcMwhg8hxTeERLVjJSe1JJmMnBUo1A+kevn0dubkxAXGMzBgMN5a77Z46UII4ZHaPfDRaDTo9XX/tWowGKisrGw08Pnggw8ICAjgp59+QqVS8eijj7J48WLmzJnTHlMW3YA7TQABIv30TAgt52SfTIaq0ulVmYpvURLqgnwo+Ndzq9TYggZhjUigMmwoqX6hJGlsJBsPkFKyl/TsT7Ep9fvwRHhFVvfJiSMucAgxgbH46fzb4uULIYSo1u6BT2BgIPv27avzmMlkQqdrvAPs2rVrufvuu+nRowcAs2fP5pprrpHARzTIarNzsNCRdJx8TI+chpoAqoC+wV5MCDFykncmcaTTozwF78JE1Dn1s44VlQZbyGCs4QlUhQ3jQEAkSWorKdVBzv7sTzDb6wdTwfpgZ4+cuKB4YgLjCZEyciGEaHftHvgkJCSwatUq59eZmZmYzeZGV3sA7HY7BQW1/8zOy8vDZqv/ISY8T+W/mgCmNNEEUKdRMSjUh5OCSxnnlUGs/QBR5cno8/egziqpd72i1mILjsESkYAlbBiZgT1IUttJNqaRWpJMas6nlGeV1xvnq/U75pBOR5VVhFekVFgJIUQn0O6Bz5gxYzAajXzxxRdMmzaN5cuXM2HCBDQaDaWlpfj6+qLR1K1OGT16NG+++SYajQaLxcKbb77J5MmT23vqooOVVDcBrO10bOJQUXmDTQB99Rpiw32YEFTCaP1BBtsPEFaWjC5/D+pDpfWuV9Q6rCGxWCMSsIYPJzuoD4lqKynGNFKK95KSs5LSw/WDI4PawODAWGdOTkxgHD19e6FWqdviRyCEEOI4qRRFaeBjo21t3LiR2bNnYzAYUKvVfPjhhwwaNIjY2FhWr15NfHx8netLS0tZsGABv/76KyaTiYkTJ7JgwQJCQtzbKsjPL6P9X61wV20TQFOdpOPsRpoAhvjoiAv3ZkJgMaP0hxho3U9Q6V60+YmozWX1rlfUeqxh8VjDE7CGD6MgeABJGjspZftJKdlLcvFeCqry643TqrSOMvLqzsexgfH09euLRi0N0IUQoi2oVBAW1rq5jx0S+IBjuyoxMZERI0YQHBzcLveUwKfzcbcJYM9AL0eQE1DASO1B+lv2Oyqr8hNRW+rXjysaA9bQeKwRw7GGJ1AaMpi9GjvJZftJLdlLcslejpYfqTdOjZq+fv2cJ5HHBsYzwH+QlJELIUQ76laBT0eQwKdjNdQEcH++kQpLA00AVdA/1Jf4cC/G+ecxQn2QPuZ9+BQmos1PRGWtqDdG0XphDRuKNTwBS3gCptA49mkguWwfKSV7SSlJJsN4sMEy8p4+vaorrByBzuCAGLy1Pm3ycxBCCOEaCXyOkwQ+7cdYZa2XdNxYE0CDVk1MuC9x4V6M981hmPogPStSMRTsRpufhMpWf4tL0XpjDR+GJdyRk1MZGscBnZbkslRSih0rOellaQ2WkYd7RThzcmKD4okJjMVfF9AmPwchhBAtJ4HPcZLAp20UVDcBPLYRYGajTQC1xET4MSTMwFjfbIZwgEhTCrr83WgLkhsMcuw6X6zhw6pzchIwhw3jkE5HSlmqMydnf2lqg2Xkgfqg2iCnumdOiCG01X8GQgghWp8EPsdJAp/jU9MEMDW37snj+Y00AYzw0xMX6c+QMC1jvI8Sp6QTUrYXbV51kGO31Btj1/tXBzmOnBxL2DCOGLxJLk1x5uTsK0nBZK2fz+Or9SXmX2XkkV5RUkYuhBBdlAQ+x0kCH9dZ7QoHC8rrlo/nGTFWNdwEsE+wN7ERfgwN0zLKcIQYexr+JUmOIKcwBZW9frKy3RDorKyyhg/HEp5AvpcfySUp1Tk5jrycEnNxvbEGtYFBgTF1ysh7+faWMnIhhOhG2iLwkTpc4XYTwIGhvsRG+DEkVMuJ+gwG2tIcScd5u9Bk7EPVQF6N3RDkrKyyVG9ZFXsFkVrqCHKSS34nJfNt8ivrH1+uUWkY4D/ImZMTGxhPP79+UkYuhBDCbfLJ4WFKKizOk8eTc8qabQIYE+5LTIQfQ0PVjNRl0rcqBUNBItq83WjS9qFS6ldk2b1CsEYkYKnerrKGD8fkHUxqWSqpxckkl/xJyuH3OVKeVW+sCpWjjNyZkxPPQP+B6DWGtvhxCCGE8DAS+HRTiqKQa6yfdHy0tPEmgLERfo7tqhAYoc0guiIRXd5utNl70Ozdj6qBMnC7dziWiARn4rE1fDiV3qGk1XQ8LvmblKyPyTAewk79IKmHT886OTkxAbFSRi6EEKLNSODTTVhsdjanFZCUXeZMPC6uqJ88DI4mgM4gJ1ghQZ1OqHGnIx8nYzfaXQcaHGfzjawT4FgjErB4hXLQdMiRj1O8i+Qjn5FeloZVqZ/TE+YVXqfCKiYwjgC9lJELIYRoPxL4dBPv/5nJ8t8P1XlMo4J+oT7OIGdYkI141UECiv9yBDn7d6MtOdjg89n8op2VVTV5OTafMA6bMkktSSa5JJGUXZ+zvySVKnv9VaQAXSBx1fk4NSs6oV5hbfHShRBCCJdJ4NNN/HmoCICJA0I4ZWAoQwMtxNjT8Cnc4tiuStqNpjSjwbE2/151Kqus4QnYvUPJqcyu3q5KJmXPalJLUjBZjfXG+2h9jikjd6zoRHpLGbkQQojORwKfbsBmzCM09zfu0BzgZnURAf/sRVN2uOFrA/rUqayyhiegeIdQXFXE3uIkx5ZV4jeklOyluIEycr1az6CAGOKCHFtVcYHx9PLtI2XkQgghugTp49PFqEy5jhUc569daIxHG7zWFtAXS0RtZZU1fCiKV/0DYbfnb+PBbbOw/6sMXaPS0N9/oLOMPC4wnr5+/dFKGbkQQoh2IH18PImioC7PQZvrCG5qAh2NKafBy9Ps0eT4xjL8hInOpoCKIdClW31/eB12xUaEVyQjQ090bFcFxTPQf5CUkQshhOhWJPDpDBQFtfFonQBHl7sbdUX9Zn4KKmzBA+tUVj20TcO3+yu4Y2w/Bp/Qx61b2xQb2/K3AjB3xKOMCD2hVV6SEEII0RlJ4NPBDPvW4Pfro6gr8ut9T1GpsQUPdh7QaQkfjjVsKOh9a69RFP7MdgQuw3u6XxqeUryXEnMxvlo/hgYntPyFCCGEEF1AiwKfv//+m02bNnH06FFmzZrFxx9/zD333IPBINsi7vLe/S7qinwUlQZbyOA6lVXWsCGga7qZ39HSKvKMZjRqFUMi3d8H3ZL3OwCjw8ZK7o4QQohuz+1SnA8++ICbbrqJI0eO8OOPP2KxWNi9ezePP/54W8yve1MUNIX7ACi+dC1F03+k7IwlVA6/EWv06GaDHoBdR0oBiIvww0uncXsKW3P/AGB8xAS3xwohhBBdjduBz5tvvsnbb7/NkiVL0Ov16PV6nn76aX788ce2mF+3pqooQF1VjIIKa8jgFj3HzqwSAIb3cH+bq6Ayn32lKQCMDR/fovsLIYQQXYnbgY9Op0OjqbuyUFFRga+vbyMjRGO0RY7VHntAb9B6t+g5alZ8RrQgv2drnmO1JzYwnmBDSIvuL4QQQnQlbid1XHXVVcyYMYPLL78cq9XK+vXr+fbbb7nmmmvaYn7dmqZoPwDW4EEtGm8yW9mfbwJatuIj21xCCCE8jduBz80330xYWBhr1qwhOjqa3377jeuuu46LL764LebXrWmqV3xswS3b5tpztAy7Aj0CDIT7uZdYbrFb2F7wJwDjwyXwEUII4RlaVMYzdepUpk6d2spT8Tza6hUfWwtXfGq2uRJasNqzu3An5dZygvUhDA6MbdH9hRBCiK7G7RyfXbt28e9TLnbu3MnSpUtbbVKeombFx9rCFZ+awGd4D9c6NB9rS+7/AEdSs5yzJYQQwlO4/Yl3xRVXYDKZ6jwWHh7Oe++911pz8ggqs9F5xlZLVnxsdoXdrZDYLPk9QgghPInbgU9DZ5qmpKQQEOD+h68nq0lstnuHo3gFuT0+vaAck9mGj07DwDD3KuqyTIfJNGWgUWkYFTbW7XsLIYQQXZXLOT5xcXGoVCpUKhVjxoyp8z0vLy+efPLJVp9cd+as6AppWX7PziOO/j1Do/3RqlVujd1a3a05IXgEfjq/Ft1fCCGE6IpcDnw2btyIoiicddZZrF69Gj8/xwemWq0mPDwcrVaOO3CH9jgrupz9e46jjH2cbHMJIYTwMC5HKz179gQcDQx79uzpDHxEyxxvDx9nYrOb+T0V1gr+KdwBSH6PEEIIz+P2Ms2uXbvaYh4e53h6+BSYzBwurkQFJES7F/j8XfAXFruZKO9o+vj2dfveQgghRFfmduCjKArff/896enp2Gw25+NJSUm8+uqrrTq5bstmRlNyyPHbFqz41Kz2DAzzxc/g3lv45zHbXCqVe7lBQgghRFfnduDz6KOP8tdffwGOpOa+ffuyYcMGzj///FafXHelKU5Hpdiw6/yw+0a5Pb62f497qz2KorClOrFZujULIYTwRG4HPj/88AOff/45+/fv57PPPuOFF17go48+Ytu2bW0xv26pdptrELRg1WVnVsv69xwoSyOvMheD2sDI0BPdvq8QQgjR1bndx0er1WI0GjnxxBPZs2cPAFOmTOH3339v9cl1V86jKkLcz++pstpJzi0D3F/xqSljPyF0FAaNe2d7CSGEEN1Bi05nv+aaa/j5558ZMGAAc+bMwWazERXl/paNp6o9qsL9/J7knDIsNoUQHx09A73cGitl7EIIITyd2ys+d9xxB0uWLEGn0/HMM8+gUqmoqqri2WefbYv5dUsa5+Gk7q/4HJvf405ycqm5lMSi3QCMizjJ7fsKIYQQ3UGLug6edtppAPTo0YOFCxcC1KnwEk1Q7GiL04Djq+hyd5trW/4W7Njp59efKO9ot+8rhBBCdAcurfhUVVWxdOlSrrjiCi666CLmz59PcXEx4Ah4Pv/8c84555y2nGe3oS47jMpaiaLWYwvo49ZYRVGOSWx270T2mm0uaVoohBDCk7m04rNw4UL+97//cdNNN+Hl5cXnn3/OXXfdxUUXXcTrr7+ORqPhjjvuaOu5dgvawuqKrqD+oHZvwe1wcSVFFRZ0GhVxEa53zrYpNv7M2wJIfo8QQgjP5tIn74YNG3j55Zc54YQTAJg8eTInnXQShw8f5rbbbmPatGlyVpeLao+qaHl+T3ykP3qt6+lZycVJlFpK8NX6MTQowe37CiGEEN2FS9FKYWEhAwcOdH4dEBCAj48PH3zwAb17926zyXVHdXr4uKnmRHZ3DybdmufY5hoTPg6tm6tMQgghRHfi0qegoiisWLECL6/a8mmz2czXX39NQEDth/B1113X+jPsZpyJzS3o4dPSxOYtudKtWQghhAAXA58xY8bw66+/1nls+PDhbN261fm1SqWSwKc5ioKmsKaHj3uBT1mllQP55YB7J7LnV+axvzQVFSrGhI9z655CCCFEd+NS4PPhhx+29Tw8gqqiAHVVMQoqR3KzG3YfLUUBegd5EeKjd3lcTVJzbGA8wYYQt+4phBBCdDduNzAULaetzu+xB/QBrbdbY497m0uquYQQQggJfNpTbUVXSxKbqwMfN/r3mG1mtuc7Do8dFy7dmoUQQggJfNpRSyu6rHaFxKPur/jsLtpJha2cYH0IgwNj3bqnEEII0R1J4NOOtC08oystz0SFxY6fQcOAUB+Xx22t3uYaF3ESapW81UIIIYR8GrYj56nsbpay1/TvSYgOQO3GwaRbqvv3SBm7EEII4SCBTztRmY1ojEcB97e6WpLYnGU6zGFTBhqVhhPDxrh1PyGEEKK7ksCnndQkNtt8IlAM7h0wWnswqeuBz9Y8xzZXQsgI/HSun+slhBBCdGctCnzWrl3Lvffey/Tp0zl48CD33HMPhYWFrT23bsUZ+Li52pNTVkV2WRVqFQyNcj3wkW7NQgghRH1uBz5Lly7lueeeo1evXqSkpKBWO57isccea/XJdSdaZ0WXe/k9u6u3uQaH++Gj17g0psJazs7CHYCcxi6EEEIcy+3AZ+XKlbzxxhvMnj0brVaLVqtl7ty5/P77720xv26jpT18avr3uHMw6d8F27HYLUR796CPb1+37ieEEEJ0Z24HPgEBAWRnZ9d5LCcnh7CwsFabVHekaeGKT0sSm2vL2CegcqMKTAghhOjuXDqr61i33347d9xxB2effTZms5n33nuPjRs3ctddd7XF/LoHmxlNySHHb0NcX/GptNhIyTUCrh9MqigKW6vL2KVbsxBCCFGX2ys+U6dO5d1338XX15exY8dSUVHBokWLmDp1qsvPkZqayrRp0xgzZgyLFi1CURSXxtntdqZPn84777zj7rQ7lKY4HZViw673x+4T6fK4xOwybHaFCD89Uf4Gl8YcKEsjrzIXg9rAyNATWzplIYQQoltye8UHYMyYMYwZ07LeMGazmdtuu42JEyeydOlSFixYwJdffsm0adOaHfvpp59SVlbGtdde26J7d5Q6R1W4sfV07DaXq1tWNdtcJ4SNxqBxLVgSQgghPIXbKz4XXXQRr776KmlpaS264ebNmzEajcydO5c+ffowa9YsPv/882bH5eTksHTpUh5++GF0Ol2L7t1RWnpUxa4WHEy6JU/K2IUQQojGuB34zJo1i/z8fG6//XbOP/98XnzxRZKTk10en5yczIgRI/D29gYgNjbWpSDq6aefpkePHmRnZ/P333+7O+0O5TyqInigy2PsiuIsZXc1sbnEXEJS0R7AcT6XEEIIIepye6tr0qRJTJo0CYBDhw7x66+/8txzz5GZmcn333/f7Hij0UivXr2cX6tUKtRqNSUlJQQGNryysWPHDtavX89pp51GRkYGr732GhMnTuTRRx91d/odQtOCFZ+MwgpKKq0YtGpiw31d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ctBoNIwdW7srERMTx7p1a477tXgKjy1nd+b3+PXgrxyr4zG/ZABGhY1Bp276D60QQgjXffzx+4SGhjmDHnBs4YwbN4Fzz72Q559fhM1ma3BszeNZWYeZN+9+/P39eeml59m3L5V169byzjtvEBkZ6bw+NTWZW2+9E5VKhbe3DzfeeAtvvvk6zz77ApmZGWzYsJ6lS1/hxBNbp09bXNwQ9uzZdcz9UwgPD29yjN2uUFxcVOexwsICbDZHqb3ZbOaRR+Zw0kkTOe+8C53XhIc7XqfFYnE+lp19lLCwiON+HZ7CYwMfbXV+jzloEMk5jr4P2dX5PdKtWQghWs/+/fv48MN3ufHGm52P/frrz3z77Rpmzryb6677LwcO7Ofppx+v14QQ4PHHn2bfvlRuvfVGrrnmeoYMGcaFF07lwQfv5Z9//ubuu2dz1VXXOa+/5pobOPXUSYAjX+jRR+cwfvwERo48kTvv/D+Ki4sJCAhodL6VlZXNblUda9KkM/j44/cxmYxkZBzi5583OldkqqqqqKiovw05ZMhQiouLeOGF59i48Qeee24hyclJzryl555bSHl5Obfffhfl5eWUl5djtVqJiopiyJChvPDCs2RnZ7Nly+98/fWXnHWWVHe5ymMDH02hY8UnV98Hq10h1L+KA8YUwHE+lxBCiNbRt28/brvtTmdOytq1q5k//yEeeuhxevXqTXBwMM88s4Rt27Zyww1XsnbtakpLHZW2Bw6ksXbtal566XmeeGIhF1/8HxRFYejQBN5771N8fHxYuPAJHn74QVau/BSz2eysDLPb7ZhMJgYNinFWaI0ZM57LLpsOOAKchjz//DO8/vorLr++iy/+D8HBIVxyyflcf/10zj33QuLi4gH46KP3eOKJh+uNCQ+PYP78p/n772089dR8fv/9Nx566HH69x9AWVkZ69atZf/+VM4//0zOPvtUzj77VH744TsAnnxyMaWlpVx//RUsWPAo06df7dz2E81TKR500El+fhk1rzZg7bUYMn7ih74PMCNlJMNjUknXvMOggBjemPheh85TCCEaYrGYKSg4SmhoNDqdvqOn0yJPP/04v/76C4888gQTJkys8738/HyWLVvCP/9s5733VqDRaJg/fx7Dh49k+vRrnEnH99wzk0svvZxTTpkEQFFREd9//y0+Pr5cdNElzue75JLzeOGFV+nbt1+9eXz//ToWLVrA3XfPZurUacf9uux2O7t370Sn0zl77QjXNPXnWqWCsDD/Vr2fxwY+IR+chKYskwWhz/JWVk+Gj/ya9Ko/uGbQDfw3ZkbHTlQIIRrQHQKf7OyjaDQawsMbz0mpqKhwVmy1lZruzs11VxZtr70DH8+s6rJUoC5znPT7Y0EwYCPb6khMk20uIYRoO1FR0c1e09ZBD9BqZ3SJrscjc3y0xWmoULDogzhY6YOXXyYVNhOB+iDigoZ09PSEEEII0UY8MvCp6dhc4NUPgPCINADGhI1Do9I0NkwIIYQQXZyHBj6Oiq4DOBpC2bwdja+kjF0IIYTo3jwy8Knp4bOjIhKVtogy+2HUqBkTNr6DZyaEEEKItuSRgU9ND58/TeFo/Ry9e4YGJxCgb7yhlRBCCCG6Ps8LfOxWNCXpAOy398A/OBWQai4hhBD1Wa1W0tMPtPs9Gzu+Qxw/jwt8NCWHUNktmNVeHFEFYPNyrP7IaexCCNGxXnjhWRYtWlDnsa+//pKsrMN89903zJ07m6qqKpYtWwLAc889wzffrG7yOd977y0mThxd71dKSrJLczp8OJMbbriSgoL8Zq8955xJpKcfwG63Y7PZSEraw+23O06Af/rpx/nxx++x2WxYrY7zIXNysrnggrM4++zTOO+8M7j00gs59dSxTJt2Ptu3b8NkMmKxWMjKOsxFF01xab6ieR7XyKCmoitT3RO1z0HsmAn3imCA/8AOnpkQQnRfhw9noigKKpXK+VhUVHSdfjp+fv7Y7fY64wICAnj00blcccVVaLU6Nm3aQFlZGQD//PM3p5xyGk3RarWccsokHnnkCcDRYfmccybh6+vb4PXnnXcGgYGB+Pg4vm+xmImIiGTWrLucc62srKCkpJhly96gf/8BzrE6nR6DwcC+faksXPgEVquF3NxcbrrpWo4ePcI///zNxx+/zzXX3MAZZ5xNZGQU33yzgZdeep4+ffoxdeo0LrpoCq+//i7R0T2YPftupk79D/HxQ1ul0WJubg5PPTWfvXuTOPXUSTzwwEPo9U03wnz77eW8++6b9R5/6aXXGT58JMuXv8LGjT9gs1m58MJLuOGGm9FqtTz11Hy+++6beuNWrVpDdHSP434tx8MDAx/HCk+iORptsCPiHxd+Up3/GYUQQrSuFSs+orCwELXa8XftL7/8xNq1GwgICHCerVXz97DVakWlUmGz2VAUOPXUSaSl7aewsIDDhzPp06cv+/alkpWVyciRJwCOgMZqtdb7IFer1Wi1Wnx8fJzPDaDRNNy65OOPV+Hn5+8MNG699UYuv/xKzjnnAmfgU1paQmFhIf369QfgwIH9lJUZnas8/foN4L33PiE3N4eff97E5ZdfyRdfrCQ2No5hw4bXu6fVam2woaJer0On06NSqVrlM+rRR+cSGBjIO+98xEcfvceHH77LTTfd2uSYa665gcsvv8r5dXb2Ue699w5iYuJ455032LLlfzz//DIsFjMPP/wgiqJwyy23M3v2HO6+e7Zz3J49u3jxxeeJiIg87tdxvDwu8Kmp6Eq2RaP3rw58ZJtLCNGFKYpCpc3108Rbg5fGy60P4/vum+v8/ZEjWaSkpLB8+Sv873+bncGK0ViGzWbnl19+4s47/4+TTz6V33//FZPJyK+//kLPnr0oKiokL89KcXExWq2Wq6++DIvFTFlZGVOmnM+DDz5U797uzPPll18gPz+fhQufZfPmnzEYDJx11jk8+eQjDBoUw7RpVzBv3v2EhITyxBMLAUhK2kNqagqlpSX88cf/qKio4KeffuS7774hODiE779fB8A336zGYrHw0UerAPjss48pKSkhKSmRvLxccnKyqago57PPPiYhYYTLc3bFvn0p7N2byKpVa4iIiOT22+/i5puvazbwMRgMGAwG59evvvoSl19+JX5+fqxf/y133z3Lueo1ffo1fP31F9xyy+14eXk5z1YDWLnyE/773xmNBpztyeMCn5oVn906f9AVoVPrOTF0dAfPSgghWkZRFO7echuJRbvb9b7Dgofz4vjXXA4qPvroPXQ6HVdccTV79yYxdOiw6iClNlB5++3llJQUM2vWg87HbrnldubNu59TTpmE3W4jK+swjz76JE888SiXXXYlM2bM5I8//sdXX61qMOix2ezOFSVXzJ37KK+88iJ//PE/Fi9+irPOOofnn19EYWEhU6deynffraVfv/515njBBVPZvXsnX365iptvvo3o6B68++6bTJ9+dZ3VkrKyMu68s/YsSJPJRFlZGbm5OURFRWE0GlEUBaPRSEVFBXa7naaO05w4cTTvvvsxgwfHNvu69u/fR+/efZwrLoGBQWi1WgoLCwgJCXXpZ5Ofn8evv/7EypVrACgpKSYyMsr5fbVa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wBVXXNFWU/QoLX0/Xn/9dfr168d5553X1lP0GC15L3bs2MH69euJiooiIyODOXPm8MQTT7THdLu1lrwXl112GSaTiZNPPpnJkyfTs2dPLrnkkvaYbrfXu3dvt67/9/vXks/vLh/4yGnvnUdL3osadrudefPmcdlllzF48OC2mqJHacn7kZaWxooVK5g/f34bz86ztOS9WLlyJSNGjGD58uXcc889vP/++3zyySeSj3icWvJefPDBBwQEBPDTTz/x888/Y7PZWLx4cVtPVTSgNT6/u3zgI6e9dx4teS9qvPrqq5SUlPDAAw+01fQ8jrvvh6IoPPLII/zf//2fHALcylry/0ZOTg6nnnqqc0k/OjqakJAQMjMz23Su3V1L3ou1a9dy00030aNHD6Kjo5k9e7bbeSWidbTG53eXD3zktPfOoyXvBcCmTZt49913WbZsmXPfXRw/d9+PI0eOsH37dhYvXszo0aMZPXo0R44c4aKLLmLt2rXtNOvuqSX/b0RGRlJVVeX82mQyUVJSIn9XHaeWvBd2u52CggLn13l5eQ0eqC3aXmt8fnf5wEdOe+88WvJepKWlMXv2bB555BGioqIwmUxUVFS099S7JXffj8jISDZu3Mjq1audvyIiInjjjTeYPHlyR7yEbqMl/29ccMEFrFy5kj/++IOsrCwef/xxBgwYQGxsbHtPv1tpyXsxevRo3nzzTb788ks+++wzHn/8cfl/oo0ZjUYsFku9xydPnszff//N77//jsVi4a233nL/81vpBn788UdlxIgRytixY5Xx48cr+/btUxRFUWJiYpSkpKQGxyxZskQZOnSocuKJJyqXXHKJUlFR0Z5T7rbcfS+eeuopJSYmps6v008/vb2n3W215P+NY51++ulKZmZmW0/TI7TkvVi5cqVy9tlnKwkJCcrll1+upKWlteeUuy1334uSkhLl/vvvV8aPH68kJCQot99+u1JQUNDe0+7WYmJi6vxdc/rppysbNmxo8NpPPvlEGTp0qDJmzBhl8uTJSl5enlv36jaHlMpp751HS94L0Xbk/eg85L3oPOS96NoyMzM5cOAAo0ePdrvtRrcJfIQQQgghmtPlc3yEEEIIIVwlgY8QQgghPIYEPkIIIYTwGBL4CCGEEMJjSOAjhBBCCI8hgY8QXdiXX35JbGxsvV+///67S+O3bt3aLo3Y5syZ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\n"
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# 绘制ROC曲线并计算AUC值\n",
- "auc_nn = roc_auc_score(y_test, y_pred_nn)\n",
- "print(f\"神经网络的AUC值为 {auc_nn}\")\n",
- "fpr_nn, tpr_nn, thresholds = roc_curve(y_test, y_pred_nn)\n",
- "plt.plot(fpr_nn, tpr_nn, label=\"神经网络: \"+str(round(auc_nn, 3)))\n",
- "plt.plot(fpr_dt, tpr_dt, label=\"决策树: \"+str(round(auc_dt, 3)))\n",
- "plt.plot(fpr_lr, tpr_lr, label=\"对数几率模型: \"+str(round(auc_lr, 3)))\n",
- "plt.xlabel('False Positive Rate')\n",
- "plt.ylabel('True Positive Rate')\n",
- "plt.title('ROC')\n",
- "plt.xlim([0,1])\n",
- "plt.ylim([0,1.1])\n",
- "plt.grid()\n",
- "plt.legend(loc='lower right')\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "# 6、支持向量机\n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 402,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:40:05.982619500Z",
- "start_time": "2023-07-14T07:39:35.965612600Z"
- }
- },
- "outputs": [
- {
- "data": {
- "text/plain": "SVC(C=100, gamma=1)"
- },
- "execution_count": 402,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "from sklearn import svm\n",
- "params_svm = {'kernel':['rbf','linear'], 'gamma':[10,1,0.1,1e-2], 'C':[1,100,1e4]}\n",
- "# 支持向量机训练模型\n",
- "base_line_model = svm.SVC() # 默认 kernel='rbf'\n",
- "svc = GridSearchCV(estimator=base_line_model, param_grid=params_svm, cv=5, n_jobs=1)\n",
- "svc.fit(x_train, y_train)\n",
- "y_pred_svm = svc.predict(x_test)\n",
- "svc.best_estimator_"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 403,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:40:06.056605400Z",
- "start_time": "2023-07-14T07:40:05.982619500Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "支持向量机模型在 训练集 上的性能 -- \n",
- "Support Vector Machinen | 准确率: 0.8411\n",
- "Support Vector Machinen | 均方误差: 0.1589\n",
- "Support Vector Machinen | R2-score: 0.3269\n",
- "Support Vector Machinen | 混淆矩阵:\n",
- " [[348 37]\n",
- " [ 62 176]]\n",
- "\n",
- "\n",
- "\n",
- "支持向量机模型在 测试集 上的性能 -- \n",
- "Support Vector Machine | 准确率: 0.8507\n",
- "Support Vector Machine | 均方误差: 0.1493\n",
- "Support Vector Machine | R2-score: 0.3715\n",
- "Support Vector Machine | 混淆矩阵:\n",
- " [[151 13]\n",
- " [ 27 77]]\n"
- ]
- }
- ],
- "source": [
- "# 模型性能评估\n",
- "print(\"支持向量机模型在 训练集 上的性能 -- \")\n",
- "model_performance_evaluation('Support Vector Machinen', y_train, svc.predict(x_train))\n",
- "print(\"\\n\"*2)\n",
- "print(\"支持向量机模型在 测试集 上的性能 -- \")\n",
- "model_performance_evaluation('Support Vector Machine', y_test, y_pred_svm)"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 404,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:40:06.277697200Z",
- "start_time": "2023-07-14T07:40:06.026605300Z"
- }
- },
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "该支持向量机模型的AUC值为 0.8305581613508443\n"
- ]
- },
- {
- "data": {
- "text/plain": "",
- "image/png": "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0Xg6tFdUlHPFFVdz5ZXXAO4mmwaDgTffXO5pEmq1NnmajoI7ONLr9dx55z/x82v9WVJZWcGOHdu5996HPNe+++5rXC4X11//D8+1iIgIXnxx2X6d1+NwOHjqqcf46acfiI9P4IEHHiE6Onqv49as+ZUXXlhCRUUFcXFjuPPOe0hJSfW8brVauemma7jxxluYOtX982vjxr+45Zbr273XlVdew1VXXbfPn2Eg6vOtLp1Ox6JFi3j44YeZMWMGq1ev5vbbbwfcQVFGRka7Mf/973+xWCzcddddTJ06lalTp3LKKaf06LzSKsrQ6NyHIo4Pd5/ho9sjsVl1ubCta25TMWt2jz5bCCEGs+LiIk48cQ5z557KBx+8y7XXXkF5eRnLlr1McnIKKSnj0Ov1jB8/EYNBz0cffeAZ29TUxAcfLGfBggewWCxs376Vzz77hk8++YoVK1Zyyy3zSE0dz6WXXtnmmVqtlqKiAn744VsAPvzwfe69tzVN4o03lrJ06UsAaDStwcuKFf/lvPMuxGw28frrr1JdXcVnn33CqFFxrFixko8++oLQ0DBOPPHU/T6k8PXXX2XTpg28+OIyTjzxFBYtun+vYywWM08++Qh33XUvH374GTNnzuKee+5o8/26//67SUtre+TLpElT+Oabnzy/vv56NSNGxHLwEKxO7pfjMY855hi+//57duzYweTJkwkNDQUgPT29w/sXLFjAggULenVOm8rdFV06Vyi+Oj8USyW6ujwAHNFTcWamo1ZXga8v+klTenUuQggxmIwYEevZxvrss4/55psviYyMQqvVMWHCJGw2GzqdjsmTp+B0OtoEFC+++Aznn38xw4ePYPHiRygpKebZZ18GYO3aNSxceA+LFz/d4WnPer2B5557mgkTJrFp0wYOPXQ2V111KS+84A44LrzwErKzMz335+bm8P33q3jnnQ95883XKCsr5dFHH+Tss89l587tfPfdKiwW9/8gn3bamfv1PXG5XHz++SfMm3cXiYlJJCYm8dlnKygqKiS2i1SKgoJ8IiOjPCs5Z511Dv/5z5vYbDYMBgNLlixm9OgxZGVlthmn0+kIDGxt/fDdd6sYPnwEU6ZM3a/PMRD127ngERERzJkzp78e3056rfssoSDtCKB1m8sRloxqDMa2zn3IomHaISiGgdUjRwgxyKkqOBr79pk6X3cjpW5w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RW2uff75JxQXF/HNN18yf/48rFYrL7ywBICnnnqcL7/8rMv3fPvt15k9e1q7X+npaV7NqaiokCuuuJCqqsq93nviiXPIzc3B5XLhdDrZuXM7N9zg7gD/6KMP8sMP3+J0OnE4HACUlZVy6qnHcfzxR3LyycdwzjmnccQRhzB37ils2PAnZrMJu91OcXERp59+glfzFXs35A4y2FrhruiKdUBTuRHV4UITGYl2bEI/z0wIIQavoqJCVFVFURTPtejomDbn6QQEBOJyudqMCwoK4v7753P++Reh0+n58cfvaWhoAGDz5o0cfviRdEWn03H44XO4776HAPcJyyeeOAd/f/8O7z/55GMIDg7Gz8/9ut1uIzIyittu+z/PXJuaGqmrq+WFF15jzJh4z1i93oDRaCQzM4PHHnsIh8NOeXk5V111KSUlu9m8eSPvvvtvLrnkCo455niioqL58svvef75pxk1Ko4zz5zL6aefwKuvvkVMzHDmzbuFM888m9TU8T1y0GJ5eRmPPLKQXbt2csQRc7jzznswGLo+CPONN5by1lvL2l1//vlXmTRpCkuXvsTq1d/hdDo47bSzuOKKq9HpdDzyyEK++ebLduM++ugLYmKG7/dn2R9DLvDJrncvWabazJhK3MefG2Ye1uY/RiGEED3rgw+WU11djUbj/rv2l19+YuXK7wkKCvL01mr5e9jhcKAoCk6nE1WFI46YQ3Z2FtXVVRQVFTJq1GgyMzMoLi5kypSDAHdA43A42v0g12g06HQ6/Pz8PO8NoO3k6JJ33/2IgIBAT6Bx3XVXct55F3Liiad6Ap/6+jqqq6uJixsDQE5OFg0NJs8qT1xcPG+//R7l5WX8/POPnHfehXz88YckJ6cwYcKkds90OBwdHqhoMOjR6w0oitIjP6Puv38+wcHBvPnmcpYvf5t33nmLq666rssxl1xyBeedd5Hn69LSEv71r5tISkrhzTdfY/36//H00y9gt9u49967UFWVa665gXnz7uaWW+Z5xm3fvpXnnnuayMio/f4c+2vIBT4ljYWggQSrFVOJ+z8EaUoqhBjIVFWFThpu9hofn279ML799vmef9+9u5j09HSWLn2J//3vV0+wYjI14HS6+OWXn7j55n9y2GFHsHbtb5jNJn777RdGjIilpqaaigoHtbW16HQ6Lr74XOx2Gw0NDZxwwincddc9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\n"
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "# 绘制ROC曲线并计算AUC值\n",
- "auc_svm = roc_auc_score(y_test, y_pred_svm)\n",
- "print(f\"该支持向量机模型的AUC值为 {auc_svm}\")\n",
- "fpr_svm, tpr_svm, thresholds = roc_curve(y_test, y_pred_svm)\n",
- "plt.plot(fpr_svm, tpr_svm, label=\"支持向量机: \"+str(round(auc_svm, 3)))\n",
- "plt.plot(fpr_nn, tpr_nn, label=\"神经网络: \"+str(round(auc_nn, 3)))\n",
- "plt.plot(fpr_dt, tpr_dt, label=\"决策树: \"+str(round(auc_dt, 3)))\n",
- "plt.plot(fpr_lr, tpr_lr, label=\"对数几率模型: \"+str(round(auc_lr, 3)))\n",
- "plt.xlabel('False Positive Rate')\n",
- "plt.ylabel('True Positive Rate')\n",
- "plt.title('ROC')\n",
- "plt.xlim([0,1])\n",
- "plt.ylim([0,1.1])\n",
- "plt.grid()\n",
- "plt.legend(loc='lower right')\n",
- "plt.show()"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "## 由上述结果可以看到,决支持向量机的分类准确率最高,所以接下来我们使用决策树模型将结果填入submission"
- ]
- },
- {
- "cell_type": "markdown",
- "metadata": {
- "pycharm": {
- "name": "#%% md\n"
- }
- },
- "source": [
- "## 七、使用SVM对测试集进行训练,并写入submission文件"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 405,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "end_time": "2023-07-14T07:40:06.377695Z",
- "start_time": "2023-07-14T07:40:06.287695300Z"
- }
- },
- "outputs": [
- {
- "ename": "FileNotFoundError",
- "evalue": "[Errno 2] No such file or directory: 'test.csv'",
- "output_type": "error",
- "traceback": [
- "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m",
- "\u001B[1;31mFileNotFoundError\u001B[0m Traceback (most recent call last)",
- "\u001B[1;32m~\\AppData\\Local\\Temp\\ipykernel_5868\\2047192928.py\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[1;32m----> 1\u001B[1;33m \u001B[0mtest_df\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mpd\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mread_csv\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m\"test.csv\"\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 2\u001B[0m \u001B[0mtest_df\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mdrop\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;34m'PassengerId'\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;34m'Name'\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;34m'Cabin'\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0maxis\u001B[0m\u001B[1;33m=\u001B[0m\u001B[1;36m1\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0minplace\u001B[0m\u001B[1;33m=\u001B[0m\u001B[1;32mTrue\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 3\u001B[0m \u001B[0mtest_df\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mFare\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mtest_df\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mFare\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mfillna\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mtest_df\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mFare\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mmean\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 4\u001B[0m \u001B[0mage_df\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mtest_df\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;34m\"Age\"\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;34m\"Fare\"\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;34m\"Parch\"\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;34m\"SibSp\"\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;34m\"Pclass\"\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mcopy\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m \u001B[1;31m# .copy()用于复制原始数据 挑选数值型字段\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 5\u001B[0m \u001B[1;31m# 分割有缺失值的数据集\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
- "\u001B[1;32mc:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\pandas\\util\\_decorators.py\u001B[0m in \u001B[0;36mwrapper\u001B[1;34m(*args, **kwargs)\u001B[0m\n\u001B[0;32m 309\u001B[0m \u001B[0mstacklevel\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mstacklevel\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 310\u001B[0m )\n\u001B[1;32m--> 311\u001B[1;33m \u001B[1;32mreturn\u001B[0m \u001B[0mfunc\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m*\u001B[0m\u001B[0margs\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;33m**\u001B[0m\u001B[0mkwargs\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 312\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 313\u001B[0m \u001B[1;32mreturn\u001B[0m \u001B[0mwrapper\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
- "\u001B[1;32mc:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\pandas\\io\\parsers\\readers.py\u001B[0m in \u001B[0;36mread_csv\u001B[1;34m(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, encoding_errors, dialect, error_bad_lines, warn_bad_lines, on_bad_lines, delim_whitespace, low_memory, memory_map, float_precision, storage_options)\u001B[0m\n\u001B[0;32m 584\u001B[0m \u001B[0mkwds\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mupdate\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mkwds_defaults\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 585\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 586\u001B[1;33m \u001B[1;32mreturn\u001B[0m \u001B[0m_read\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mfilepath_or_buffer\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mkwds\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 587\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 588\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n",
- "\u001B[1;32mc:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\pandas\\io\\parsers\\readers.py\u001B[0m in \u001B[0;36m_read\u001B[1;34m(filepath_or_buffer, kwds)\u001B[0m\n\u001B[0;32m 480\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 481\u001B[0m \u001B[1;31m# Create the parser.\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 482\u001B[1;33m \u001B[0mparser\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mTextFileReader\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mfilepath_or_buffer\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;33m**\u001B[0m\u001B[0mkwds\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 483\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 484\u001B[0m \u001B[1;32mif\u001B[0m \u001B[0mchunksize\u001B[0m \u001B[1;32mor\u001B[0m \u001B[0miterator\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
- "\u001B[1;32mc:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\pandas\\io\\parsers\\readers.py\u001B[0m in \u001B[0;36m__init__\u001B[1;34m(self, f, engine, **kwds)\u001B[0m\n\u001B[0;32m 809\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0moptions\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;34m\"has_index_names\"\u001B[0m\u001B[1;33m]\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mkwds\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;34m\"has_index_names\"\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 810\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 811\u001B[1;33m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_engine\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_make_engine\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mengine\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 812\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 813\u001B[0m \u001B[1;32mdef\u001B[0m \u001B[0mclose\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
- "\u001B[1;32mc:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\pandas\\io\\parsers\\readers.py\u001B[0m in \u001B[0;36m_make_engine\u001B[1;34m(self, engine)\u001B[0m\n\u001B[0;32m 1038\u001B[0m )\n\u001B[0;32m 1039\u001B[0m \u001B[1;31m# error: Too many arguments for \"ParserBase\"\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m-> 1040\u001B[1;33m \u001B[1;32mreturn\u001B[0m \u001B[0mmapping\u001B[0m\u001B[1;33m[\u001B[0m\u001B[0mengine\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mf\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;33m**\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0moptions\u001B[0m\u001B[1;33m)\u001B[0m \u001B[1;31m# type: ignore[call-arg]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 1041\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 1042\u001B[0m \u001B[1;32mdef\u001B[0m \u001B[0m_failover_to_python\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
- "\u001B[1;32mc:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\pandas\\io\\parsers\\c_parser_wrapper.py\u001B[0m in \u001B[0;36m__init__\u001B[1;34m(self, src, **kwds)\u001B[0m\n\u001B[0;32m 49\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 50\u001B[0m \u001B[1;31m# open handles\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m---> 51\u001B[1;33m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_open_handles\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0msrc\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mkwds\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 52\u001B[0m \u001B[1;32massert\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mhandles\u001B[0m \u001B[1;32mis\u001B[0m \u001B[1;32mnot\u001B[0m \u001B[1;32mNone\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 53\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n",
- "\u001B[1;32mc:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\pandas\\io\\parsers\\base_parser.py\u001B[0m in \u001B[0;36m_open_handles\u001B[1;34m(self, src, kwds)\u001B[0m\n\u001B[0;32m 227\u001B[0m \u001B[0mmemory_map\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mkwds\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mget\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m\"memory_map\"\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;32mFalse\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 228\u001B[0m \u001B[0mstorage_options\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mkwds\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mget\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m\"storage_options\"\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;32mNone\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 229\u001B[1;33m \u001B[0merrors\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mkwds\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mget\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m\"encoding_errors\"\u001B[0m\u001B[1;33m,\u001B[0m \u001B[1;34m\"strict\"\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 230\u001B[0m )\n\u001B[0;32m 231\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n",
- "\u001B[1;32mc:\\users\\administrator\\appdata\\local\\programs\\python\\python37\\lib\\site-packages\\pandas\\io\\common.py\u001B[0m in \u001B[0;36mget_handle\u001B[1;34m(path_or_buf, mode, encoding, compression, memory_map, is_text, errors, storage_options)\u001B[0m\n\u001B[0;32m 705\u001B[0m \u001B[0mencoding\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0mioargs\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mencoding\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 706\u001B[0m \u001B[0merrors\u001B[0m\u001B[1;33m=\u001B[0m\u001B[0merrors\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m--> 707\u001B[1;33m \u001B[0mnewline\u001B[0m\u001B[1;33m=\u001B[0m\u001B[1;34m\"\"\u001B[0m\u001B[1;33m,\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 708\u001B[0m )\n\u001B[0;32m 709\u001B[0m \u001B[1;32melse\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n",
- "\u001B[1;31mFileNotFoundError\u001B[0m: [Errno 2] No such file or directory: 'test.csv'"
- ]
- }
- ],
- "source": [
- "test_df=pd.read_csv(\"test.csv\")\n",
- "test_df.drop(['PassengerId','Name','Cabin'], axis=1, inplace=True)\n",
- "test_df.Fare=test_df.Fare.fillna(test_df.Fare.mean())\n",
- "age_df = test_df[[\"Age\", \"Fare\", \"Parch\", \"SibSp\", \"Pclass\"]].copy() # .copy()用于复制原始数据 挑选数值型字段\n",
- "# 分割有缺失值的数据集\n",
- "age_df_notnull = age_df.loc[age_df.Age.notnull()]\n",
- "age_df_isnull = age_df.loc[age_df.Age.isnull()]\n",
- "# 利用非缺失数据建模\n",
- "x = age_df_notnull.iloc[:, 1:]\n",
- "y = age_df_notnull.values[:, 0]\n",
- "x_test = age_df_isnull.values[:, 1:]\n",
- "\n",
- "rfr = RandomForestRegressor(n_estimators=1000, n_jobs=-1)\n",
- "rfr.fit(x, y)\n",
- "y_pred = rfr.predict(x_test)\n",
- "\n",
- "test_df.loc[test_df[\"Age\"].isnull(), \"Age\"] = y_pred\n",
- "test_df.loc[test_df['Age'] <= 20.315, 'Age'] = 0\n",
- "test_df.loc[(test_df['Age'] > 20.315) & (test_df['Age'] <= 40.21), 'Age'] = 1\n",
- "test_df.loc[(test_df['Age'] > 40.21) & (test_df['Age'] <= 60.105), 'Age'] = 2\n",
- "test_df.loc[test_df['Age'] > 60.105, 'Age'] = 3\n",
- "test_df['Age'] = test_df['Age'].astype(int)\n",
- "\n",
- "test_df[\"Embarked\"] = test_df[\"Embarked\"].dropna(0)\n",
- "test_df.loc[test_df['Fare'] <= 7.91, 'Fare'] = 0\n",
- "test_df.loc[(test_df['Fare'] > 7.91) & (test_df['Fare'] <= 14.454), 'Fare'] = 1\n",
- "test_df.loc[(test_df['Fare'] > 14.454) & (test_df['Fare'] <= 31.0), 'Fare'] = 2\n",
- "test_df.loc[test_df['Fare'] > 31.0, 'Fare'] = 3\n",
- "test_df['Fare'] = test_df['Fare'].astype(int)\n",
- "\n",
- "test_df['FamilySize'] = test_df['SibSp'] + test_df['Parch']\n",
- "test_df['IsAlone'] = 0\n",
- "test_df.loc[test_df['FamilySize'] == 1, 'IsAlone'] = 1\n",
- "# 删除原有的列 Parch & SibSp\n",
- "test_df.drop(['SibSp'], axis=1, inplace=True)\n",
- "test_df.drop(['Parch'], axis=1, inplace=True)\n",
- "test_df.drop(['FamilySize'], axis=1, inplace=True)\n",
- "\n",
- "# one-hot编码\n",
- "sex_dummies_titanic = pd.get_dummies(test_df['Sex'])\n",
- "sex_dummies_titanic.columns = ['男性', '女性']\n",
- "test_df = test_df.join(sex_dummies_titanic)\n",
- "\n",
- "embark_dummies_titanic = pd.get_dummies(test_df['Embarked'])\n",
- "embark_dummies_titanic.columns = ['港口S', '港口C','港口Q']\n",
- "test_df = test_df.join(embark_dummies_titanic)\n",
- "\n",
- "class_dummies_titanic = pd.get_dummies(test_df['Pclass'])\n",
- "class_dummies_titanic.columns = ['一等舱', '二等舱', '三等舱']\n",
- "test_df = test_df.join(class_dummies_titanic)\n",
- "\n",
- "age_dummies_titanic = pd.get_dummies(test_df['Age'])\n",
- "age_dummies_titanic.columns = ['孩子', '少年', '中年','老人']\n",
- "test_df = test_df.join(age_dummies_titanic)\n",
- "\n",
- "fare_dummies_titanic = pd.get_dummies(test_df['Fare'])\n",
- "fare_dummies_titanic.columns = ['便宜票价', '普通票价', '高级票价','豪华票价']\n",
- "\n",
- "drop_items=['Sex','Embarked','IsAlone','Pclass','Age','Fare','Ticket']\n",
- "test_df.drop(drop_items, axis=1, inplace=True)\n",
- "test_df = test_df.join(fare_dummies_titanic)\n",
- "result=svc.predict(test_df)\n",
- "submission= pd.read_csv(\"gender_submission.csv\")\n",
- "submission['Survived']=result\n",
- "submission.to_csv(\"gender_submission.csv\",index=None)\n",
- "print(\"写入完成!\")"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {
- "pycharm": {
- "name": "#%%\n"
- },
- "ExecuteTime": {
- "start_time": "2023-07-14T07:40:06.317696100Z"
- }
- },
- "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.7.2"
- }
- },
- "nbformat": 4,
- "nbformat_minor": 2
-}