coal_materials/.ipynb_checkpoints/20240123_煤炭-checkpoint.ipynb

550 lines
392 KiB
Plaintext
Raw Normal View History

2024-06-18 10:19:35 +08:00
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"id": "a3901bba-d66d-4358-89a7-50dc4b3dd91e",
"metadata": {},
"outputs": [],
"source": [
"import pandas as pd"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "a4713d33-c5a2-4f49-8aed-873069543bec",
"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>灰分(d)</th>\n",
" <th>挥发分(daf</th>\n",
" <th>活化剂种类</th>\n",
" <th>活化剂比例</th>\n",
" <th>混合方式</th>\n",
" <th>活化温度</th>\n",
" <th>活化时间</th>\n",
" <th>升温速率</th>\n",
" <th>比表面积</th>\n",
" <th>总孔体积</th>\n",
" <th>微孔体积</th>\n",
" <th>Unnamed: 11</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>11.25</td>\n",
" <td>17.06</td>\n",
" <td>KOH</td>\n",
" <td>3.0</td>\n",
" <td>研磨</td>\n",
" <td>800</td>\n",
" <td>1.0</td>\n",
" <td>5.0</td>\n",
" <td>2784.0</td>\n",
" <td>1.0830</td>\n",
" <td>0.853</td>\n",
" <td>刘宇昊\\n煤基活性炭的制备及其电化学性能研究 学位论文</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>8.53</td>\n",
" <td>13.46</td>\n",
" <td>KOH</td>\n",
" <td>3.0</td>\n",
" <td>研磨</td>\n",
" <td>800</td>\n",
" <td>1.0</td>\n",
" <td>5.0</td>\n",
" <td>2934.0</td>\n",
" <td>1.2290</td>\n",
" <td>1.074</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>18.08</td>\n",
" <td>13.85</td>\n",
" <td>KOH</td>\n",
" <td>3.0</td>\n",
" <td>研磨</td>\n",
" <td>800</td>\n",
" <td>1.0</td>\n",
" <td>5.0</td>\n",
" <td>3059.0</td>\n",
" <td>1.3044</td>\n",
" <td>1.011</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>11.42</td>\n",
" <td>12.31</td>\n",
" <td>KOH</td>\n",
" <td>3.0</td>\n",
" <td>研磨</td>\n",
" <td>800</td>\n",
" <td>1.0</td>\n",
" <td>5.0</td>\n",
" <td>2365.0</td>\n",
" <td>0.8030</td>\n",
" <td>0.605</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>11.60</td>\n",
" <td>8.49</td>\n",
" <td>KOH</td>\n",
" <td>3.0</td>\n",
" <td>研磨</td>\n",
" <td>800</td>\n",
" <td>1.0</td>\n",
" <td>5.0</td>\n",
" <td>2988.0</td>\n",
" <td>1.2820</td>\n",
" <td>0.944</td>\n",
" <td>NaN</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 灰分(d) 挥发分(daf 活化剂种类 活化剂比例 混合方式 活化温度 活化时间 升温速率 比表面积 总孔体积 微孔体积 \\\n",
"0 11.25 17.06 KOH 3.0 研磨 800 1.0 5.0 2784.0 1.0830 0.853 \n",
"1 8.53 13.46 KOH 3.0 研磨 800 1.0 5.0 2934.0 1.2290 1.074 \n",
"2 18.08 13.85 KOH 3.0 研磨 800 1.0 5.0 3059.0 1.3044 1.011 \n",
"3 11.42 12.31 KOH 3.0 研磨 800 1.0 5.0 2365.0 0.8030 0.605 \n",
"4 11.60 8.49 KOH 3.0 研磨 800 1.0 5.0 2988.0 1.2820 0.944 \n",
"\n",
" Unnamed: 11 \n",
"0 刘宇昊\\n煤基活性炭的制备及其电化学性能研究 学位论文 \n",
"1 NaN \n",
"2 NaN \n",
"3 NaN \n",
"4 NaN "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = pd.read_excel('./data/20240123/煤炭数据.xlsx', header=[1])\n",
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "b1a0903a-596f-4d6f-98b1-a668a26f4175",
"metadata": {},
"outputs": [],
"source": [
"data.drop(columns=data.columns[-1], inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "359c9cc6-2694-46a6-9f18-6361e220542a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['灰分(d)', '挥发分(daf', '活化剂种类', '活化剂比例', '混合方式', '活化温度', '活化时间', '升温速率',\n",
" '比表面积', '总孔体积', '微孔体积'],\n",
" dtype='object')"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.columns"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "24f58281-9f13-49ef-b44d-81d0644d6976",
"metadata": {},
"outputs": [],
"source": [
"object_cols = ['活化剂种类', '混合方式']"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "3368163e-85a1-4487-8078-be51cb5fb560",
"metadata": {},
"outputs": [],
"source": [
"data = pd.get_dummies(data, columns=object_cols)"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "92d5da6b-f714-4a78-9aa7-7cf9dff1d0a0",
"metadata": {},
"outputs": [],
"source": [
"out_cols = ['比表面积', '总孔体积', '微孔体积']\n",
"feature_cols = [x for x in data.columns if x not in out_cols]"
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "e4946bd7-ae94-4981-82ed-66e2b496e035",
"metadata": {},
"outputs": [],
"source": [
"train_data = data.reset_index(drop=True)"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "e545ccba-07b2-4c49-bd48-f49b3892fafc",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(174, 12)"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data.shape"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "4109685a-4d5b-4c63-b4e2-eb9db3989d02",
"metadata": {},
"outputs": [],
"source": [
"import xgboost as xgb\n",
"from sklearn.metrics import mean_absolute_error, mean_squared_error, mean_absolute_percentage_error, r2_score"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "2bbdcd34-16c1-43ba-b249-6c7d54db8ac2",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import KFold, train_test_split\n",
"kf = KFold(n_splits=6, shuffle=True, random_state=42)"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "42597842-1acb-4263-bdad-bfca7b11bcb5",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "94af2a3a-6f61-46bf-8cd4-2b7e0da8b2c4",
"metadata": {},
"outputs": [],
"source": [
"params_xgb = {\"objective\": 'reg:squarederror',\n",
" \"subsample\": 0.8,\n",
" \"max_depth\": 20,\n",
" \"eta\": 0.01,\n",
" \"colsample_bytree\": 0.9,}\n",
"num_boost_round = 1000"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "f17eadb3-4767-4eca-bbed-880bf9cbb7a3",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "5bfcc8aa-f13c-4a7d-9d15-b79087e11017",
"metadata": {},
"outputs": [],
"source": [
"plt.rcParams[\"font.sans-serif\"] = [\"SimHei\"] # 设置字体\n",
"plt.rcParams[\"axes.unicode_minus\"] = False # 正常显示负号"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "db4dbc2d-534e-4a7e-b45c-ea25ab269502",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"MSE: 159642.0815, RMSE: 399.5524, MAE: 274.5969, MAPE: 24.34 %, R_2: 0.7942\n",
"MSE: 193553.7041, RMSE: 439.9474, MAE: 328.694, MAPE: 35.35 %, R_2: 0.814\n",
"MSE: 220477.246, RMSE: 469.55, MAE: 306.6159, MAPE: 22.42 %, R_2: 0.7381\n",
"MSE: 290738.4856, RMSE: 539.2017, MAE: 385.6497, MAPE: 63.87 %, R_2: 0.6771\n",
"MSE: 198924.8773, RMSE: 446.01, MAE: 301.0048, MAPE: 31.69 %, R_2: 0.5602\n",
"MSE: 129420.5336, RMSE: 359.7507, MAE: 268.3835, MAPE: 38.83 %, R_2: 0.8213\n"
]
},
{
"data": {
"image/png": "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
"text/plain": [
"<Figure size 1200x800 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"MSE: 0.0829, RMSE: 0.2879, MAE: 0.193, MAPE: 55.19 %, R_2: 0.7327\n",
"MSE: 0.0702, RMSE: 0.2649, MAE: 0.1854, MAPE: 20.28 %, R_2: 0.8429\n",
"MSE: 0.0386, RMSE: 0.1964, MAE: 0.1393, MAPE: 19.43 %, R_2: 0.8072\n",
"MSE: 0.0497, RMSE: 0.2229, MAE: 0.1722, MAPE: 26.26 %, R_2: 0.8521\n",
"MSE: 0.0634, RMSE: 0.2519, MAE: 0.1608, MAPE: 37.87 %, R_2: 0.4996\n",
"MSE: 0.0488, RMSE: 0.2209, MAE: 0.1573, MAPE: 56.68 %, R_2: 0.8303\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9QAAAKoCAYAAACWQ7eKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeZhcdZ0v/vepfeuq6k6n052FpFnClgQMJKAjLogSlSAyAwIyLle8ijqOM+7zGweZ6wyO48zozFVGwBEUFBgcFy4aFwQFRQMCgRCyELJ3dzq91L7XOb8/vud7qqq7qrqqu6pOVfX79Tw83V1dyyG9nc/5bIqmaRqIiIiIiIiIqC4Wsw+AiIiIiIiIqBMxoCYiIiIiIiKaBwbURERERERERPPAgJqIiIiIiIhoHhhQExEREREREc0DA2oiIiIiIiKieWBATURERERERDQPDKiJiIiIiIiI5oEBNRERUQdLJBI4evQoNE0z+1CIiIgWHQbUREREJkskEvN+7I9//GOsWrUKyWSy6v1SqRR++9vfzrp9ZGQEX/nKV5DP5+t6XQbwREREDKiJiIhaQtM0XHnllbjrrrtKbs/n8zj11FPx9a9/fdZjMpkMnn32Wbz44ovYvXv3rP/GxsbgcrkAAE6ns+rrP/HEE3j1q1+Nxx9/vOT2o0eP4q/+6q+gKErVx+fzeezevRt33XUXrrvuOlxwwQVIp9MIhUJl/0ulUrX8sxAREXU0m9kHQEREtBgoioLXv/71eP/734+zzz4b559/PgDgsccew/j4ON7whjfMeszo6CguvPBCOJ3OkoA3Foshn8/jhhtuwOWXXw4AsFqtVV9/27ZtWL9+PV796leX3G6z2WCxWGCxlL/GHg6Hcf755+Pw4cPI5/NwOp348Ic/jKuuugojIyM4+eSTyz7uk5/8JL70pS9VPSYiIqJOxww1ERFRi/zFX/wF3va2t2Hv3r3GbXfffTeuuuoqnH766bPuv3r1aqRSKYTDYSPz+41vfAOKouCKK67AP/zDP8yZWQaAbDaLu+66C+985zsRCoUwOTlpPF88HoeiKCXZ5ampKYRCIQBAIBDAD3/4Qxw+fBg//OEPsXTpUnzpS1/C29/+dvT19QEADhw4AE3TjP/e8IY3GJlzIiKibsYMNRERUQs4nU5kMhkAwAMPPIB3vvOdJZ+/9957AQDPP/881q1bV/Y57rjjDnzoQx/CV77yFXz4wx+u+bV/8IMf4Pjx47jgggvwmc98Bt/4xjdm3ae3t7fk43e+8524++67kcvlcPLJJ8PhcBif0zQNuVyuah91pYw3ERFRN+FfOyIiohZwOp145JFHSjK5xf8dOXIEAEoC12Lbt2/H+9//ftx11111BdOapuGLX/yi8fFXv/pVIxj+q7/6K5xyyimwWq1YtWoVfve730HTNOTzeXzzm98EIIJ/j8cDm82GrVu34tChQ7BYLHA4HHjggQcW8C9CRETU+RhQExERtYDdbl/Q/SKRCADg7W9/OwAgl8vV9Hzf/va3cfDgQXi9XgAisLdardA0DQ888ADe9KY3AQAuu+wyfOc73wEgsstyyNmll16K559/Hvv27cMll1yCFStWYP/+/di9eze2bNlS0zEQERF1KwbURERELZDJZHDs2DG89NJLZf87ePAgANHvXM0jjzyCD37wgzj11FPnfM1cLocvfOEL+MIXvjCrp/nOO+9EOBzGVVddBQD4wAc+gDvvvBP79+8vuV9vby/WrVuHwcFB/O53v4PNZsPk5CROP/10eDyeiq891/8HERFRN2APNRERUQtkMhlcf/31Nd2v2KFDh/CrX/0K9913HwDgL//yL/Fnf/ZnuP/+++d8LpvNhoceeginnXYa/u7v/s64fWxsDH/zN3+Dj370o0bv9DnnnIO3v/3teO9734uf//znswLw//zP/0Qul0M8HsfFF1+Mr33ta0Z2e3h4eNZrv+IVr5jz+IiIiDqdolWbKEJEREQLlk6njaFkqVQKfr8f//7v/45rrrkGAwMDxv0mJibQ399vfPzAAw/gqquugs/nw3nnnYdf//rXSCaTJcHu//t//w9bt26tOiAMAPr7+/HAAw9g48aNeP3rXw9VVfHEE09g9+7dOP/885HL5TA9PY3zzz8fp556Ku69914j2J6ensYZZ5yBLVu24Ne//jVuvPFG/NM//ROee+65iqXngUBg1qAzIiKibsOSbyIioiY755xz8OCDD+K+++4z1mMdO3YMl156KaLRKABAVVW87nWvw1/91V8Zj/vTP/1T3HPPPRgZGcHf/u3fLvg4nn/+eWzatAkjIyP41re+BVVVoaqq8fmenh784Ac/wAsvvIANGzZgfHwcAPDXf/3X6O/vx5/+6Z8CEFnyG264Af39/XA6nfjqV7+K5cuXY82aNdixYwcsFguDaSIiWhQYUBMRETXRyy+/jL1792Ljxo1wOp1GdlnukJal2xaLBd/97nfxX//1X/j0pz8NAFAUBddddx16enoacix2ux0rVqzA448/jk984hPwer0477zzkM/noSgK7HY7nn76afz+97/HrbfeioGBAdx///2488478e///u/GKiyXy4UvfelLcLlc+Kd/+ifcfffdiEQiUFUVn/vc5/Dnf/7nJYE6ERFRt2JATURE1ETf//73cd5552HFihVwOBxGUGqz2fDII4/gfe97HwAxJMxms+G///u/8S//8i/46U9/WvI8c5V0y8/HYjFce+21eOGFF2bd54wzzsCvfvUrnHLKKfjud7+LkZERPPLII7BYLJiamsKJEydw9dVXY+XKlbjssssAAFdccQXuv/9+vOENb5j1fM8//zy+9rWv4atf/Sr6+/thsVjw7W9/G7/73e/w5S9/uf5/LCIiog7DgJqIiKhJNE3D7bffjquvvhqA2DE9PT1tlFIHAgEAwPj4OD71qU/hrrvuwpve9CY8/PDDJSuptm3bhu985zuw2+2z9lTLj7/3ve/hueeewxe/+EXce++9s6Z1zyzvHhgYwNDQELxeL1RVRTAYRH9//6zJ3Q6Hw5gEXhzUJ5NJvOtd78IVV1yB6667zrj93HPPxcc//nHcdNNN2LNnz/z+4YiIiDoEp3wTERE1iaIouO+++7BixQoAwNq1a2G1WrFs2bKS+1ksFpxzzjlG//RrX/vaks9/85vfxP/8z//gQx/6kJHhljZv3ox169bhne98JwCR+X7HO95hZJgll8uFfD4/6xjT6bTxduZk75lSqRRyuRyy2SyuvfZahEIh3HHHHbPu97nPfQ733HMPPvWpT+FHP/pR1eckIiLqZJzyTURE1OYOHz4Mj8dTMgHcDHfccQc+85nPYGJiAp/61Kdw5ZVX4sILLyx731/84hdYv349BgcHW3yURERErcOAmoiIiIiIiGge2ENNRERERERENA8MqImIiIiIiIjmgQE1ERERERER0TwwoCYiIiIiIiKah7Zfm6WqKkZGRtDT0wNFUcw+HCIiIiIiIupymqYhGo1i+fLls1ZWFmv7gHpkZASrVq0y+zCIiIiIiIhokTly5AhWrlxZ8fNtH1D39PQAEP8jfr/f5KMhIiIiIiKibheJRLBq1SojHq2k7QNqWebt9/sZUBMREREREVHLzNV2zKFkRERERERERPPAgJqIiIiIiIhoHhhQExEREREREc1D2/dQExERERERUW3y+Tyy2azZh9H27HY7rFbrgp+HATUREREREVGH0zQNY2NjCIVCZh9KxwgGgxgcHJxz8Fg1DKiJiIiIiIg6nAymBwYG4PF4FhQkdjtN05BIJDA+Pg4AGBoamvdzMaAmIiIiIiLqYPl83gimlyxZYvbhdAS32w0AGB8fx8DAwLzLvzmUjIiIiIiIqIPJnmmPx2PykXQW+e+1kJ5zBtRERERERERdgGXe9WnEv1fdAfXExASGh4dx8ODBuh73jne8A3/xF39R78sRERERERERtaW6eqgnJiZw2WWX1R1M/+QnP8Gjjz6KPXv21PU4IiIiIiIiao28qmH7gSmMR1MY6HFh83AfrJbOy3o/+uijeM973lN33DofdQXU11x
"text/plain": [
"<Figure size 1200x800 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"MSE: 0.0212, RMSE: 0.1456, MAE: 0.1027, MAPE: 19.78 %, R_2: 0.6947\n",
"MSE: 0.0632, RMSE: 0.2514, MAE: 0.1479, MAPE: 22.03 %, R_2: 0.6062\n",
"MSE: 0.0898, RMSE: 0.2997, MAE: 0.1758, MAPE: 27.82 %, R_2: 0.3597\n",
"MSE: 0.0234, RMSE: 0.153, MAE: 0.1014, MAPE: 21.71 %, R_2: 0.499\n",
"MSE: 0.0434, RMSE: 0.2083, MAE: 0.1318, MAPE: 46.08 %, R_2: 0.5236\n",
"MSE: 0.056, RMSE: 0.2366, MAE: 0.1601, MAPE: 23.9 %, R_2: 0.2317\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9QAAAKoCAYAAACWQ7eKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOy9ebwjdZ3u/1T2k+Tsp5tegQYVbJtdFh2XEZ1LqzQojrujzIhXUcfhN8K43FFkriPuyoxXFPCCinNBUVl0bMdBmEFsabWhoWlUbJvuhnOg15OTfav6/fGtb1UlJznZakvyvF+vfiUnyamqTk6Ser6f5/N8FE3TNBBCCCGEEEIIIaQjAl4fACGEEEIIIYQQ0o9QUBNCCCGEEEIIIV1AQU0IIYQQQgghhHQBBTUhhBBCCCGEENIFFNSEEEIIIYQQQkgXUFATQgghhBBCCCFdQEFNCCGEEEIIIYR0AQU1IYQQQgghhBDSBRTUhBBCSB+Ty+Xw5JNPQtM0rw+FEEIIGTooqAkhhBAXuPHGG1EsFgEAmqbh8ssvRz6fN+7fsmULLrvsMlQqlY62e+edd2Lt2rU122pEoVDA/fffv+j22dlZfPnLX0a1Wu1ovxTwhBBCCKBo/EYkhBBCHOVnP/sZNm3ahAceeAD5fB6nnXYaEokEUqkUHnvsMZx66qn4+te/jmuvvRY7duwwfq9UKmHnzp2IRqNQFGXRdicmJvCrX/0Kr33ta1GpVBAMBpsewz333INzzz0X9913H170ohcZt2/duhVnn302qtUqAoHm6+zVahWPP/44HnjgAfz0pz/FH//4R9x3331NhXwsFkMsFmvn6SGEEEL6lpDXB0AIIYQMMk8++STe/va34/Of/zxOOukkBINB7N27F+FwGKFQCBs3bsSf/vQnbNu2DX/2Z39W87tzc3M455xzFgnqTCaDarWKSy65BBdccAEALCmmAWDz5s046aSTasQ0AIRCIQQCgaZiOpVK4fnPfz727t2LarWKaDSK973vfXj961+P2dlZHHfccQ1/74orrsBnP/vZls8PIYQQ0s/Q8k0IIYQ4RKFQwHnnnYeXv/zleNe73oVAIIBwOIxoNIpAIIBgMIhwOIxwOIz7778fp5xyCgBAVVXkcjkcc8wxKBQKSKVSmJ+fx/z8PL7+9a9DURS85jWvwT//8z83rFzXUy6X8c1vfhNvfetbMT8/j0OHDhnby2azUBTF+Hl+fh6HDx/G/Pw8AGB8fBy333479u7di9tvvx3Lli3DZz/7Wbz2ta/F1NQUAGD37t3QNM349/KXv5zVaUIIIUMBBTUhhBDiELFYDJ/61Kdw3XXX4Utf+hI++clPolwu47777oOqqvj5z38OVVXx6KOP4ve//z0++tGPYmRkBLFYDOedd96i7d1www34q7/6K3z5y1/GD3/4Qyxfvryt4/jhD3+IZ555BmeffTY+/OEPY2ZmBpOTk5icnMRLXvISVKtV4+fJyUlMT0/j/e9/PwCgUqnguOOOw8zMjLE9TdNQLpeX7KNeyj5OCCGEDAr8tiOEEEIc5MILL0SxWMS3v/1tvPa1r8WNN96IdDqNa6+9FrOzs/jMZz6DH//4xzj33HMxPz+PT3ziE3j3u9+N++67r2Y7W7duxbve9S5885vfxPve9762969pGj796U8bP19zzTWoVCrQNA3/3//3/+H4449HMBjE2rVr8ctf/hKapqFareIb3/gGAOC2225DPB5HKBTCpk2bsGfPHgQCAUQiEdx22232PEmEEEJIn8IeakIIIcRh/v7v/x4veMELsGfPHlx++eVIJpMIBAIoFAp4xStegfvvv9+oAKfTaUxMTCzaxsLCAgDgta99LQBROQ6FWn+Nf+tb38ITTzyBRCIBAIhGowCE0L7ttttw/vnn47rrrsP555+Pb3/723jBC16AQCBgPO68887DI488glgshksvvRSPPfYY/vu//xvlctnYJiGEEDKssEJNCCGEOMhNN92Ef/u3fwMAvOpVr8LBgwfxxBNP4E9/+hNmZ2dx6aWXIpFI4PHHHwcAHDhwAOPj4023d8899+A973kPnvWsZ7Xcd6VSwSc/+Ul88pOfXNTTfNNNNyGVSuH1r389AODd7343brrpJuzatavmcZOTk9iwYQNWrFiBX/7ylwiFQjh06BBOOOEExOPxpvsul8stj48QQgjpdyioCSGEEIc4ePAg3v/+9+Od73xn08e84AUvwL333ouxsTE888wz2Lt3b01v9J49e3DjjTfi85//PADg7/7u7zA1NYXvfve7LfcfCoXw4x//GJdeemnN7U8//TQ++tGP4gMf+AAmJycBAKeccgpe+9rX4q//+q9RKBQWbetrX/saKpUKstkszj33XHzrW99CqVQCAKxbtw6Kohj/7r77buM+QgghZJCh5ZsQQghxiJmZGXz/+9/HY489ZsyX/tu//Vt85zvfweTkJPbt24dSqYSpqSkcd9xx2LZtGx588EF88YtfBCD6l1//+tcjmUzijDPOAAA8/PDDHSVoP+c5z6n5eWFhAa9+9auxYsUK/K//9b/wu9/9zrjvK1/5Cp7//OfjwgsvxC233GKI7SNHjuBzn/sc3vSmN+G//uu/cPnll+Oyyy7Dww8/jN27dzfc71JVdkIIIWRQYIWaEEIIcZD6tO5MJoMPfOAD2L59e41l+kUvehE+97nPIZlM4sQTTwQAvO51r8N3vvMdzM7O4h//8R97PpZHHnkEZ555JmZnZ3HjjTdCVVWoqmrcPzo6ih/+8Id49NFHcfLJJ2P//v0ARA/4zMwMXve61wEQVfJLLrkEMzMziEajuOaaa7Bq1Soce+yx2L59OwKBgCHGCSGEkEGGgpoQQghxkccffxwrV64EAASDQXzmM5/B3XffjXPPPRf33HMP/uZv/saYLa0oCt7ylrdgdHTUln2Hw2GsXr0av/jFL3D55ZcjkUjgjDPOQLVahaIoCIfD2LZtG371q1/h2muvxfLly/Hd734XN910E/7lX/7FGIUVi8Xw2c9+FrFYDJ/5zGdw8803Y2FhAaqq4mMf+xj+6q/+qkaoE0IIIYMKBTUhhBDiEnNzc3jggQfwwhe+EHv27MHhw4dxzz334KijjsJVV12FZDKJn/3sZ8jlcot+d6mZz9b7M5kM3vzmN+PRRx9d9JgTTzwRP//5z3H88cfj3/7t3zA7O4t77rkHgUAAhw8fxoEDB/CGN7wBa9aswfnnnw8AeM1rXoPvfve7ePnLX75oe4888gj+z//5P7jmmmswMzODQCCAb33rW/jlL39p9HwTQgghgwwFNSGEEOIwlUoFlUoF//zP/4wXvehFOOmkk3DsscfiM5/5DC6++GJs2rQJRx11FPbu3QtVVXHqqafiBz/4gfH7mzdvxre//W2Ew2FEIpGabcuf/9//+394+OGH8elPfxq33HLLorTuenv38uXLsXLlSiQSCaiqiomJCczMzCxK7o5EIkYSuFXU5/N5vP3tb8drXvMavOUtbzFuP/XUU/HBD34QV155JX7/+9/3+MwRQggh/oahZIQQQojDFAoFFItFfP3rX8ehQ4cAAIlEAieccALe9a534eMf/zje9773QVEU/Md//Aeuuuqqmir1N77xDfzgBz/Ae9/7XsN2LTnrrLOwYcMGvPWtbwUgkr3f+MY3GhVmSSwWQ7VaXXRsxWLRuGwVdlYoFFCpVFAul/HmN78Z8/PzuOGGGxY97mMf+xi+853v4B/+4R9wxx13tPEMEUIIIf2JorXykBFCCCHEMcrlMsLh8JKP2bt3L+LxOGZmZlw6qsbccMMN+PCHP4yDBw/iH/7hH3DRRRfhnHPOafjYn/3sZzjppJOwYsUKl4+SEEIIcQ8KakIIIYQQQgghpAvYQ00IIYQQQgghhHQBBTUhhBBCCCGEENIFFNSEEEIIIYQQQkgXUFATQgghhBBCCCFd4OuxWaqqYnZ2FqOjo1AUxevDIYQQQgghhBAy4GiahnQ6jVWrVi0aV1mPrwX17Ows1q5d6/VhEEIIIYQQQggZMvbt24c1a9Ys+RhfC+rR0VEA4j8yNjb
"text/plain": [
"<Figure size 1200x800 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"eva_total = list()\n",
"index_list = list()\n",
"eva_cols = ['MSE', 'RMSE', 'MAE', 'MAPE', 'R2']\n",
"for col in out_cols:\n",
" eva_list = list()\n",
" train_data = train_data[~train_data[col].isna()].reset_index(drop=True)\n",
" cur_test = list()\n",
" cur_real = list()\n",
" for (train_index, test_index) in kf.split(train_data):\n",
" train = train_data.loc[train_index]\n",
" valid = train_data.loc[test_index]\n",
" X_train, Y_train = train[feature_cols], train[col]\n",
" X_valid, Y_valid = valid[feature_cols], valid[col]\n",
" dtrain = xgb.DMatrix(X_train, Y_train)\n",
" dvalid = xgb.DMatrix(X_valid, Y_valid)\n",
" watchlist = [(dvalid, 'eval')]\n",
" gb_model = xgb.train(params_xgb, dtrain, num_boost_round, evals=watchlist,\n",
" early_stopping_rounds=100, verbose_eval=False)\n",
" y_pred = gb_model.predict(xgb.DMatrix(X_valid))\n",
" y_true = Y_valid.values\n",
" MSE = mean_squared_error(y_true, y_pred)\n",
" RMSE = np.sqrt(mean_squared_error(y_true, y_pred))\n",
" MAE = mean_absolute_error(y_true, y_pred)\n",
" MAPE = mean_absolute_percentage_error(y_true, y_pred)\n",
" R_2 = r2_score(y_true, y_pred)\n",
" cur_test.extend(y_pred[:7])\n",
" cur_real.extend(y_true[:7])\n",
" print('MSE:', round(MSE, 4), end=', ')\n",
" print('RMSE:', round(RMSE, 4), end=', ')\n",
" print('MAE:', round(MAE, 4), end=', ')\n",
" print('MAPE:', round(MAPE*100, 2), '%', end=', ')\n",
" print('R_2:', round(R_2, 4)) #R方为负就说明拟合效果比平均值差\n",
" eva_list.append([MSE, RMSE, MAE, MAPE, R_2])\n",
" plt.figure(figsize=(12, 8))\n",
" plt.plot(range(len(cur_test)), cur_real, 'o-', label='real')\n",
" plt.plot(range(len(cur_test)), cur_test, '*-', label='pred')\n",
" plt.legend(loc='best')\n",
" plt.title(f'{col}')\n",
" plt.show()\n",
" eva_total.append(np.mean(eva_list, axis=0))\n",
" index_list.append(f\"{col}\")"
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "844d8b9f-a820-4d59-85f5-df434ca3da8d",
"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>MSE</th>\n",
" <th>RMSE</th>\n",
" <th>MAE</th>\n",
" <th>MAPE</th>\n",
" <th>R2</th>\n",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>比表面积</th>\n",
" <td>198792.821359</td>\n",
" <td>442.335351</td>\n",
" <td>310.824134</td>\n",
" <td>0.360828</td>\n",
" <td>0.734146</td>\n",
" </tr>\n",
" <tr>\n",
" <th>总孔体积</th>\n",
" <td>0.058931</td>\n",
" <td>0.240825</td>\n",
" <td>0.167995</td>\n",
" <td>0.359498</td>\n",
" <td>0.760793</td>\n",
" </tr>\n",
" <tr>\n",
" <th>微孔体积</th>\n",
" <td>0.049497</td>\n",
" <td>0.215764</td>\n",
" <td>0.136619</td>\n",
" <td>0.268889</td>\n",
" <td>0.485802</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" MSE RMSE MAE MAPE R2\n",
"比表面积 198792.821359 442.335351 310.824134 0.360828 0.734146\n",
"总孔体积 0.058931 0.240825 0.167995 0.359498 0.760793\n",
"微孔体积 0.049497 0.215764 0.136619 0.268889 0.485802"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"pd.DataFrame.from_records(eva_total, index=index_list, columns=eva_cols)"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "0beadfa6-eef9-47fd-adb7-8ed245fa942d",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "python38",
"language": "python",
"name": "python38"
},
"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.8.18"
}
},
"nbformat": 4,
"nbformat_minor": 5
}