966c040379
Signed-off-by: less IS more <13190735+wnflt@user.noreply.gitee.com>
2038 lines
94 KiB
Plaintext
2038 lines
94 KiB
Plaintext
{
|
||
"cells": [
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 1,
|
||
"id": "c259bb65",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"import pandas as pd\n",
|
||
"import numpy as np\n",
|
||
"import matplotlib.pyplot as plt\n",
|
||
"import seaborn as sns\n",
|
||
"from sklearn import preprocessing\n",
|
||
"from sklearn.preprocessing import StandardScaler\n",
|
||
"from sklearn.model_selection import train_test_split\n",
|
||
"from sklearn.metrics import accuracy_score,confusion_matrix,roc_curve,roc_auc_score\n",
|
||
"from sklearn.ensemble import RandomForestClassifier,BaggingClassifier,AdaBoostClassifier\n",
|
||
"from sklearn.naive_bayes import GaussianNB\n",
|
||
"from sklearn.tree import DecisionTreeClassifier\n",
|
||
"from sklearn.svm import SVC\n",
|
||
"from sklearn.linear_model import LogisticRegression\n",
|
||
"from sklearn.neighbors import KNeighborsClassifier \n",
|
||
"import warnings\n",
|
||
"warnings.filterwarnings('ignore')\n",
|
||
"\n",
|
||
"plt.rcParams['font.sans-serif'] = ['SimHei'] # matplotlib显示中文字体\n",
|
||
"plt.rcParams['axes.unicode_minus'] = False # matplotlib显示负号"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 2,
|
||
"id": "0b7fc8fa",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>abilities</th>\n",
|
||
" <th>against_bug</th>\n",
|
||
" <th>against_dark</th>\n",
|
||
" <th>against_dragon</th>\n",
|
||
" <th>against_electric</th>\n",
|
||
" <th>against_fairy</th>\n",
|
||
" <th>against_fight</th>\n",
|
||
" <th>against_fire</th>\n",
|
||
" <th>against_flying</th>\n",
|
||
" <th>against_ghost</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>percentage_male</th>\n",
|
||
" <th>pokedex_number</th>\n",
|
||
" <th>sp_attack</th>\n",
|
||
" <th>sp_defense</th>\n",
|
||
" <th>speed</th>\n",
|
||
" <th>type1</th>\n",
|
||
" <th>type2</th>\n",
|
||
" <th>weight_kg</th>\n",
|
||
" <th>generation</th>\n",
|
||
" <th>is_legendary</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>['Overgrow', 'Chlorophyll']</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>poison</td>\n",
|
||
" <td>6.9</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>['Overgrow', 'Chlorophyll']</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>poison</td>\n",
|
||
" <td>13.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>['Overgrow', 'Chlorophyll']</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>122</td>\n",
|
||
" <td>120</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>poison</td>\n",
|
||
" <td>100.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>['Blaze', 'Solar Power']</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>fire</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>8.5</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>['Blaze', 'Solar Power']</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>0.5</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>fire</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>19.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5 rows × 41 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" abilities against_bug against_dark against_dragon \\\n",
|
||
"0 ['Overgrow', 'Chlorophyll'] 1.0 1.0 1.0 \n",
|
||
"1 ['Overgrow', 'Chlorophyll'] 1.0 1.0 1.0 \n",
|
||
"2 ['Overgrow', 'Chlorophyll'] 1.0 1.0 1.0 \n",
|
||
"3 ['Blaze', 'Solar Power'] 0.5 1.0 1.0 \n",
|
||
"4 ['Blaze', 'Solar Power'] 0.5 1.0 1.0 \n",
|
||
"\n",
|
||
" against_electric against_fairy against_fight against_fire \\\n",
|
||
"0 0.5 0.5 0.5 2.0 \n",
|
||
"1 0.5 0.5 0.5 2.0 \n",
|
||
"2 0.5 0.5 0.5 2.0 \n",
|
||
"3 1.0 0.5 1.0 0.5 \n",
|
||
"4 1.0 0.5 1.0 0.5 \n",
|
||
"\n",
|
||
" against_flying against_ghost ... percentage_male pokedex_number \\\n",
|
||
"0 2.0 1.0 ... 88.1 1 \n",
|
||
"1 2.0 1.0 ... 88.1 2 \n",
|
||
"2 2.0 1.0 ... 88.1 3 \n",
|
||
"3 1.0 1.0 ... 88.1 4 \n",
|
||
"4 1.0 1.0 ... 88.1 5 \n",
|
||
"\n",
|
||
" sp_attack sp_defense speed type1 type2 weight_kg generation \\\n",
|
||
"0 65 65 45 grass poison 6.9 1 \n",
|
||
"1 80 80 60 grass poison 13.0 1 \n",
|
||
"2 122 120 80 grass poison 100.0 1 \n",
|
||
"3 60 50 65 fire NaN 8.5 1 \n",
|
||
"4 80 65 80 fire NaN 19.0 1 \n",
|
||
"\n",
|
||
" is_legendary \n",
|
||
"0 0 \n",
|
||
"1 0 \n",
|
||
"2 0 \n",
|
||
"3 0 \n",
|
||
"4 0 \n",
|
||
"\n",
|
||
"[5 rows x 41 columns]"
|
||
]
|
||
},
|
||
"execution_count": 2,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df = pd.read_csv('pokemon0820.csv')\n",
|
||
"df.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 3,
|
||
"id": "6846d64a",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"<class 'pandas.core.frame.DataFrame'>\n",
|
||
"RangeIndex: 801 entries, 0 to 800\n",
|
||
"Data columns (total 41 columns):\n",
|
||
" # Column Non-Null Count Dtype \n",
|
||
"--- ------ -------------- ----- \n",
|
||
" 0 abilities 801 non-null object \n",
|
||
" 1 against_bug 801 non-null float64\n",
|
||
" 2 against_dark 801 non-null float64\n",
|
||
" 3 against_dragon 801 non-null float64\n",
|
||
" 4 against_electric 801 non-null float64\n",
|
||
" 5 against_fairy 801 non-null float64\n",
|
||
" 6 against_fight 801 non-null float64\n",
|
||
" 7 against_fire 801 non-null float64\n",
|
||
" 8 against_flying 801 non-null float64\n",
|
||
" 9 against_ghost 801 non-null float64\n",
|
||
" 10 against_grass 801 non-null float64\n",
|
||
" 11 against_ground 801 non-null float64\n",
|
||
" 12 against_ice 801 non-null float64\n",
|
||
" 13 against_normal 801 non-null float64\n",
|
||
" 14 against_poison 801 non-null float64\n",
|
||
" 15 against_psychic 801 non-null float64\n",
|
||
" 16 against_rock 801 non-null float64\n",
|
||
" 17 against_steel 801 non-null float64\n",
|
||
" 18 against_water 801 non-null float64\n",
|
||
" 19 attack 801 non-null int64 \n",
|
||
" 20 base_egg_steps 801 non-null int64 \n",
|
||
" 21 base_happiness 801 non-null int64 \n",
|
||
" 22 base_total 801 non-null int64 \n",
|
||
" 23 capture_rate 801 non-null object \n",
|
||
" 24 classfication 801 non-null object \n",
|
||
" 25 defense 801 non-null int64 \n",
|
||
" 26 experience_growth 801 non-null int64 \n",
|
||
" 27 height_m 781 non-null float64\n",
|
||
" 28 hp 801 non-null int64 \n",
|
||
" 29 japanese_name 801 non-null object \n",
|
||
" 30 name 801 non-null object \n",
|
||
" 31 percentage_male 703 non-null float64\n",
|
||
" 32 pokedex_number 801 non-null int64 \n",
|
||
" 33 sp_attack 801 non-null int64 \n",
|
||
" 34 sp_defense 801 non-null int64 \n",
|
||
" 35 speed 801 non-null int64 \n",
|
||
" 36 type1 801 non-null object \n",
|
||
" 37 type2 417 non-null object \n",
|
||
" 38 weight_kg 781 non-null float64\n",
|
||
" 39 generation 801 non-null int64 \n",
|
||
" 40 is_legendary 801 non-null int64 \n",
|
||
"dtypes: float64(21), int64(13), object(7)\n",
|
||
"memory usage: 256.7+ KB\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# 缺失值检测\n",
|
||
"df.info()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 4,
|
||
"id": "2dd54e3f",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>against_bug</th>\n",
|
||
" <th>against_dark</th>\n",
|
||
" <th>against_dragon</th>\n",
|
||
" <th>against_electric</th>\n",
|
||
" <th>against_fairy</th>\n",
|
||
" <th>against_fight</th>\n",
|
||
" <th>against_fire</th>\n",
|
||
" <th>against_flying</th>\n",
|
||
" <th>against_ghost</th>\n",
|
||
" <th>against_grass</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>height_m</th>\n",
|
||
" <th>hp</th>\n",
|
||
" <th>percentage_male</th>\n",
|
||
" <th>pokedex_number</th>\n",
|
||
" <th>sp_attack</th>\n",
|
||
" <th>sp_defense</th>\n",
|
||
" <th>speed</th>\n",
|
||
" <th>weight_kg</th>\n",
|
||
" <th>generation</th>\n",
|
||
" <th>is_legendary</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>count</th>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>781.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>703.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>781.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>mean</th>\n",
|
||
" <td>0.996255</td>\n",
|
||
" <td>1.057116</td>\n",
|
||
" <td>0.968789</td>\n",
|
||
" <td>1.073970</td>\n",
|
||
" <td>1.068976</td>\n",
|
||
" <td>1.065543</td>\n",
|
||
" <td>1.135456</td>\n",
|
||
" <td>1.192884</td>\n",
|
||
" <td>0.985019</td>\n",
|
||
" <td>1.034020</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>1.163892</td>\n",
|
||
" <td>68.958801</td>\n",
|
||
" <td>55.155761</td>\n",
|
||
" <td>401.000000</td>\n",
|
||
" <td>71.305868</td>\n",
|
||
" <td>70.911361</td>\n",
|
||
" <td>66.334582</td>\n",
|
||
" <td>61.378105</td>\n",
|
||
" <td>3.690387</td>\n",
|
||
" <td>0.087391</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>std</th>\n",
|
||
" <td>0.597248</td>\n",
|
||
" <td>0.438142</td>\n",
|
||
" <td>0.353058</td>\n",
|
||
" <td>0.654962</td>\n",
|
||
" <td>0.522167</td>\n",
|
||
" <td>0.717251</td>\n",
|
||
" <td>0.691853</td>\n",
|
||
" <td>0.604488</td>\n",
|
||
" <td>0.558256</td>\n",
|
||
" <td>0.788896</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>1.080326</td>\n",
|
||
" <td>26.576015</td>\n",
|
||
" <td>20.261623</td>\n",
|
||
" <td>231.373075</td>\n",
|
||
" <td>32.353826</td>\n",
|
||
" <td>27.942501</td>\n",
|
||
" <td>28.907662</td>\n",
|
||
" <td>109.354766</td>\n",
|
||
" <td>1.930420</td>\n",
|
||
" <td>0.282583</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>min</th>\n",
|
||
" <td>0.250000</td>\n",
|
||
" <td>0.250000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.250000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.250000</td>\n",
|
||
" <td>0.250000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>0.250000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.100000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>10.000000</td>\n",
|
||
" <td>20.000000</td>\n",
|
||
" <td>5.000000</td>\n",
|
||
" <td>0.100000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>25%</th>\n",
|
||
" <td>0.500000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>0.500000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>0.500000</td>\n",
|
||
" <td>0.500000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>0.500000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>0.600000</td>\n",
|
||
" <td>50.000000</td>\n",
|
||
" <td>50.000000</td>\n",
|
||
" <td>201.000000</td>\n",
|
||
" <td>45.000000</td>\n",
|
||
" <td>50.000000</td>\n",
|
||
" <td>45.000000</td>\n",
|
||
" <td>9.000000</td>\n",
|
||
" <td>2.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>50%</th>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>65.000000</td>\n",
|
||
" <td>50.000000</td>\n",
|
||
" <td>401.000000</td>\n",
|
||
" <td>65.000000</td>\n",
|
||
" <td>66.000000</td>\n",
|
||
" <td>65.000000</td>\n",
|
||
" <td>27.300000</td>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>75%</th>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>2.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>1.500000</td>\n",
|
||
" <td>80.000000</td>\n",
|
||
" <td>50.000000</td>\n",
|
||
" <td>601.000000</td>\n",
|
||
" <td>91.000000</td>\n",
|
||
" <td>90.000000</td>\n",
|
||
" <td>85.000000</td>\n",
|
||
" <td>64.800000</td>\n",
|
||
" <td>5.000000</td>\n",
|
||
" <td>0.000000</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>max</th>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>2.000000</td>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>4.000000</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>14.500000</td>\n",
|
||
" <td>255.000000</td>\n",
|
||
" <td>100.000000</td>\n",
|
||
" <td>801.000000</td>\n",
|
||
" <td>194.000000</td>\n",
|
||
" <td>230.000000</td>\n",
|
||
" <td>180.000000</td>\n",
|
||
" <td>999.900000</td>\n",
|
||
" <td>7.000000</td>\n",
|
||
" <td>1.000000</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>8 rows × 34 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" against_bug against_dark against_dragon against_electric \\\n",
|
||
"count 801.000000 801.000000 801.000000 801.000000 \n",
|
||
"mean 0.996255 1.057116 0.968789 1.073970 \n",
|
||
"std 0.597248 0.438142 0.353058 0.654962 \n",
|
||
"min 0.250000 0.250000 0.000000 0.000000 \n",
|
||
"25% 0.500000 1.000000 1.000000 0.500000 \n",
|
||
"50% 1.000000 1.000000 1.000000 1.000000 \n",
|
||
"75% 1.000000 1.000000 1.000000 1.000000 \n",
|
||
"max 4.000000 4.000000 2.000000 4.000000 \n",
|
||
"\n",
|
||
" against_fairy against_fight against_fire against_flying \\\n",
|
||
"count 801.000000 801.000000 801.000000 801.000000 \n",
|
||
"mean 1.068976 1.065543 1.135456 1.192884 \n",
|
||
"std 0.522167 0.717251 0.691853 0.604488 \n",
|
||
"min 0.250000 0.000000 0.250000 0.250000 \n",
|
||
"25% 1.000000 0.500000 0.500000 1.000000 \n",
|
||
"50% 1.000000 1.000000 1.000000 1.000000 \n",
|
||
"75% 1.000000 1.000000 2.000000 1.000000 \n",
|
||
"max 4.000000 4.000000 4.000000 4.000000 \n",
|
||
"\n",
|
||
" against_ghost against_grass ... height_m hp \\\n",
|
||
"count 801.000000 801.000000 ... 781.000000 801.000000 \n",
|
||
"mean 0.985019 1.034020 ... 1.163892 68.958801 \n",
|
||
"std 0.558256 0.788896 ... 1.080326 26.576015 \n",
|
||
"min 0.000000 0.250000 ... 0.100000 1.000000 \n",
|
||
"25% 1.000000 0.500000 ... 0.600000 50.000000 \n",
|
||
"50% 1.000000 1.000000 ... 1.000000 65.000000 \n",
|
||
"75% 1.000000 1.000000 ... 1.500000 80.000000 \n",
|
||
"max 4.000000 4.000000 ... 14.500000 255.000000 \n",
|
||
"\n",
|
||
" percentage_male pokedex_number sp_attack sp_defense speed \\\n",
|
||
"count 703.000000 801.000000 801.000000 801.000000 801.000000 \n",
|
||
"mean 55.155761 401.000000 71.305868 70.911361 66.334582 \n",
|
||
"std 20.261623 231.373075 32.353826 27.942501 28.907662 \n",
|
||
"min 0.000000 1.000000 10.000000 20.000000 5.000000 \n",
|
||
"25% 50.000000 201.000000 45.000000 50.000000 45.000000 \n",
|
||
"50% 50.000000 401.000000 65.000000 66.000000 65.000000 \n",
|
||
"75% 50.000000 601.000000 91.000000 90.000000 85.000000 \n",
|
||
"max 100.000000 801.000000 194.000000 230.000000 180.000000 \n",
|
||
"\n",
|
||
" weight_kg generation is_legendary \n",
|
||
"count 781.000000 801.000000 801.000000 \n",
|
||
"mean 61.378105 3.690387 0.087391 \n",
|
||
"std 109.354766 1.930420 0.282583 \n",
|
||
"min 0.100000 1.000000 0.000000 \n",
|
||
"25% 9.000000 2.000000 0.000000 \n",
|
||
"50% 27.300000 4.000000 0.000000 \n",
|
||
"75% 64.800000 5.000000 0.000000 \n",
|
||
"max 999.900000 7.000000 1.000000 \n",
|
||
"\n",
|
||
"[8 rows x 34 columns]"
|
||
]
|
||
},
|
||
"execution_count": 4,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# 整体统计数据\n",
|
||
"df.describe()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 5,
|
||
"id": "624120d8",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"is_legendary 1.000000\n",
|
||
"base_egg_steps 0.873488\n",
|
||
"base_total 0.485440\n",
|
||
"sp_attack 0.406281\n",
|
||
"weight_kg 0.393023\n",
|
||
"experience_growth 0.361038\n",
|
||
"sp_defense 0.343241\n",
|
||
"height_m 0.322155\n",
|
||
"speed 0.311639\n",
|
||
"hp 0.308405\n",
|
||
"attack 0.303295\n",
|
||
"defense 0.265587\n",
|
||
"pokedex_number 0.196785\n",
|
||
"against_ghost 0.170746\n",
|
||
"generation 0.139029\n",
|
||
"against_dark 0.136315\n",
|
||
"against_fairy 0.050165\n",
|
||
"percentage_male 0.045222\n",
|
||
"against_bug 0.027864\n",
|
||
"against_dragon 0.014844\n",
|
||
"against_ground 0.012812\n",
|
||
"against_ice 0.005580\n",
|
||
"against_steel 0.001397\n",
|
||
"against_fire -0.011073\n",
|
||
"against_rock -0.017588\n",
|
||
"against_water -0.020679\n",
|
||
"against_electric -0.023151\n",
|
||
"against_poison -0.024349\n",
|
||
"against_normal -0.034761\n",
|
||
"against_fight -0.059132\n",
|
||
"against_flying -0.062214\n",
|
||
"against_grass -0.070826\n",
|
||
"against_psychic -0.106047\n",
|
||
"base_happiness -0.413108\n",
|
||
"Name: is_legendary, dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 5,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# 可视化变量与'is_legendary'的相关性\n",
|
||
"df.corr()['is_legendary'].sort_values(ascending=False)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 6,
|
||
"id": "7acf8619",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>attack</th>\n",
|
||
" <th>base_egg_steps</th>\n",
|
||
" <th>base_happiness</th>\n",
|
||
" <th>base_total</th>\n",
|
||
" <th>capture_rate</th>\n",
|
||
" <th>classfication</th>\n",
|
||
" <th>defense</th>\n",
|
||
" <th>experience_growth</th>\n",
|
||
" <th>height_m</th>\n",
|
||
" <th>hp</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>percentage_male</th>\n",
|
||
" <th>pokedex_number</th>\n",
|
||
" <th>sp_attack</th>\n",
|
||
" <th>sp_defense</th>\n",
|
||
" <th>speed</th>\n",
|
||
" <th>type1</th>\n",
|
||
" <th>type2</th>\n",
|
||
" <th>weight_kg</th>\n",
|
||
" <th>generation</th>\n",
|
||
" <th>is_legendary</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>49</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>318</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Seed Pokémon</td>\n",
|
||
" <td>49</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>0.7</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>poison</td>\n",
|
||
" <td>6.9</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>62</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>405</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Seed Pokémon</td>\n",
|
||
" <td>63</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>poison</td>\n",
|
||
" <td>13.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>100</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>625</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Seed Pokémon</td>\n",
|
||
" <td>123</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>122</td>\n",
|
||
" <td>120</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>poison</td>\n",
|
||
" <td>100.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>52</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>309</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Lizard Pokémon</td>\n",
|
||
" <td>43</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>0.6</td>\n",
|
||
" <td>39</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>fire</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>8.5</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>64</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>405</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Flame Pokémon</td>\n",
|
||
" <td>58</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>1.1</td>\n",
|
||
" <td>58</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>fire</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>19.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5 rows × 22 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" attack base_egg_steps base_happiness base_total capture_rate \\\n",
|
||
"0 49 5120 70 318 45 \n",
|
||
"1 62 5120 70 405 45 \n",
|
||
"2 100 5120 70 625 45 \n",
|
||
"3 52 5120 70 309 45 \n",
|
||
"4 64 5120 70 405 45 \n",
|
||
"\n",
|
||
" classfication defense experience_growth height_m hp ... \\\n",
|
||
"0 Seed Pokémon 49 1059860 0.7 45 ... \n",
|
||
"1 Seed Pokémon 63 1059860 1.0 60 ... \n",
|
||
"2 Seed Pokémon 123 1059860 2.0 80 ... \n",
|
||
"3 Lizard Pokémon 43 1059860 0.6 39 ... \n",
|
||
"4 Flame Pokémon 58 1059860 1.1 58 ... \n",
|
||
"\n",
|
||
" percentage_male pokedex_number sp_attack sp_defense speed type1 type2 \\\n",
|
||
"0 88.1 1 65 65 45 grass poison \n",
|
||
"1 88.1 2 80 80 60 grass poison \n",
|
||
"2 88.1 3 122 120 80 grass poison \n",
|
||
"3 88.1 4 60 50 65 fire NaN \n",
|
||
"4 88.1 5 80 65 80 fire NaN \n",
|
||
"\n",
|
||
" weight_kg generation is_legendary \n",
|
||
"0 6.9 1 0 \n",
|
||
"1 13.0 1 0 \n",
|
||
"2 100.0 1 0 \n",
|
||
"3 8.5 1 0 \n",
|
||
"4 19.0 1 0 \n",
|
||
"\n",
|
||
"[5 rows x 22 columns]"
|
||
]
|
||
},
|
||
"execution_count": 6,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# 剔除与'is_legendary'的特征变量\n",
|
||
"index_to_drop = np.arange(19)\n",
|
||
"df.drop(df.columns[index_to_drop], axis=1, inplace=True)\n",
|
||
"df.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 7,
|
||
"id": "2a618ea2",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>attack</th>\n",
|
||
" <th>base_egg_steps</th>\n",
|
||
" <th>base_happiness</th>\n",
|
||
" <th>base_total</th>\n",
|
||
" <th>capture_rate</th>\n",
|
||
" <th>classfication</th>\n",
|
||
" <th>defense</th>\n",
|
||
" <th>experience_growth</th>\n",
|
||
" <th>height_m</th>\n",
|
||
" <th>hp</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>percentage_male</th>\n",
|
||
" <th>pokedex_number</th>\n",
|
||
" <th>sp_attack</th>\n",
|
||
" <th>sp_defense</th>\n",
|
||
" <th>speed</th>\n",
|
||
" <th>type1</th>\n",
|
||
" <th>type2</th>\n",
|
||
" <th>weight_kg</th>\n",
|
||
" <th>generation</th>\n",
|
||
" <th>is_legendary</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>49</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>318</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Seed Pokémon</td>\n",
|
||
" <td>49</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>0.7</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>poison</td>\n",
|
||
" <td>6.9</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>62</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>405</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Seed Pokémon</td>\n",
|
||
" <td>63</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>poison</td>\n",
|
||
" <td>13.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>100</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>625</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Seed Pokémon</td>\n",
|
||
" <td>123</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>122</td>\n",
|
||
" <td>120</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>poison</td>\n",
|
||
" <td>100.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>52</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>309</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Lizard Pokémon</td>\n",
|
||
" <td>43</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>0.6</td>\n",
|
||
" <td>39</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>fire</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>8.5</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>64</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>405</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Flame Pokémon</td>\n",
|
||
" <td>58</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>1.1</td>\n",
|
||
" <td>58</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>fire</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>19.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5 rows × 21 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" attack base_egg_steps base_happiness base_total capture_rate \\\n",
|
||
"0 49 5120 70 318 45 \n",
|
||
"1 62 5120 70 405 45 \n",
|
||
"2 100 5120 70 625 45 \n",
|
||
"3 52 5120 70 309 45 \n",
|
||
"4 64 5120 70 405 45 \n",
|
||
"\n",
|
||
" classfication defense experience_growth height_m hp ... \\\n",
|
||
"0 Seed Pokémon 49 1059860 0.7 45 ... \n",
|
||
"1 Seed Pokémon 63 1059860 1.0 60 ... \n",
|
||
"2 Seed Pokémon 123 1059860 2.0 80 ... \n",
|
||
"3 Lizard Pokémon 43 1059860 0.6 39 ... \n",
|
||
"4 Flame Pokémon 58 1059860 1.1 58 ... \n",
|
||
"\n",
|
||
" percentage_male pokedex_number sp_attack sp_defense speed type1 \\\n",
|
||
"0 88.1 1 65 65 45 grass \n",
|
||
"1 88.1 2 80 80 60 grass \n",
|
||
"2 88.1 3 122 120 80 grass \n",
|
||
"3 88.1 4 60 50 65 fire \n",
|
||
"4 88.1 5 80 65 80 fire \n",
|
||
"\n",
|
||
" type2 weight_kg generation is_legendary \n",
|
||
"0 poison 6.9 1 0 \n",
|
||
"1 poison 13.0 1 0 \n",
|
||
"2 poison 100.0 1 0 \n",
|
||
"3 NaN 8.5 1 0 \n",
|
||
"4 NaN 19.0 1 0 \n",
|
||
"\n",
|
||
"[5 rows x 21 columns]"
|
||
]
|
||
},
|
||
"execution_count": 7,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df = df.drop('japanese_name', axis=1)\n",
|
||
"df.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 8,
|
||
"id": "6f4d6756",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>name</th>\n",
|
||
" <th>attack</th>\n",
|
||
" <th>base_egg_steps</th>\n",
|
||
" <th>base_happiness</th>\n",
|
||
" <th>base_total</th>\n",
|
||
" <th>capture_rate</th>\n",
|
||
" <th>classfication</th>\n",
|
||
" <th>defense</th>\n",
|
||
" <th>experience_growth</th>\n",
|
||
" <th>height_m</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>percentage_male</th>\n",
|
||
" <th>pokedex_number</th>\n",
|
||
" <th>sp_attack</th>\n",
|
||
" <th>sp_defense</th>\n",
|
||
" <th>speed</th>\n",
|
||
" <th>type1</th>\n",
|
||
" <th>type2</th>\n",
|
||
" <th>weight_kg</th>\n",
|
||
" <th>generation</th>\n",
|
||
" <th>is_legendary</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>Bulbasaur</td>\n",
|
||
" <td>49</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>318</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Seed Pokémon</td>\n",
|
||
" <td>49</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>0.7</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>poison</td>\n",
|
||
" <td>6.9</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>Ivysaur</td>\n",
|
||
" <td>62</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>405</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Seed Pokémon</td>\n",
|
||
" <td>63</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>poison</td>\n",
|
||
" <td>13.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>Venusaur</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>625</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Seed Pokémon</td>\n",
|
||
" <td>123</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>122</td>\n",
|
||
" <td>120</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>poison</td>\n",
|
||
" <td>100.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>Charmander</td>\n",
|
||
" <td>52</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>309</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Lizard Pokémon</td>\n",
|
||
" <td>43</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>0.6</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>fire</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>8.5</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Charmeleon</td>\n",
|
||
" <td>64</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>405</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Flame Pokémon</td>\n",
|
||
" <td>58</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>1.1</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>fire</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>19.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>5 rows × 21 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" name attack base_egg_steps base_happiness base_total \\\n",
|
||
"0 Bulbasaur 49 5120 70 318 \n",
|
||
"1 Ivysaur 62 5120 70 405 \n",
|
||
"2 Venusaur 100 5120 70 625 \n",
|
||
"3 Charmander 52 5120 70 309 \n",
|
||
"4 Charmeleon 64 5120 70 405 \n",
|
||
"\n",
|
||
" capture_rate classfication defense experience_growth height_m ... \\\n",
|
||
"0 45 Seed Pokémon 49 1059860 0.7 ... \n",
|
||
"1 45 Seed Pokémon 63 1059860 1.0 ... \n",
|
||
"2 45 Seed Pokémon 123 1059860 2.0 ... \n",
|
||
"3 45 Lizard Pokémon 43 1059860 0.6 ... \n",
|
||
"4 45 Flame Pokémon 58 1059860 1.1 ... \n",
|
||
"\n",
|
||
" percentage_male pokedex_number sp_attack sp_defense speed type1 \\\n",
|
||
"0 88.1 1 65 65 45 grass \n",
|
||
"1 88.1 2 80 80 60 grass \n",
|
||
"2 88.1 3 122 120 80 grass \n",
|
||
"3 88.1 4 60 50 65 fire \n",
|
||
"4 88.1 5 80 65 80 fire \n",
|
||
"\n",
|
||
" type2 weight_kg generation is_legendary \n",
|
||
"0 poison 6.9 1 0 \n",
|
||
"1 poison 13.0 1 0 \n",
|
||
"2 poison 100.0 1 0 \n",
|
||
"3 NaN 8.5 1 0 \n",
|
||
"4 NaN 19.0 1 0 \n",
|
||
"\n",
|
||
"[5 rows x 21 columns]"
|
||
]
|
||
},
|
||
"execution_count": 8,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"column_to_move = df['name']\n",
|
||
"df.drop('name', axis=1, inplace=True)\n",
|
||
"df.insert(0, 'name', column_to_move)\n",
|
||
"df.head()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 9,
|
||
"id": "c86f35a3",
|
||
"metadata": {
|
||
"scrolled": false
|
||
},
|
||
"outputs": [
|
||
{
|
||
"name": "stdout",
|
||
"output_type": "stream",
|
||
"text": [
|
||
"<class 'pandas.core.frame.DataFrame'>\n",
|
||
"RangeIndex: 801 entries, 0 to 800\n",
|
||
"Data columns (total 21 columns):\n",
|
||
" # Column Non-Null Count Dtype \n",
|
||
"--- ------ -------------- ----- \n",
|
||
" 0 name 801 non-null object \n",
|
||
" 1 attack 801 non-null int64 \n",
|
||
" 2 base_egg_steps 801 non-null int64 \n",
|
||
" 3 base_happiness 801 non-null int64 \n",
|
||
" 4 base_total 801 non-null int64 \n",
|
||
" 5 capture_rate 801 non-null object \n",
|
||
" 6 classfication 801 non-null object \n",
|
||
" 7 defense 801 non-null int64 \n",
|
||
" 8 experience_growth 801 non-null int64 \n",
|
||
" 9 height_m 781 non-null float64\n",
|
||
" 10 hp 801 non-null int64 \n",
|
||
" 11 percentage_male 703 non-null float64\n",
|
||
" 12 pokedex_number 801 non-null int64 \n",
|
||
" 13 sp_attack 801 non-null int64 \n",
|
||
" 14 sp_defense 801 non-null int64 \n",
|
||
" 15 speed 801 non-null int64 \n",
|
||
" 16 type1 801 non-null object \n",
|
||
" 17 type2 417 non-null object \n",
|
||
" 18 weight_kg 781 non-null float64\n",
|
||
" 19 generation 801 non-null int64 \n",
|
||
" 20 is_legendary 801 non-null int64 \n",
|
||
"dtypes: float64(3), int64(13), object(5)\n",
|
||
"memory usage: 131.5+ KB\n"
|
||
]
|
||
}
|
||
],
|
||
"source": [
|
||
"# 再次检测缺失值\n",
|
||
"df.info()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 10,
|
||
"id": "b7db1043",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"is_legendary 1.000000\n",
|
||
"base_egg_steps 0.873488\n",
|
||
"base_total 0.485440\n",
|
||
"sp_attack 0.406281\n",
|
||
"weight_kg 0.393023\n",
|
||
"experience_growth 0.361038\n",
|
||
"sp_defense 0.343241\n",
|
||
"height_m 0.322155\n",
|
||
"speed 0.311639\n",
|
||
"hp 0.308405\n",
|
||
"attack 0.303295\n",
|
||
"defense 0.265587\n",
|
||
"pokedex_number 0.196785\n",
|
||
"generation 0.139029\n",
|
||
"percentage_male 0.045222\n",
|
||
"base_happiness -0.413108\n",
|
||
"Name: is_legendary, dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 10,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df.corr()['is_legendary'].sort_values(ascending=False)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 11,
|
||
"id": "13f0feb0",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"image/png": "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uS644AK9/vrr6tWrl66//noZhqHjx4/r/vvvV0REhCIjI/Wf//mfzfo9OHbsmH7zm9/oggsuUO/evbVs2bJmnYdWZgAW2LRpk9G1a1dj2LBhxmeffWa8+OKLRlBQkPH1118b5557rvH0008bX375pTFq1Cjj3nvvrXdur169fMbq6uqMCy+80Fi8eLGxadMm45xzzjG2b99uuN1u48knnzQiIyONu+66y9ixY4dx5513Gtdee61hGIbhdruNyspKQ5JRWFhoVFZWGkePHj1j/ZKMX//618bs2bONzp07Gx9++KHRr18/4y9/+UurfY8AdCx33nmnMXfuXCMjI8O45pprjIKCAmPMmDFGVlZWm+iLCxcuNK677jrj8OHDxlVXXWU899xz3rnKykqja9euxqZNm4zFixcbPXv2NL755hujpqbmx3/jAAS0hQsXGpKMjIwMY+fOncYtt9xi3HLLLUZlZWWTve26664zEhISjMTERGPdunVGRUWFYRiGsWvXLiMkJMRYuHChUV5ebtxxxx3GmDFjDMMwjC+++MIICgoyFixYYHzxxRfGFVdcYTz77LOGYRgt7nv/+te/DLvdbrz//vtGeXm5MWzYMCMzM9MwjKZ7W25urhEeHm58/PHHxscff2x07drV2LJlS5Pfq02bNhmSjJUrVxojRowwLrnkEuPjjz82JBm7d+82Xn75ZeOiiy4ytm/fbvzrX/8yunXrZuTn5/tc45577jGefPJJn7FnnnnG6NOnj/HZZ58Za9asMZxOp7Fz586W/YaixVjxhmUOHTqkuXPnatCgQZo2bZqOHj2q9evXq3PnznriiSd00UUX6ZFHHvH5F87GVFRU6Ouvv9Ztt92m66+/XqGhoTpw4IBCQ0MlSXa7XdnZ2erTp48mTZrkXZkODQ1VWFiYJKlbt24KCwtT586dm1X/vffeq0svvVRXXnmlrr32WkVFRenYsWMt+2YA6PAGDx6s7du36/PPP1dSUpI+//xzlZaWyu12t5m+WFdXpzvvvFMHDx7UY4895h3fvn27QkNDdf311+s//uM/tG/fPhmGoeDg4LP8LgFoi6Kjo/Xoo48qNjZWTz31lNauXat33333jL3t0KFDWrVqlW688Ub16NFDkrRkyRKNGDFCkyZNUnR0tP74xz9qypQpkk6sPg8ePFi/+MUv1LdvX02bNs3nmi3pexdffLH27t2r+Ph4lZSUyDAMbd++XVLTvW3RokW67777NGzYMA0bNkxJSUnN6t09e/bU2LFjFRsbq7Fjx2rYsGGSTqxa33333frss88UEhKikpISOZ1Oby1NWbRokVJTUzVo0CAlJydr8ODBysvLO+N5aF0B+XA1dAzh4eG6/PLLJUlBQUGSpL1796qiokLh4eGSTvwQV1VVpSNHjjT5A9q5556rsLAw/fd//7eio6PlcrnUr18/7/ywYcO85wcFBclohU/RO3U9fnAE0BoGDx6szZs36+jRo5oyZYry8vK0Z88eBQcHt5m++I9//EOJiYkKCQnR6tWrNWbMGElSr169VFlZqR07dmj37t2KiIhQz549f/T9ALQN0dHR3pdyR0VFqba2Vnv27Dljb5s2bVq9f/jbvXu3z1troqOjFR0dLUnas2eP/vd//9cboo8fP66uXbt6j21J36upqdGUKVO0efNmDR48WA6HQ7W1tZKa7m179uzRxx9/rHnz5kmSjhw5opSUlDPe7/t9/Yc9fteuXZo0aZL27t2rYcOGqWvXrt5amrJnzx79+te/1uzZsyVJ1dXVuu666854HloXwRuWaehBQMePH9dVV13lfV+NYRhyuVxnXG2pq6vTkCFDdPPNN+v48ePKzMxUZGRkk/f6PpvN1io/dAJASw0ePFglJSWKjY3VJZdcohkzZqhfv36Kjo5uM32xb9++WrZsmdauXau0tDQlJSXJbrcrODhY/fv318CBA2W327Vw4UJ16sSL7oCO4quvvlJdXZ06deqkr776Sg6Ho1m97Zxzzql3rZiYGG3evNm7v337dt1+++369NNPFR0drVtuuUXPP/+8JKm2tlbV1dXeY1vS91588UVVVFRo3759CgoK0m9+8xvt379fkprsbdHR0br33ns1fvx4SZLH4/EuNLXUjBkzdMMNN+gPf/iDJOnqq69u1nnR0dF69tlnlZCQIOnEPybwQE7/4/96CCiJiYn68ssv9T//8z+y2+1aunSpRo8efcYf/rZs2aJvv/1WBQUF+uqrr/TII4+c1X379euntWvXas+ePfrwww9/zJcAAC1y7rnn6tixY+rRo4ciIyO1Y8cOXXnllW2qL0ZFRalLly669dZb5XQ6vQ9XW7FihaKiorR161aVl5frtttuO6taALRtX3/9tTIyMrRr1y4988wzGjNmTIt725133qktW7YoJydH5eXleu6553TeeeepU6dO3rnS0lJJJ0Lz5MmTm11nQ33v0KFDMgxDBw4c0JIlSzR37lxvjU31tnvuuUdvvfWWqqqqVF1drfvuu0+vvvrq2X7rfBw6dEjHjh3T7t279dvf/laffPJJs/6B9J577lFOTo6OHTumgwcPaty4cVq1atWPqgVnj+CNgBIWFqY1a9bohRdeUP/+/bVq1SqtWbNGDkfTL864+uqrVVFRoZ/85Ce64IIL1K1bNz3zzDPNvu+8efM0Z84c9evXT6+//vqP/TIAoEUGDx6sSy65RNKJHwCvvPLKNtkXbTabnn76aT311FOqqanRDTfcoI8++kjDhw9Xjx491KNHD73xxhtndU0AbVdCQoK2bt2qK664QkePHtUrr7zS4t7Wu3dvrV69WllZWRo4cKC+++477z/y9enTR4sWLdLMmTM1cOBAFRUV6a233mp2nQ31vRkzZsgwDF1yySVauHCh7r33Xm3btk2SmuxtEydO1O23367ExEQNHz5csbGxZ9WDG5KZmanVq1crLi5Oe/fu1Q033KCtW7ee8bxHH31Ul112ma699lqNHj1aiYmJuv/++39ULTh7NoPX16IdeOKJJ7R792797ne/U1BQkN5//3396le/0sGDB60uDQAsEUh98a677lKvXr00ffp02Ww25ebm6q233tKnn37q91oA+FdOTo5ycnL0wQcfWF1Kq6O34Wyw4o12ISUlRSUlJbrkkksUHR2tjIwM78MsWuIf//iHwsLCGtxmzpzZipUDgDkCqS9OnDhR77zzjmJjY9W7d28tX75cL7zwQotrAYBA0JLelpmZ2WgvXblypZ8qhxVY8QYacOTIEe3du7fBudDQUJ177rl+rggArEVfBIAf77vvvtN3333X4FxkZGSDD5RD+0DwBgAAAADARLzUHAAAAAAAExG8AQAAAAAwEcEbAAAAAAATEbwBAAAAADARwRsAAAAAABMRvAEAAAAAMBHBGwAAAAAAExG8AQAAAAAw0f8H5IK/rSx78xYAAAAASUVORK5CYII=\n",
|
||
"text/plain": [
|
||
"<Figure size 1000x500 with 3 Axes>"
|
||
]
|
||
},
|
||
"metadata": {},
|
||
"output_type": "display_data"
|
||
}
|
||
],
|
||
"source": [
|
||
"# 体重、身高和男性比例有缺失值,观察总体分布看能否填充\n",
|
||
"fig, axes = plt.subplots(1, 3, figsize=(10, 5))\n",
|
||
"columns_to_plot = ['height_m', 'weight_kg', 'percentage_male']\n",
|
||
"for i, column in enumerate(columns_to_plot):\n",
|
||
" ax = axes[i] \n",
|
||
" ax.tick_params(axis='x', which='both', bottom=False, top=False, labelbottom=False)\n",
|
||
" sns.countplot(x=column, data=df, ax=ax) \n",
|
||
" ax.set_xlabel(column) \n",
|
||
"plt.tight_layout() "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 12,
|
||
"id": "dad019aa",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"name 0\n",
|
||
"attack 0\n",
|
||
"base_egg_steps 0\n",
|
||
"base_happiness 0\n",
|
||
"base_total 0\n",
|
||
"capture_rate 0\n",
|
||
"classfication 0\n",
|
||
"defense 0\n",
|
||
"experience_growth 0\n",
|
||
"height_m 0\n",
|
||
"hp 0\n",
|
||
"percentage_male 0\n",
|
||
"pokedex_number 0\n",
|
||
"sp_attack 0\n",
|
||
"sp_defense 0\n",
|
||
"speed 0\n",
|
||
"type1 0\n",
|
||
"type2 384\n",
|
||
"weight_kg 0\n",
|
||
"generation 0\n",
|
||
"is_legendary 0\n",
|
||
"dtype: int64"
|
||
]
|
||
},
|
||
"execution_count": 12,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# 用中位数填充缺失值\n",
|
||
"df[['height_m','weight_kg', 'percentage_male']] = df[['height_m','weight_kg', 'percentage_male']].fillna(df[['height_m','weight_kg', 'percentage_male']].median())\n",
|
||
"df.isnull().sum()"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 13,
|
||
"id": "fb7a0102",
|
||
"metadata": {
|
||
"scrolled": true
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/html": [
|
||
"<div>\n",
|
||
"<style scoped>\n",
|
||
" .dataframe tbody tr th:only-of-type {\n",
|
||
" vertical-align: middle;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe tbody tr th {\n",
|
||
" vertical-align: top;\n",
|
||
" }\n",
|
||
"\n",
|
||
" .dataframe thead th {\n",
|
||
" text-align: right;\n",
|
||
" }\n",
|
||
"</style>\n",
|
||
"<table border=\"1\" class=\"dataframe\">\n",
|
||
" <thead>\n",
|
||
" <tr style=\"text-align: right;\">\n",
|
||
" <th></th>\n",
|
||
" <th>name</th>\n",
|
||
" <th>attack</th>\n",
|
||
" <th>base_egg_steps</th>\n",
|
||
" <th>base_happiness</th>\n",
|
||
" <th>base_total</th>\n",
|
||
" <th>capture_rate</th>\n",
|
||
" <th>classification</th>\n",
|
||
" <th>defense</th>\n",
|
||
" <th>experience_growth</th>\n",
|
||
" <th>height_m</th>\n",
|
||
" <th>...</th>\n",
|
||
" <th>percentage_male</th>\n",
|
||
" <th>pokedex_number</th>\n",
|
||
" <th>sp_attack</th>\n",
|
||
" <th>sp_defense</th>\n",
|
||
" <th>speed</th>\n",
|
||
" <th>type1</th>\n",
|
||
" <th>type2</th>\n",
|
||
" <th>weight_kg</th>\n",
|
||
" <th>generation</th>\n",
|
||
" <th>is_legendary</th>\n",
|
||
" </tr>\n",
|
||
" </thead>\n",
|
||
" <tbody>\n",
|
||
" <tr>\n",
|
||
" <th>0</th>\n",
|
||
" <td>Bulbasaur</td>\n",
|
||
" <td>49</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>318</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Seed Pokémon</td>\n",
|
||
" <td>49</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>0.7</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>poison</td>\n",
|
||
" <td>6.9</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>1</th>\n",
|
||
" <td>Ivysaur</td>\n",
|
||
" <td>62</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>405</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Seed Pokémon</td>\n",
|
||
" <td>63</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>2</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>poison</td>\n",
|
||
" <td>13.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>2</th>\n",
|
||
" <td>Venusaur</td>\n",
|
||
" <td>100</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>625</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Seed Pokémon</td>\n",
|
||
" <td>123</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>2.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>122</td>\n",
|
||
" <td>120</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>poison</td>\n",
|
||
" <td>100.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>3</th>\n",
|
||
" <td>Charmander</td>\n",
|
||
" <td>52</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>309</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Lizard Pokémon</td>\n",
|
||
" <td>43</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>0.6</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>4</td>\n",
|
||
" <td>60</td>\n",
|
||
" <td>50</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>fire</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>8.5</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>4</th>\n",
|
||
" <td>Charmeleon</td>\n",
|
||
" <td>64</td>\n",
|
||
" <td>5120</td>\n",
|
||
" <td>70</td>\n",
|
||
" <td>405</td>\n",
|
||
" <td>45</td>\n",
|
||
" <td>Flame Pokémon</td>\n",
|
||
" <td>58</td>\n",
|
||
" <td>1059860</td>\n",
|
||
" <td>1.1</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>88.1</td>\n",
|
||
" <td>5</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>80</td>\n",
|
||
" <td>fire</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>19.0</td>\n",
|
||
" <td>1</td>\n",
|
||
" <td>0</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>...</th>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>...</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>796</th>\n",
|
||
" <td>Celesteela</td>\n",
|
||
" <td>101</td>\n",
|
||
" <td>30720</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>570</td>\n",
|
||
" <td>25</td>\n",
|
||
" <td>Launch Pokémon</td>\n",
|
||
" <td>103</td>\n",
|
||
" <td>1250000</td>\n",
|
||
" <td>9.2</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>50.0</td>\n",
|
||
" <td>797</td>\n",
|
||
" <td>107</td>\n",
|
||
" <td>101</td>\n",
|
||
" <td>61</td>\n",
|
||
" <td>steel</td>\n",
|
||
" <td>flying</td>\n",
|
||
" <td>999.9</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>797</th>\n",
|
||
" <td>Kartana</td>\n",
|
||
" <td>181</td>\n",
|
||
" <td>30720</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>570</td>\n",
|
||
" <td>255</td>\n",
|
||
" <td>Drawn Sword Pokémon</td>\n",
|
||
" <td>131</td>\n",
|
||
" <td>1250000</td>\n",
|
||
" <td>0.3</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>50.0</td>\n",
|
||
" <td>798</td>\n",
|
||
" <td>59</td>\n",
|
||
" <td>31</td>\n",
|
||
" <td>109</td>\n",
|
||
" <td>grass</td>\n",
|
||
" <td>steel</td>\n",
|
||
" <td>0.1</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>798</th>\n",
|
||
" <td>Guzzlord</td>\n",
|
||
" <td>101</td>\n",
|
||
" <td>30720</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>570</td>\n",
|
||
" <td>15</td>\n",
|
||
" <td>Junkivore Pokémon</td>\n",
|
||
" <td>53</td>\n",
|
||
" <td>1250000</td>\n",
|
||
" <td>5.5</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>50.0</td>\n",
|
||
" <td>799</td>\n",
|
||
" <td>97</td>\n",
|
||
" <td>53</td>\n",
|
||
" <td>43</td>\n",
|
||
" <td>dark</td>\n",
|
||
" <td>dragon</td>\n",
|
||
" <td>888.0</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>799</th>\n",
|
||
" <td>Necrozma</td>\n",
|
||
" <td>107</td>\n",
|
||
" <td>30720</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>600</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>Prism Pokémon</td>\n",
|
||
" <td>101</td>\n",
|
||
" <td>1250000</td>\n",
|
||
" <td>2.4</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>50.0</td>\n",
|
||
" <td>800</td>\n",
|
||
" <td>127</td>\n",
|
||
" <td>89</td>\n",
|
||
" <td>79</td>\n",
|
||
" <td>psychic</td>\n",
|
||
" <td>NaN</td>\n",
|
||
" <td>230.0</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" <tr>\n",
|
||
" <th>800</th>\n",
|
||
" <td>Magearna</td>\n",
|
||
" <td>95</td>\n",
|
||
" <td>30720</td>\n",
|
||
" <td>0</td>\n",
|
||
" <td>600</td>\n",
|
||
" <td>3</td>\n",
|
||
" <td>Artificial Pokémon</td>\n",
|
||
" <td>115</td>\n",
|
||
" <td>1250000</td>\n",
|
||
" <td>1.0</td>\n",
|
||
" <td>...</td>\n",
|
||
" <td>50.0</td>\n",
|
||
" <td>801</td>\n",
|
||
" <td>130</td>\n",
|
||
" <td>115</td>\n",
|
||
" <td>65</td>\n",
|
||
" <td>steel</td>\n",
|
||
" <td>fairy</td>\n",
|
||
" <td>80.5</td>\n",
|
||
" <td>7</td>\n",
|
||
" <td>1</td>\n",
|
||
" </tr>\n",
|
||
" </tbody>\n",
|
||
"</table>\n",
|
||
"<p>801 rows × 21 columns</p>\n",
|
||
"</div>"
|
||
],
|
||
"text/plain": [
|
||
" name attack base_egg_steps base_happiness base_total \\\n",
|
||
"0 Bulbasaur 49 5120 70 318 \n",
|
||
"1 Ivysaur 62 5120 70 405 \n",
|
||
"2 Venusaur 100 5120 70 625 \n",
|
||
"3 Charmander 52 5120 70 309 \n",
|
||
"4 Charmeleon 64 5120 70 405 \n",
|
||
".. ... ... ... ... ... \n",
|
||
"796 Celesteela 101 30720 0 570 \n",
|
||
"797 Kartana 181 30720 0 570 \n",
|
||
"798 Guzzlord 101 30720 0 570 \n",
|
||
"799 Necrozma 107 30720 0 600 \n",
|
||
"800 Magearna 95 30720 0 600 \n",
|
||
"\n",
|
||
" capture_rate classification defense experience_growth height_m \\\n",
|
||
"0 45 Seed Pokémon 49 1059860 0.7 \n",
|
||
"1 45 Seed Pokémon 63 1059860 1.0 \n",
|
||
"2 45 Seed Pokémon 123 1059860 2.0 \n",
|
||
"3 45 Lizard Pokémon 43 1059860 0.6 \n",
|
||
"4 45 Flame Pokémon 58 1059860 1.1 \n",
|
||
".. ... ... ... ... ... \n",
|
||
"796 25 Launch Pokémon 103 1250000 9.2 \n",
|
||
"797 255 Drawn Sword Pokémon 131 1250000 0.3 \n",
|
||
"798 15 Junkivore Pokémon 53 1250000 5.5 \n",
|
||
"799 3 Prism Pokémon 101 1250000 2.4 \n",
|
||
"800 3 Artificial Pokémon 115 1250000 1.0 \n",
|
||
"\n",
|
||
" ... percentage_male pokedex_number sp_attack sp_defense speed \\\n",
|
||
"0 ... 88.1 1 65 65 45 \n",
|
||
"1 ... 88.1 2 80 80 60 \n",
|
||
"2 ... 88.1 3 122 120 80 \n",
|
||
"3 ... 88.1 4 60 50 65 \n",
|
||
"4 ... 88.1 5 80 65 80 \n",
|
||
".. ... ... ... ... ... ... \n",
|
||
"796 ... 50.0 797 107 101 61 \n",
|
||
"797 ... 50.0 798 59 31 109 \n",
|
||
"798 ... 50.0 799 97 53 43 \n",
|
||
"799 ... 50.0 800 127 89 79 \n",
|
||
"800 ... 50.0 801 130 115 65 \n",
|
||
"\n",
|
||
" type1 type2 weight_kg generation is_legendary \n",
|
||
"0 grass poison 6.9 1 0 \n",
|
||
"1 grass poison 13.0 1 0 \n",
|
||
"2 grass poison 100.0 1 0 \n",
|
||
"3 fire NaN 8.5 1 0 \n",
|
||
"4 fire NaN 19.0 1 0 \n",
|
||
".. ... ... ... ... ... \n",
|
||
"796 steel flying 999.9 7 1 \n",
|
||
"797 grass steel 0.1 7 1 \n",
|
||
"798 dark dragon 888.0 7 1 \n",
|
||
"799 psychic NaN 230.0 7 1 \n",
|
||
"800 steel fairy 80.5 7 1 \n",
|
||
"\n",
|
||
"[801 rows x 21 columns]"
|
||
]
|
||
},
|
||
"execution_count": 13,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"df = df.rename(columns={'classfication': 'classification'})\n",
|
||
"df"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 14,
|
||
"id": "31621c98",
|
||
"metadata": {},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"name Nidoran♀\n",
|
||
"attack 47\n",
|
||
"base_egg_steps 5120\n",
|
||
"base_happiness 70\n",
|
||
"base_total 275\n",
|
||
"capture_rate 235\n",
|
||
"classification Poison Pin Pokémon\n",
|
||
"defense 52\n",
|
||
"experience_growth 1059860\n",
|
||
"height_m 0.4\n",
|
||
"hp 55\n",
|
||
"percentage_male 0.0\n",
|
||
"pokedex_number 29\n",
|
||
"sp_attack 40\n",
|
||
"sp_defense 40\n",
|
||
"speed 41\n",
|
||
"type1 poison\n",
|
||
"type2 NaN\n",
|
||
"weight_kg 7.0\n",
|
||
"generation 1\n",
|
||
"is_legendary 0\n",
|
||
"Name: 28, dtype: object"
|
||
]
|
||
},
|
||
"execution_count": 14,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"row_label = df.iloc[28]\n",
|
||
"row_label"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 15,
|
||
"id": "f4136c25",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"rows_to_drop = [28, 31, 771, 773]\n",
|
||
"df = df.drop(rows_to_drop, axis=0)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 16,
|
||
"id": "42b158e3",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": [
|
||
"# 获得清洗后的数据集\n",
|
||
"df.to_csv('pokemon_cleaned.csv', index=False) "
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": 17,
|
||
"id": "169e75c0",
|
||
"metadata": {
|
||
"scrolled": false
|
||
},
|
||
"outputs": [
|
||
{
|
||
"data": {
|
||
"text/plain": [
|
||
"is_legendary 1.000000\n",
|
||
"base_egg_steps 0.882049\n",
|
||
"base_total 0.486499\n",
|
||
"sp_attack 0.407070\n",
|
||
"weight_kg 0.390628\n",
|
||
"experience_growth 0.361969\n",
|
||
"sp_defense 0.343366\n",
|
||
"height_m 0.320015\n",
|
||
"speed 0.312677\n",
|
||
"hp 0.308594\n",
|
||
"attack 0.303616\n",
|
||
"defense 0.265465\n",
|
||
"pokedex_number 0.198117\n",
|
||
"generation 0.140170\n",
|
||
"percentage_male -0.051146\n",
|
||
"base_happiness -0.417184\n",
|
||
"Name: is_legendary, dtype: float64"
|
||
]
|
||
},
|
||
"execution_count": 17,
|
||
"metadata": {},
|
||
"output_type": "execute_result"
|
||
}
|
||
],
|
||
"source": [
|
||
"# 再次检测变量之间相关性\n",
|
||
"df.corr()['is_legendary'].sort_values(ascending=False)"
|
||
]
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "fd6d2754",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
},
|
||
{
|
||
"cell_type": "code",
|
||
"execution_count": null,
|
||
"id": "11d09bd3",
|
||
"metadata": {},
|
||
"outputs": [],
|
||
"source": []
|
||
}
|
||
],
|
||
"metadata": {
|
||
"kernelspec": {
|
||
"display_name": "Python 3 (ipykernel)",
|
||
"language": "python",
|
||
"name": "python3"
|
||
},
|
||
"language_info": {
|
||
"codemirror_mode": {
|
||
"name": "ipython",
|
||
"version": 3
|
||
},
|
||
"file_extension": ".py",
|
||
"mimetype": "text/x-python",
|
||
"name": "python",
|
||
"nbconvert_exporter": "python",
|
||
"pygments_lexer": "ipython3",
|
||
"version": "3.9.13"
|
||
}
|
||
},
|
||
"nbformat": 4,
|
||
"nbformat_minor": 5
|
||
}
|