coal_materials/20240123_煤沥青.ipynb

623 lines
456 KiB
Plaintext
Raw Permalink 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>碳源</th>\n",
" <th>共碳化物质</th>\n",
" <th>共碳化物/煤沥青</th>\n",
" <th>加热次数</th>\n",
" <th>是否有碳化过程</th>\n",
" <th>模板剂种类</th>\n",
" <th>模板剂比例</th>\n",
" <th>KOH与煤沥青比例</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",
" </tr>\n",
" </thead>\n",
" <tbody>\n",
" <tr>\n",
" <th>0</th>\n",
" <td>煤沥青</td>\n",
" <td>无</td>\n",
" <td>0.0</td>\n",
" <td>1</td>\n",
" <td>否</td>\n",
" <td>自制氧化钙</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>500</td>\n",
" <td>5</td>\n",
" <td>2.0</td>\n",
" <td>溶剂</td>\n",
" <td>908.07</td>\n",
" <td>0.40</td>\n",
" <td>0.34</td>\n",
" <td>1.75</td>\n",
" </tr>\n",
" <tr>\n",
" <th>1</th>\n",
" <td>煤沥青</td>\n",
" <td>无</td>\n",
" <td>0.0</td>\n",
" <td>1</td>\n",
" <td>否</td>\n",
" <td>自制氧化钙</td>\n",
" <td>1.0</td>\n",
" <td>0.5</td>\n",
" <td>600</td>\n",
" <td>5</td>\n",
" <td>2.0</td>\n",
" <td>溶剂</td>\n",
" <td>953.95</td>\n",
" <td>0.66</td>\n",
" <td>0.35</td>\n",
" <td>2.76</td>\n",
" </tr>\n",
" <tr>\n",
" <th>2</th>\n",
" <td>煤沥青</td>\n",
" <td>无</td>\n",
" <td>0.0</td>\n",
" <td>1</td>\n",
" <td>否</td>\n",
" <td>自制氧化钙</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>600</td>\n",
" <td>5</td>\n",
" <td>2.0</td>\n",
" <td>溶剂</td>\n",
" <td>1388.62</td>\n",
" <td>0.61</td>\n",
" <td>0.53</td>\n",
" <td>1.77</td>\n",
" </tr>\n",
" <tr>\n",
" <th>3</th>\n",
" <td>煤沥青</td>\n",
" <td>无</td>\n",
" <td>0.0</td>\n",
" <td>1</td>\n",
" <td>否</td>\n",
" <td>自制氧化钙</td>\n",
" <td>1.0</td>\n",
" <td>2.0</td>\n",
" <td>600</td>\n",
" <td>5</td>\n",
" <td>2.0</td>\n",
" <td>溶剂</td>\n",
" <td>1444.63</td>\n",
" <td>0.59</td>\n",
" <td>0.55</td>\n",
" <td>1.62</td>\n",
" </tr>\n",
" <tr>\n",
" <th>4</th>\n",
" <td>煤沥青</td>\n",
" <td>无</td>\n",
" <td>0.0</td>\n",
" <td>2</td>\n",
" <td>是</td>\n",
" <td>自制碱式碳酸镁</td>\n",
" <td>1.0</td>\n",
" <td>1.0</td>\n",
" <td>600</td>\n",
" <td>5</td>\n",
" <td>2.0</td>\n",
" <td>溶剂</td>\n",
" <td>1020.99</td>\n",
" <td>0.45</td>\n",
" <td>0.35</td>\n",
" <td>1.77</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" 碳源 共碳化物质 共碳化物/煤沥青 加热次数 是否有碳化过程 模板剂种类 模板剂比例 KOH与煤沥青比例 活化温度 升温速率 \\\n",
"0 煤沥青 无 0.0 1 否 自制氧化钙 1.0 1.0 500 5 \n",
"1 煤沥青 无 0.0 1 否 自制氧化钙 1.0 0.5 600 5 \n",
"2 煤沥青 无 0.0 1 否 自制氧化钙 1.0 1.0 600 5 \n",
"3 煤沥青 无 0.0 1 否 自制氧化钙 1.0 2.0 600 5 \n",
"4 煤沥青 无 0.0 2 是 自制碱式碳酸镁 1.0 1.0 600 5 \n",
"\n",
" 活化时间 混合方式 比表面积 总孔体积 微孔体积 平均孔径 \n",
"0 2.0 溶剂 908.07 0.40 0.34 1.75 \n",
"1 2.0 溶剂 953.95 0.66 0.35 2.76 \n",
"2 2.0 溶剂 1388.62 0.61 0.53 1.77 \n",
"3 2.0 溶剂 1444.63 0.59 0.55 1.62 \n",
"4 2.0 溶剂 1020.99 0.45 0.35 1.77 "
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data = pd.read_excel('./data/20240123/煤沥青数据.xlsx')\n",
"data.head()"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "b1a0903a-596f-4d6f-98b1-a668a26f4175",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(149, 16)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.shape"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "359c9cc6-2694-46a6-9f18-6361e220542a",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Index(['碳源', '共碳化物质', '共碳化物/煤沥青', '加热次数', '是否有碳化过程', '模板剂种类', '模板剂比例',\n",
" 'KOH与煤沥青比例', '活化温度', '升温速率', '活化时间', '混合方式', '比表面积', '总孔体积', '微孔体积',\n",
" '平均孔径'],\n",
" dtype='object')"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"data.columns"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "7ca6d610-060a-4540-bf1d-4f51cc2c55d1",
"metadata": {},
"outputs": [],
"source": [
"data.drop(columns=['碳源'], inplace=True)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "24f58281-9f13-49ef-b44d-81d0644d6976",
"metadata": {},
"outputs": [],
"source": [
"object_cols = ['共碳化物质', '是否有碳化过程', '模板剂种类', '混合方式']"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "3368163e-85a1-4487-8078-be51cb5fb560",
"metadata": {},
"outputs": [],
"source": [
"data = pd.get_dummies(data, columns=object_cols)"
]
},
{
"cell_type": "code",
"execution_count": 8,
"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": 9,
"id": "e4946bd7-ae94-4981-82ed-66e2b496e035",
"metadata": {},
"outputs": [],
"source": [
"train_data = data.reset_index(drop=True)"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "e545ccba-07b2-4c49-bd48-f49b3892fafc",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(149, 40)"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"train_data.shape"
]
},
{
"cell_type": "code",
"execution_count": 11,
"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": 12,
"id": "2bbdcd34-16c1-43ba-b249-6c7d54db8ac2",
"metadata": {},
"outputs": [],
"source": [
"from sklearn.model_selection import KFold, train_test_split\n",
"kf = KFold(n_splits=5, shuffle=True, random_state=666)"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "42597842-1acb-4263-bdad-bfca7b11bcb5",
"metadata": {},
"outputs": [],
"source": [
"import numpy as np"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "94af2a3a-6f61-46bf-8cd4-2b7e0da8b2c4",
"metadata": {},
"outputs": [],
"source": [
"params_xgb = {\"objective\": 'reg:squarederror',\n",
" \"subsample\": 0.9,\n",
" \"max_depth\": 20,\n",
" \"eta\": 0.01,\n",
" \"colsample_bytree\": 0.9,}\n",
"num_boost_round = 1000"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "f17eadb3-4767-4eca-bbed-880bf9cbb7a3",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 16,
"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": 17,
"id": "db4dbc2d-534e-4a7e-b45c-ea25ab269502",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"MSE: 267691.4403, RMSE: 517.3891, MAE: 395.2788, MAPE: 94.67 %, R_2: 0.4467\n",
"MSE: 242169.4062, RMSE: 492.1071, MAE: 353.5184, MAPE: 153.84 %, R_2: 0.7103\n",
"MSE: 337963.1058, RMSE: 581.3459, MAE: 453.5923, MAPE: 368.53 %, R_2: 0.5508\n",
"MSE: 241296.272, RMSE: 491.2192, MAE: 378.0324, MAPE: 36.02 %, R_2: 0.5678\n",
"MSE: 393198.8331, RMSE: 627.0557, MAE: 494.652, MAPE: 424.8 %, R_2: 0.309\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.1984, RMSE: 0.4454, MAE: 0.3543, MAPE: 72.07 %, R_2: 0.616\n",
"MSE: 0.1439, RMSE: 0.3794, MAE: 0.3062, MAPE: 224.83 %, R_2: 0.4173\n",
"MSE: 0.1073, RMSE: 0.3275, MAE: 0.2583, MAPE: 30.27 %, R_2: 0.6678\n",
"MSE: 0.1076, RMSE: 0.3281, MAE: 0.2422, MAPE: 39.55 %, R_2: 0.5426\n",
"MSE: 0.187, RMSE: 0.4324, MAE: 0.3131, MAPE: 389.39 %, R_2: 0.0647\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9QAAAKoCAYAAACWQ7eKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzde3xcdZ0//teZezIzuTdN2vSS3lt6gRYKKiwiKFUpIKsoyHrFr1TdVVdXZVetdd0v6uqK/r7KKuCCFhcQVwHRekFkuVQLFOi9tOk992SSTG5zP78/PudzZpLMJDOTuZ7zej4efWQyM5k5hGQy7/O+KaqqqiAiIiIiIiKijFiKfQBERERERERE5YgBNREREREREVEWGFATERERERERZYEBNREREREREVEWGFATERERERERZYEBNREREREREVEWGFATERERERERZYEBNREREREREVEWGFATERGVsbGxMZw7dw6qqhb7UIiIiEyHATUREVGRjY2NZf21jz32GBYsWIDx8fFp7xcIBPDcc89Nub6jowN33nknotFoRs/LAJ6IiIgBNRERUUGoqoobbrgB999//4Tro9Eoli1bhh/84AdTviYUCuGVV17B4cOHceTIkSn/urq64HK5AABOp3Pa59+9ezcuvfRSPPvssxOuP3fuHD796U9DUZRpvz4ajeLIkSO4//77cfPNN+Piiy9GMBjE4OBg0n+BQCCdbwsREVFZsxX7AIiIiMxAURRcccUV+MhHPoLzzjsPF154IQDgmWeeQU9PD6688sopX9PZ2YlLLrkETqdzQsA7MjKCaDSKW2+9Fddeey0AwGq1Tvv8u3btwrp163DppZdOuN5ms8FiscBiSX6OfWhoCBdeeCHOnDmDaDQKp9OJj3/843jXu96Fjo4OLFmyJOnX/dM//RO++c1vTntMRERE5Y4ZaiIiogL5+7//e1x33XV47bXX9Ot27tyJd73rXVi5cuWU+y9atAiBQABDQ0N65veHP/whFEXB9ddfj3/7t3+bMbMMAOFwGPfffz/e+973YnBwEP39/frjjY6OQlGUCdlln8+HwcFBAEB1dTV+9atf4cyZM/jVr36FOXPm4Jvf/Cbe8Y53oK6uDgBw8uRJqKqq/7vyyiv1zDkREZGRMUNNRERUAE6nE6FQCADwyCOP4L3vfe+E2x988EEAwP79+7F27dqkj3HPPffgYx/7GO688058/OMfT/u5f/nLX6K7uxsXX3wxvvCFL+CHP/zhlPvU1tZO+Py9730vdu7ciUgkgiVLlsDhcOi3qaqKSCQybR91qow3ERGRkfCvHRERUQE4nU489dRTEzK5if/Onj0LABMC10R79uzBRz7yEdx///0ZBdOqquLrX/+6/vl3v/tdPRj+9Kc/jaVLl8JqtWLBggV4/vnnoaoqotEo7r33XgAi+K+srITNZsPWrVtx+vRpWCwWOBwOPPLII7P4jhAREZU/BtREREQFYLfbZ3U/v98PAHjHO94BAIhEImk93k9+8hOcOnUKbrcbgAjsrVYrVFXFI488gre85S0AgGuuuQY//elPAYjsshxydvXVV2P//v04duwYrrrqKsyfPx9tbW04cuQItmzZktYxEBERGRUDaiIiogIIhUJob2/H8ePHk/47deoUANHvPJ2nnnoKt912G5YtWzbjc0YiEXzta1/D1772tSk9zffddx+Ghobwrne9CwDw0Y9+FPfddx/a2tom3K+2thZr165FU1MTnn/+edhsNvT392PlypWorKxM+dwz/XcQEREZAXuoiYiICiAUCuGWW25J636JTp8+jT/96U946KGHAACf/OQn8c53vhMPP/zwjI9ls9nwxBNPYPny5fjyl7+sX9/V1YV//ud/xj/8wz/ovdMbNmzAO97xDnzwgx/E73//+ykB+H/+538iEolgdHQUb3rTm/D9739fz263trZOee4LLrhgxuMjIiIqd4o63UQRIiIimrVgMKgPJQsEAqiqqsL3vvc9vOc970FjY6N+v76+PjQ0NOifP/LII3jXu94Fj8eDTZs24emnn8b4+PiEYPfXv/41tm7dOu2AMABoaGjAI488go0bN+KKK65ALBbD7t27ceTIEVx44YWIRCIYGBjAhRdeiGXLluHBBx/Ug+2BgQGsWrUKW7ZswdNPP41t27bhG9/4Bvbt25ey9Ly6unrKoDMiIiKjYck3ERFRnm3YsAGPP/44HnroIX09Vnt7O66++moMDw8DAGKxGN74xjfi05/+tP51f/u3f4sHHngAHR0d+OIXvzjr49i/fz8uuugidHR04L/+678Qi8UQi8X0271eL375y1/i4MGDWL9+PXp6egAA//iP/4iGhgb87d/+LQCRJb/11lvR0NAAp9OJ7373u5g3bx4WL16MV199FRaLhcE0ERGZAgNqIiKiPDpx4gRee+01bNy4EU6nU88uyx3SsnTbYrHgZz/7GX784x/j85//PABAURTcfPPN8Hq9OTkWu92O+fPn49lnn8VnP/tZuN1ubNq0CdFoFIqiwG63Y+/evfjLX/6Cu+66C42NjXj44Ydx33334Xvf+56+CsvlcuGb3/wmXC4XvvGNb2Dnzp3w+/2IxWL40pe+hL/7u7+bEKgTEREZFQNqIiKiPPrFL36BTZs2Yf78+XA4HHpQarPZ8NRTT+HDH/4wADEkzGaz4ec//zm+/e1v47e//e2Ex5mppFvePjIygptuugkHDx6ccp9Vq1bhT3/6E5YuXYqf/exn6OjowFNPPQWLxQKfz4fe3l7ceOONaGlpwTXXXAMAuP766/Hwww/jyiuvnPJ4+/fvx/e//31897vfRUNDAywWC37yk5/g+eefx7e+9a3Mv1lERERlhgE1ERFRnqiqirvvvhs33ngjALFjemBgQC+lrq6uBgD09PTgc5/7HO6//3685S1vwZNPPjlhJdWuXbvw05/+FHa7fcqeavn5f//3f2Pfvn34+te/jgcffHDKtO7J5d2NjY1obm6G2+1GLBZDTU0NGhoapkzudjgc+iTwxKB+fHwc73vf+3D99dfj5ptv1q8///zz8ZnPfAbbt2/H0aNHs/vGERERlQlO+SYiIsoTRVHw0EMPYf78+QCAFStWwGq1Yu7cuRPuZ7FYsGHDBr1/+vLLL59w+7333ov/+Z//wcc+9jE9wy1t3rwZa9euxXvf+14AIvP97ne/W88wSy6XC9FodMoxBoNB/ePkyd6TBQIBRCIRhMNh3HTTTRgcHMQ999wz5X5f+tKX8MADD+Bzn/scHn300Wkfk4iIqJxxyjcREVGJO3PmDCorKydMAC+Ge+65B1/4whfQ19eHz33uc7jhhhtwySWXJL3vH/7wB6xbtw5NTU0FPkoiIqLCYUBNRERERERElAX2UBMRERERERFlgQE1ERERERERURYYUBMRERERERFlgQE1ERERERERURZKfm1WLBZDR0cHvF4vFEUp9uEQERERERGRwamqiuHhYcybN2/KyspEJR9Qd3R0YMGCBcU+DCIiIiIiIjKZs2fPoqWlJeXtJR9Qe71eAOI/pKqqqshHQ0REREREREbn9/uxYMECPR5NpeQDalnmXVVVxYCaiIiIiIiICmamtmMOJSMiIiIiIiLKAgNqIiIiIiIioiwwoCYiIiIiIiLKQsn3UBMREREREVF6otEowuFwsQ+j5Nntdlit1lk/DgNqIiIiIiKiMqeqKrq6ujA4OFjsQykbNTU1aGpqmnHw2HQYUBMREREREZU5GUw3NjaisrJyVkGi0amqirGxMfT09AAAmpubs34sBtRERERERERlLBqN6sF0fX19sQ+nLFRUVAAAenp60NjYmHX5N4eSERERERERlTHZM11ZWVnkIykv8vs1m55zBtREREREREQGwDLvzOTi+8WAmoiIiIiIiCgLDKiJiIiIiIgI0ZiK3W39ePSVduxu60c0phb7kLLy5z//GYsXLy7Ic3EoGRERERERkcntOtCJHY8fQudQQL+uudqF7VvXYMva7KdgGx0z1ERERERERCa260Antu3cOyGYBoCuoQC27dyLXQc6i3RkpY8BNRERERE
"text/plain": [
"<Figure size 1200x800 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"MSE: 0.0303, RMSE: 0.1739, MAE: 0.1339, MAPE: 144.75 %, R_2: 0.6541\n",
"MSE: 0.0652, RMSE: 0.2554, MAE: 0.1954, MAPE: 55.86 %, R_2: 0.1165\n",
"MSE: 0.0546, RMSE: 0.2337, MAE: 0.1888, MAPE: 1337.75 %, R_2: 0.6439\n",
"MSE: 0.0312, RMSE: 0.1765, MAE: 0.1505, MAPE: 43.36 %, R_2: 0.5198\n",
"MSE: 0.0565, RMSE: 0.2377, MAE: 0.1762, MAPE: 496.94 %, R_2: 0.5316\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9QAAAKoCAYAAACWQ7eKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeXwkdZ0//lf1nbNzTSbJZI4MNww3w6GAirigMsix7oo3iusirPpz0V13dZFdVxbX87vfr6yAggquuHgAouOyHIowOOJwzQzCMMyVSWZydyed9F2/Pz71qe4kfVR3V3VXd72ejwePTjpJdzEz6a53vS9FVVUVRERERERERFQSV60PgIiIiIiIiKgeMaAmIiIiIiIiKgMDaiIiIiIiIqIyMKAmIiIiIiIiKgMDaiIiIiIiIqIyMKAmIiIiIiIiKgMDaiIiIiIiIqIyMKAmIiIiIiIiKgMDaiIiojo2Pz+P4eFhqKpa60MhIiJyHAbUREREVXDnnXciFosBAFRVxQ033ICFhQX961u2bMEnP/lJJJPJkh73gQcewOrVqxc9Vi7RaBRPPvnksvtHRkbwjW98A6lUqqTnZQBPREQEKCrfEYmIiCz18MMPY9OmTfj973+PhYUFnHrqqWhpaUEoFMJLL72EU045Bd/+9rdx6623Yvv27frPxeNx7Ny5E36/H4qiLHvcjo4OPP3007j88suRTCbhdrvzHsNjjz2GCy64AE888QTOPfdc/f6tW7firLPOQiqVgsuV/zp7KpXCrl278Pvf/x6//vWv8eqrr+KJJ57IG8gHAgEEAgEjfzxERER1y1PrAyAiImpkw8PDeP/734+vfOUrOPHEE+F2u7F//354vV54PB5cfPHFeO2117Bt2za8/vWvX/Szo6OjOPvss5cF1HNzc0ilUrjmmmtw6aWXAkDBYBoANm/ejBNPPHFRMA0AHo8HLpcrbzAdCoVwxhlnYP/+/UilUvD7/bjuuuvwzne+EyMjI1i/fn3On/v0pz+NL3/5y0X/fIiIiOoZS76JiIgsEo1GcdFFF+HNb34zPvKRj8DlcsHr9cLv98PlcsHtdsPr9cLr9eLJJ5/EySefDABIp9OYn5/H2rVrEY1GEQqFMDMzg5mZGXz729+Goii47LLL8K//+q85M9dLJRIJfO9738N73vMezMzMYHJyUn+8SCQCRVH0z2dmZjA1NYWZmRkAQDAYxM9//nPs378fP//5z7FixQp8+ctfxuWXX46uri4AwJ49e6Cqqv7fm9/8ZmaniYjIERhQExERWSQQCOBLX/oSbrvtNnz961/HF7/4RSQSCTzxxBNIp9N49NFHkU6nsWPHDrz88sv4h3/4BzQ1NSEQCOCiiy5a9nh33HEH3ve+9+Eb3/gGfvazn6G3t9fQcfzsZz/D4cOHcdZZZ+Hv//7v0dPTg87OTnR2duL8889HKpXSP+/s7ER3dzeuv/56AEAymcT69evR09OjP56qqkgkEgX7qAuVjxMRETUKvtsRERFZ6B3veAdisRh+8IMf4PLLL8edd96J2dlZ3HrrrRgZGcEtt9yChx56CBdccAFmZmbwhS98AR/96EfxxBNPLHqcrVu34iMf+Qi+973v4brrrjP8/Kqq4t/+7d/0z7/5zW8imUxCVVX8f//f/4cjjjgCbrcbq1evxlNPPQVVVZFKpfCd73wHAHDfffehubkZHo8HmzZtwr59++ByueDz+XDfffeZ84dERERUp9hDTUREZLFPfepTOOecc7Bv3z7ccMMNaG1thcvlQjQaxYUXXognn3xSzwDPzs6io6Nj2WOEw2EAwOWXXw5AZI49nuJv49///vexd+9etLS0AAD8fj8AEWjfd999uOSSS3DbbbfhkksuwQ9+8AOcc845cLlc+vdddNFFePHFFxEIBHDttdfipZdewm9/+1skEgn9MYmIiJyKGWoiIiIL3XXXXfjhD38IAHjb296GiYkJ7N27F6+99hpGRkZw7bXXoqWlBbt27QIAjI+PIxgM5n28xx57DH/913+NI488suhzJ5NJfPGLX8QXv/jFZT3Nd911F0KhEN75zncCAD760Y/irrvuwu7duxd9X2dnJzZs2IC+vj489dRT8Hg8mJycxDHHHIPm5ua8z51IJIoeHxERUb1jQE1ERGSRiYkJXH/99fjwhz+c93vOOeccPP7442hvb8fhw4exf//+Rb3R+/btw5133omvfOUrAIBPfOIT6Orqwo9//OOiz+/xePDQQw/h2muvXXT/oUOH8A//8A/4+Mc/js7OTgDAySefjMsvvxxXX301otHossf6z//8TySTSUQiEVxwwQX4/ve/j3g8DgAYGhqCoij6f4888oj+NSIiokbGkm8iIiKL9PT04Cc/+Qleeuklfb/03/zN3+Cee+5BZ2cnDhw4gHg8jq6uLqxfvx7btm3Ds88+i6997WsARP/yO9/5TrS2tuL0008HALzwwgslTdA++uijF30eDofx9re/HX19ffjHf/xH/OlPf9K/9n//7//FGWecgXe84x340Y9+pAfb09PT+Pd//3e8613vwm9+8xvccMMN+OQnP4kXXngBe/bsyfm8hbLsREREjYIZaiIiIgstndY9NzeHj3/843j++ecXlUyfe+65+Pd//3e0trbi2GOPBQBceeWVuOeeezAyMoLPfe5zFR/Liy++iI0bN2JkZAR33nkn0uk00um0/vW2tjb87Gc/w44dO3DSSSdhbGwMgOgB7+npwZVXXglAZMmvueYa9PT0wO/345vf/CYGBgawbt06PP/883C5XHowTkRE1MgYUBMREVXRrl270N/fDwBwu9245ZZb8Mgjj+CCCy7AY489hg996EP6bmlFUfDud78bbW1tpjy31+vFqlWr8Lvf/Q433HADWlpacPrppyOVSkFRFHi9Xmzbtg1PP/00br31VvT29uLHP/4x7rrrLvyf//N/9FVYgUAAX/7ylxEIBHDLLbfg7rvvRjgcRjqdxuc//3m8733vWxSoExERNSoG1ERERFUyOjqK3//+93jd616Hffv2YWpqCo899hhWrlyJm266Ca2trXj44YcxPz+/7GcL7XzO/vrc3Byuuuoq7NixY9n3HHvssXj00UdxxBFH4Ic//CFGRkbw2GOPweVyYWpqCuPj4/iLv/gLDA4O4pJLLgEAXHbZZfjxj3+MN7/5zcse78UXX8T/+3//D9/85jfR09MDl8uF73//+3jqqaf0nm8iIqJGxoCaiIjIYslkEslkEv/6r/+Kc889FyeeeCLWrVuHW265BR/84AexadMmrFy5Evv370c6ncYpp5yCn/70p/rPb968GT/4wQ/g9Xrh8/kWPbb8/L/+67/wwgsv4N/+7d/wox/9aNm07qXl3b29vejv70dLSwvS6TQ6OjrQ09OzbHK3z+fTJ4FnB/ULCwt4//vfj8suuwzvfve79ftPOeUU/O3f/i1uvPFGvPzyyxX+yREREdkbh5IRERFZLBqNIhaL4dvf/jYmJycBAC0tLTjmmGPwkY98BP/0T/+E6667Doqi4H/+539w0003LcpSf+c738FPf/pTfOxjH9PLrqUzzzwTGzZswHve8x4AYrL3X/7lX+oZZikQCCCVSi07tlgspt8WG3YWjUaRTCaRSCRw1VVXYWZmBnfcccey7/v85z+Pe+65B5/5zGdw//33G/gTIiIiqk+KWqyGjIiIiCyTSCTg9XoLfs/+/fvR3NyMnp6eKh1VbnfccQf+/u//HhMTE/jMZz6DK664AmeffXbO73344Ydx4oknoq+vr8pHSUREVD0MqImIiIiIiIjKwB5qIiIiIiIiojIwoCYiIiIiIiIqAwNqIiIiIiIiojIwoCYiIiIiIiIqg+3XZqXTaYyMjKCtrQ2KotT6cIiIiIiIiKjBqaqK2dlZDAwMLFtZmc32AfXIyAhWr15d68MgIiIiIiIihzlw4AAGBwfzft32AXVbWxsA8T/S3t5e46MhIiIiIiKiRhcOh7F69Wo9Hs3H9gG1LPNub29nQE1ERERERERVU6ztmEPJiIiIiIiIiMrAgJqIiIiIiIioDAyoiYi
"text/plain": [
"<Figure size 1200x800 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"MSE: 0.606, RMSE: 0.7785, MAE: 0.5382, MAPE: 19.71 %, R_2: 0.6204\n",
"MSE: 0.4154, RMSE: 0.6445, MAE: 0.4482, MAPE: 18.23 %, R_2: 0.7462\n",
"MSE: 1.7064, RMSE: 1.3063, MAE: 0.766, MAPE: 20.09 %, R_2: 0.1468\n",
"MSE: 0.7332, RMSE: 0.8563, MAE: 0.5696, MAPE: 25.1 %, R_2: -0.1811\n",
"MSE: 0.4071, RMSE: 0.638, MAE: 0.4065, MAPE: 13.74 %, R_2: 0.7213\n"
]
},
{
"data": {
"image/png": "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
"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": 18,
"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>296463.811484</td>\n",
" <td>541.823393</td>\n",
" <td>415.014783</td>\n",
" <td>2.155717</td>\n",
" <td>0.516912</td>\n",
" </tr>\n",
" <tr>\n",
" <th>总孔体积</th>\n",
" <td>0.148839</td>\n",
" <td>0.382557</td>\n",
" <td>0.294842</td>\n",
" <td>1.512200</td>\n",
" <td>0.461672</td>\n",
" </tr>\n",
" <tr>\n",
" <th>微孔体积</th>\n",
" <td>0.047554</td>\n",
" <td>0.215457</td>\n",
" <td>0.168962</td>\n",
" <td>4.157314</td>\n",
" <td>0.493163</td>\n",
" </tr>\n",
" <tr>\n",
" <th>平均孔径</th>\n",
" <td>0.773611</td>\n",
" <td>0.844710</td>\n",
" <td>0.545686</td>\n",
" <td>0.193752</td>\n",
" <td>0.410705</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" MSE RMSE MAE MAPE R2\n",
"比表面积 296463.811484 541.823393 415.014783 2.155717 0.516912\n",
"总孔体积 0.148839 0.382557 0.294842 1.512200 0.461672\n",
"微孔体积 0.047554 0.215457 0.168962 4.157314 0.493163\n",
"平均孔径 0.773611 0.844710 0.545686 0.193752 0.410705"
]
},
"execution_count": 18,
"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
}