coal_materials/20240123_煤炭.ipynb

550 lines
407 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>灰分(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": 18,
"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": 19,
"id": "f17eadb3-4767-4eca-bbed-880bf9cbb7a3",
"metadata": {},
"outputs": [],
"source": [
"import matplotlib.pyplot as plt"
]
},
{
"cell_type": "code",
"execution_count": 20,
"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": 21,
"id": "db4dbc2d-534e-4a7e-b45c-ea25ab269502",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"MSE: 83933.6379, RMSE: 289.713, MAE: 205.8723, MAPE: 16.71 %, R_2: 0.8599\n",
"MSE: 151368.0568, RMSE: 389.0605, MAE: 331.2811, MAPE: 25.0 %, R_2: 0.8364\n",
"MSE: 179281.5189, RMSE: 423.4165, MAE: 293.9454, MAPE: 16.84 %, R_2: 0.7792\n",
"MSE: 230625.1215, RMSE: 480.2344, MAE: 288.9958, MAPE: 56.39 %, R_2: 0.5948\n",
"MSE: 212246.0972, RMSE: 460.7017, MAE: 312.8322, MAPE: 39.54 %, R_2: 0.6924\n",
"MSE: 231044.2089, RMSE: 480.6706, MAE: 359.0907, MAPE: 18.98 %, R_2: 0.6907\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.0309, RMSE: 0.1758, MAE: 0.1127, MAPE: 14.96 %, R_2: 0.8353\n",
"MSE: 0.0477, RMSE: 0.2184, MAE: 0.1858, MAPE: 23.49 %, R_2: 0.8287\n",
"MSE: 0.0656, RMSE: 0.2561, MAE: 0.1692, MAPE: 17.14 %, R_2: 0.8098\n",
"MSE: 0.0338, RMSE: 0.184, MAE: 0.122, MAPE: 18.98 %, R_2: 0.7735\n",
"MSE: 0.0511, RMSE: 0.2261, MAE: 0.1652, MAPE: 36.1 %, R_2: 0.8148\n",
"MSE: 0.0684, RMSE: 0.2615, MAE: 0.192, MAPE: 18.13 %, R_2: 0.7924\n"
]
},
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9QAAAKoCAYAAACWQ7eKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOzdeZhkdX0v/vepfeuq6nWmZwah2ZeZAdmNeo1iZIyMIImIuF/xKi6RGK9LfiqQa0L0mhtIrhIBE1BcUFyAqLiCF5RFwzoMmzDDbD3Ta+171fn98T3fc051V3XXck5t/X49D093V1d3n2mqus7nfDZFVVUVRERERERERNQUR7cPgIiIiIiIiKgfMaAmIiIiIiIiagEDaiIiIiIiIqIWMKAmIiIiIiIiagEDaiIiIiIiIqIWMKAmIiIiIiIiagEDaiIiIiIiIqIWMKAmIiIiIiIiagEDaiIioj6WyWSwb98+qKra7UMhIiJacxhQExERdVkmk2n5a++44w4cdthhyGazK94vl8vht7/97bLbDxw4gGuuuQblcrmpn8sAnoiIiAE1ERFRR6iqigsvvBA333xz1e3lchlHH300vvKVryz7mkKhgEcffRRPPfUUnn766WX/HTx4ED6fDwDg9XpX/Pn3338/XvGKV+C+++6run3fvn3467/+ayiKsuLXl8tlPP3007j55ptxySWX4KyzzkI+n0csFqv5Xy6Xa+TXQkRE1Ndc3T4AIiKitUBRFLz61a/G+973Ppx00kk4/fTTAQD33nsvZmZmcM455yz7munpaZx99tnwer1VAW8qlUK5XMall16KN77xjQAAp9O54s+/6667sGXLFrziFa+out3lcsHhcMDhqH2NPR6P4/TTT8eePXtQLpfh9XrxoQ99CG9+85tx4MABHHnkkTW/7n/+z/+JL37xiyseExERUb9jhpqIiKhDPvKRj+D888/Hs88+q992yy234M1vfjOOO+64Zfc//PDDkcvlEI/H9czvV7/6VSiKggsuuAB///d/v2pmGQCKxSJuvvlmvO1tb0MsFsP8/Lz+/dLpNBRFqcouLywsIBaLAQAikQh+9KMfYc+ePfjRj36E8fFxfPGLX8Sb3vQmjIyMAAB27doFVVX1/8455xw9c05ERDTImKEmIiLqAK/Xi0KhAAC47bbb8La3va3q89/5zncAAE888QQ2b95c83vceOON+OAHP4hrrrkGH/rQhxr+2T/84Q9x6NAhnHXWWfjUpz6Fr371q8vuMzw8XPXx2972Ntxyyy0olUo48sgj4fF49M+pqopSqbRiH3W9jDcREdEg4asdERFRB3i9Xtx9991VmVzzf3v37gWAqsDV7KGHHsL73vc+3HzzzU0F06qq4h//8R/1j6+99lo9GP7rv/5rHHXUUXA6nTjssMPwu9/9Dqqqolwu42tf+xoAEfwHAgG4XC5s374dL774IhwOBzweD2677bY2fiNERET9jwE1ERFRB7jd7rbul0gkAABvetObAAClUqmh7/f1r38du3fvRjAYBCACe6fTCVVVcdttt+F1r3sdAOC8887DN77xDQAiuyyHnJ177rl44okn8Nxzz+G1r30tNm7ciOeffx5PP/00tm3b1tAxEBERDSoG1ERERB1QKBSwf/9+/PGPf6z53+7duwGIfueV3H333fjABz6Ao48+etWfWSqV8PnPfx6f//znl/U033TTTYjH43jzm98MAHj/+9+Pm266Cc8//3zV/YaHh7F582asX78ev/vd7+ByuTA/P4/jjjsOgUCg7s9e7d9BREQ0CNhDTURE1AGFQgFvf/vbG7qf2Ysvvohf//rXuPXWWwEAH/3oR/GXf/mX+O53v7vq93K5XPjxj3+MY445Bp/73Of02w8ePIi//du/xV/91V/pvdMnn3wy3vSmN+E973kPfv7zny8LwP/t3/4NpVIJ6XQar3nNa/DlL39Zz25PTU0t+9kvfelLVz0+IiKifqeoK00UISIiorbl83l9KFkul0M4HMa//Mu/4OKLL8bExIR+v7m5OYyNjekf33bbbXjzm9+MUCiE0047Db/5zW+QzWargt3//M//xPbt21ccEAYAY2NjuO2223Dqqafi1a9+NSqVCu6//348/fTTOP3001EqlbC4uIjTTz8dRx99NL7zne/owfbi4iKOP/54bNu2Db/5zW9w2WWX4Qtf+AIef/zxuqXnkUhk2aAzIiKiQcOSbyIiIpudfPLJuPPOO3Hrrbfq67H279+Pc889F8lkEgBQqVTwp3/6p/jrv/5r/ev+4i/+At/85jdx4MABfOYzn2n7OJ544gmcccYZOHDgAP7jP/4DlUoFlUpF//zQ0BB++MMf4sknn8TWrVsxMzMDAPjYxz6GsbEx/MVf/AUAkSW/9NJLMTY2Bq/Xi2uvvRYbNmzAEUccgcceewwOh4PBNBERrQkMqImIiGz0wgsv4Nlnn8Wpp54Kr9erZ5flDmlZuu1wOPCtb30L//7v/45PfvKTAABFUXDJJZdgaGjIkmNxu93YuHEj7rvvPnz84x9HMBjEaaedhnK5DEVR4Ha78fDDD+OBBx7Addddh4mJCXz3u9/FTTfdhH/5l3/RV2H5fD588YtfhM/nwxe+8AXccsstSCQSqFQq+OxnP4t3vOMdVYE6ERHRoGJATUREZKPvf//7OO2007Bx40Z4PB49KHW5XLj77rvx3ve+F4AYEuZyufC9730P//RP/4Sf/vSnVd9ntZJu+flUKoW3vvWtePLJJ5fd5/jjj8evf/1rHHXUUfjWt76FAwcO4O6774bD4cDCwgJmZ2dx0UUXYdOmTTjvvPMAABdccAG++93v4pxzzln2/Z544gl8+ctfxrXXXouxsTE4HA58/etfx+9+9zt86Utfav6XRURE1GcYUBMREdlEVVXccMMNuOiiiwCIHdOLi4t6KXUkEgEAzMzM4BOf+ARuvvlmvO51r8OvfvWrqpVUd911F77xjW/A7XYv21MtP/72t7+Nxx9/HP/4j/+I73znO8umdS8t756YmMDk5CSCwSAqlQqi0SjGxsaWTe72eDz6JHBzUJ/NZvHOd74TF1xwAS655BL99lNOOQV/8zd/gyuuuALPPPNMa784IiKiPsEp30RERDZRFAW33norNm7cCAA49thj4XQ6sW7duqr7ORwOnHzyyXr/9Kte9aqqz3/ta1/DD37wA3zwgx/UM9zSmWeeic2bN+Ntb3sbAJH5fstb3qJnmCWfz4dyubzsGPP5vP526WTvpXK5HEqlEorFIt761rciFovhxhtvXHa/z372s/jmN7+JT3ziE7j99ttX/J5ERET9jFO+iYiIetyePXsQCASqJoB3w4033ohPfepTmJubwyc+8QlceOGFOPvss2ve9xe/+AW2bNmC9evXd/goiYiIOocBNREREREREVEL2ENNRERERERE1AIG1EREREREREQtYEBNRERERERE1AIG1EREREREREQt6Pm1WZVKBQcOHMDQ0BAURen24RAREREREdGAU1UVyWQSGzZsWLay0qznA+oDBw7gsMMO6/ZhEBERERER0Rqzd+9ebNq0qe7nez6gHhoaAiD+IeFwuMtHQ0RERERERIMukUjgsMMO0+PReno+oJZl3uFwmAE1ERERERERdcxqbcccSkZERERERETUAgbURERERERERC1gQE1ERERERETUgp7voSYiIiIiIqLGlMtlFIvFbh9Gz3O73XA6nW1/HwbUREREREREfU5VVRw8eBCxWKzbh9I3otEo1q9fv+rgsZUwoCYiIiIiIupzMpiemJhAIBBoK0gcdKqqIpPJYGZmBgAwOTnZ8vdiQE1ERERERNTHyuWyHkyPjo52+3D6gt/vBwDMzMxgYmKi5fJvDiUjIiIiIiLqY7JnOhAIdPlI+ov8fbXTc950QD03N4epqSns3r27qa97y1vego985CPN/jgiIiIiIiJqAMu8m2PF76upku+5uTmcd955TQfTP/nJT3DPPffgmWeeaerriIiIiIiIiHpVUxnqiy++GJdccklTPyCdTuODH/wgrr76akSj0aa+loiIiIi
"text/plain": [
"<Figure size 1200x800 with 1 Axes>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"MSE: 0.0185, RMSE: 0.1362, MAE: 0.0952, MAPE: 18.49 %, R_2: 0.7329\n",
"MSE: 0.0503, RMSE: 0.2242, MAE: 0.1338, MAPE: 21.21 %, R_2: 0.6868\n",
"MSE: 0.0768, RMSE: 0.2771, MAE: 0.1638, MAPE: 26.24 %, R_2: 0.4523\n",
"MSE: 0.0222, RMSE: 0.1489, MAE: 0.0975, MAPE: 21.11 %, R_2: 0.5256\n",
"MSE: 0.0395, RMSE: 0.1987, MAE: 0.1253, MAPE: 42.88 %, R_2: 0.5666\n",
"MSE: 0.0525, RMSE: 0.229, MAE: 0.1566, MAPE: 23.66 %, R_2: 0.2799\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": 22,
"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>181416.440212</td>\n",
" <td>420.632794</td>\n",
" <td>298.669574</td>\n",
" <td>0.289103</td>\n",
" <td>0.742225</td>\n",
" </tr>\n",
" <tr>\n",
" <th>总孔体积</th>\n",
" <td>0.049592</td>\n",
" <td>0.220315</td>\n",
" <td>0.157799</td>\n",
" <td>0.214682</td>\n",
" <td>0.809092</td>\n",
" </tr>\n",
" <tr>\n",
" <th>微孔体积</th>\n",
" <td>0.043286</td>\n",
" <td>0.202355</td>\n",
" <td>0.128714</td>\n",
" <td>0.255982</td>\n",
" <td>0.540697</td>\n",
" </tr>\n",
" </tbody>\n",
"</table>\n",
"</div>"
],
"text/plain": [
" MSE RMSE MAE MAPE R2\n",
"比表面积 181416.440212 420.632794 298.669574 0.289103 0.742225\n",
"总孔体积 0.049592 0.220315 0.157799 0.214682 0.809092\n",
"微孔体积 0.043286 0.202355 0.128714 0.255982 0.540697"
]
},
"execution_count": 22,
"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": "py38",
"language": "python",
"name": "py38"
},
"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.19"
}
},
"nbformat": 4,
"nbformat_minor": 5
}