676 lines
666 KiB
Plaintext
676 lines
666 KiB
Plaintext
|
{
|
|||
|
"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 tr th {\n",
|
|||
|
" text-align: left;\n",
|
|||
|
" }\n",
|
|||
|
"</style>\n",
|
|||
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|||
|
" <thead>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th></th>\n",
|
|||
|
" <th>Unnamed: 0_level_0</th>\n",
|
|||
|
" <th colspan=\"2\" halign=\"left\">原料特征</th>\n",
|
|||
|
" <th colspan=\"2\" halign=\"left\">热处理条件</th>\n",
|
|||
|
" <th colspan=\"3\" halign=\"left\">第一次热处理</th>\n",
|
|||
|
" <th colspan=\"2\" halign=\"left\">第二次热处理</th>\n",
|
|||
|
" <th>...</th>\n",
|
|||
|
" <th>模板剂</th>\n",
|
|||
|
" <th colspan=\"2\" halign=\"left\">活化剂</th>\n",
|
|||
|
" <th>混合方式</th>\n",
|
|||
|
" <th colspan=\"5\" halign=\"left\">碳材料结构特征</th>\n",
|
|||
|
" <th>参考文献</th>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\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>温度</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>平均孔径.1</th>\n",
|
|||
|
" <th>Unnamed: 25_level_1</th>\n",
|
|||
|
" </tr>\n",
|
|||
|
" </thead>\n",
|
|||
|
" <tbody>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>0</th>\n",
|
|||
|
" <td>煤沥青</td>\n",
|
|||
|
" <td>否</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>1</td>\n",
|
|||
|
" <td>否</td>\n",
|
|||
|
" <td>500</td>\n",
|
|||
|
" <td>5</td>\n",
|
|||
|
" <td>2</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>1.0</td>\n",
|
|||
|
" <td>是</td>\n",
|
|||
|
" <td>1.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",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>姜宇晨 硬模板法制备煤焦油沥青基多孔碳及其超电性能研究</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>1</th>\n",
|
|||
|
" <td>煤沥青</td>\n",
|
|||
|
" <td>否</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>1</td>\n",
|
|||
|
" <td>否</td>\n",
|
|||
|
" <td>600</td>\n",
|
|||
|
" <td>5</td>\n",
|
|||
|
" <td>2</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>1.0</td>\n",
|
|||
|
" <td>是</td>\n",
|
|||
|
" <td>0.5</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",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>2</th>\n",
|
|||
|
" <td>煤沥青</td>\n",
|
|||
|
" <td>否</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>1</td>\n",
|
|||
|
" <td>否</td>\n",
|
|||
|
" <td>600</td>\n",
|
|||
|
" <td>5</td>\n",
|
|||
|
" <td>2</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>1.0</td>\n",
|
|||
|
" <td>是</td>\n",
|
|||
|
" <td>1.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",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>3</th>\n",
|
|||
|
" <td>煤沥青</td>\n",
|
|||
|
" <td>否</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>1</td>\n",
|
|||
|
" <td>否</td>\n",
|
|||
|
" <td>600</td>\n",
|
|||
|
" <td>5</td>\n",
|
|||
|
" <td>2</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>1.0</td>\n",
|
|||
|
" <td>是</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",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>4</th>\n",
|
|||
|
" <td>煤沥青</td>\n",
|
|||
|
" <td>否</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>2</td>\n",
|
|||
|
" <td>否</td>\n",
|
|||
|
" <td>500</td>\n",
|
|||
|
" <td>5</td>\n",
|
|||
|
" <td>2</td>\n",
|
|||
|
" <td>600.0</td>\n",
|
|||
|
" <td>5.0</td>\n",
|
|||
|
" <td>...</td>\n",
|
|||
|
" <td>1.0</td>\n",
|
|||
|
" <td>是</td>\n",
|
|||
|
" <td>1.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",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" <td>NaN</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" </tbody>\n",
|
|||
|
"</table>\n",
|
|||
|
"<p>5 rows × 26 columns</p>\n",
|
|||
|
"</div>"
|
|||
|
],
|
|||
|
"text/plain": [
|
|||
|
" Unnamed: 0_level_0 原料特征 热处理条件 第一次热处理 第二次热处理 \\\n",
|
|||
|
" 原料 是否预处理 软化点 热处理次数 是否是中温停留 温度 升温速率 保留时间 温度 升温速率· \n",
|
|||
|
"0 煤沥青 否 NaN 1 否 500 5 2 NaN NaN \n",
|
|||
|
"1 煤沥青 否 NaN 1 否 600 5 2 NaN NaN \n",
|
|||
|
"2 煤沥青 否 NaN 1 否 600 5 2 NaN NaN \n",
|
|||
|
"3 煤沥青 否 NaN 1 否 600 5 2 NaN NaN \n",
|
|||
|
"4 煤沥青 否 NaN 2 否 500 5 2 600.0 5.0 \n",
|
|||
|
"\n",
|
|||
|
" ... 模板剂 活化剂 混合方式 碳材料结构特征 \\\n",
|
|||
|
" ... 与沥青比例 是否KOH活化 比例 混合方式 比表面积 总孔体积 微孔体积 平均孔径 平均孔径.1 \n",
|
|||
|
"0 ... 1.0 是 1.0 溶剂 908.07 0.40 0.34 1.75 NaN \n",
|
|||
|
"1 ... 1.0 是 0.5 溶剂 953.95 0.66 0.35 2.76 NaN \n",
|
|||
|
"2 ... 1.0 是 1.0 溶剂 1388.62 0.61 0.53 1.77 NaN \n",
|
|||
|
"3 ... 1.0 是 2.0 溶剂 1444.63 0.59 0.55 1.62 NaN \n",
|
|||
|
"4 ... 1.0 是 1.0 溶剂 1020.99 0.45 0.35 1.77 NaN \n",
|
|||
|
"\n",
|
|||
|
" 参考文献 \n",
|
|||
|
" Unnamed: 25_level_1 \n",
|
|||
|
"0 姜宇晨 硬模板法制备煤焦油沥青基多孔碳及其超电性能研究 \n",
|
|||
|
"1 NaN \n",
|
|||
|
"2 NaN \n",
|
|||
|
"3 NaN \n",
|
|||
|
"4 NaN \n",
|
|||
|
"\n",
|
|||
|
"[5 rows x 26 columns]"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 2,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"data = pd.read_excel('./data/20240102/20231227.xlsx', header=[0, 1])\n",
|
|||
|
"data.head()"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 3,
|
|||
|
"id": "b1a0903a-596f-4d6f-98b1-a668a26f4175",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/plain": [
|
|||
|
"(149, 26)"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 3,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"data.shape"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 4,
|
|||
|
"id": "8b113a99-8c56-455c-9ee8-3ac32a686e24",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"data.columns = ['-'.join([y for y in x if 'Unnamed' not in y]) for x in data.columns]"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 5,
|
|||
|
"id": "e134c799-b11c-46c8-898d-ac1d9e47e527",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"ignore_cols = data.columns[:3].tolist() + data.columns[-2:].tolist()\n",
|
|||
|
"data.drop(columns=ignore_cols, inplace=True)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 6,
|
|||
|
"id": "359c9cc6-2694-46a6-9f18-6361e220542a",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/plain": [
|
|||
|
"Index(['热处理条件-热处理次数', '热处理条件-是否是中温停留', '第一次热处理-温度', '第一次热处理-升温速率',\n",
|
|||
|
" '第一次热处理-保留时间', '第二次热处理-温度', '第二次热处理-升温速率·', '第二次热处理-保留时间',\n",
|
|||
|
" '共碳化-是否是共碳化物质', '共碳化-种类', '共碳化-共碳化物质/沥青', '模板剂-模板剂制备方式', '模板剂-种类',\n",
|
|||
|
" '模板剂-与沥青比例', '活化剂-是否KOH活化', '活化剂-比例', '混合方式-混合方式', '碳材料结构特征-比表面积',\n",
|
|||
|
" '碳材料结构特征-总孔体积', '碳材料结构特征-微孔体积', '碳材料结构特征-平均孔径'],\n",
|
|||
|
" dtype='object')"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 6,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"data.columns"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 7,
|
|||
|
"id": "6cc22ecb-1070-4e63-a496-efc838094958",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"from sklearn.preprocessing import LabelEncoder\n",
|
|||
|
"encoder = LabelEncoder()\n",
|
|||
|
"for col in ['热处理条件-热处理次数', '热处理条件-是否是中温停留', '共碳化-是否是共碳化物质', '活化剂-是否KOH活化', '混合方式-混合方式']:\n",
|
|||
|
" encoded_labels = encoder.fit_transform(data[col])\n",
|
|||
|
" data[col] = encoded_labels"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 8,
|
|||
|
"id": "24f58281-9f13-49ef-b44d-81d0644d6976",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"object_cols = ['共碳化-种类', '模板剂-模板剂制备方式', '模板剂-种类']"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 9,
|
|||
|
"id": "3368163e-85a1-4487-8078-be51cb5fb560",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"data = pd.get_dummies(data, columns=object_cols)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 10,
|
|||
|
"id": "92d5da6b-f714-4a78-9aa7-7cf9dff1d0a0",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"out_cols = [x for x in data.columns if '碳材料结构特征' in x]\n",
|
|||
|
"feature_cols = [x for x in data.columns if x not in out_cols]"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 11,
|
|||
|
"id": "e4946bd7-ae94-4981-82ed-66e2b496e035",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"train_data = data.reset_index(drop=True)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 12,
|
|||
|
"id": "e545ccba-07b2-4c49-bd48-f49b3892fafc",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"text/plain": [
|
|||
|
"(149, 42)"
|
|||
|
]
|
|||
|
},
|
|||
|
"execution_count": 12,
|
|||
|
"metadata": {},
|
|||
|
"output_type": "execute_result"
|
|||
|
}
|
|||
|
],
|
|||
|
"source": [
|
|||
|
"train_data.shape"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"cell_type": "code",
|
|||
|
"execution_count": 14,
|
|||
|
"id": "f786afc1-d805-4dcd-a4b4-8170f87fbc23",
|
|||
|
"metadata": {},
|
|||
|
"outputs": [],
|
|||
|
"source": [
|
|||
|
"train_data.to_csv('./train_data.csv', index=False)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"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=10, shuffle=True, random_state=42)"
|
|||
|
]
|
|||
|
},
|
|||
|
{
|
|||
|
"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\": 15,\n",
|
|||
|
" \"eta\": 0.05,\n",
|
|||
|
" \"gamma\": 0,\n",
|
|||
|
" \"lambda\": 1,\n",
|
|||
|
" \"alpha\": 0,\n",
|
|||
|
" \"colsample_bytree\": 0.8,}\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": [
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "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
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 1200x800 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9QAAAKoCAYAAACWQ7eKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOydeZwcdZ3+n6rq6nOuJOSYEI6AgMRwiBIUUVBxCUpAcT1wWfFANMouLB6IF0REwGPFVURBVlT4KSrIIWwAOVRcMLpcxnCTkEAmd2a6Z/qs4/fHt77V1edUz3RXT3c/79crr57uru6u6c5U1/N9ns/no9i2bYMQQgghhBBCCCENobZ7BwghhBBCCCGEkE6EgpoQQgghhBBCCJkCFNSEEEIIIYQQQsgUoKAmhBBCCCGEEEKmAAU1IYQQQgghhBAyBSioCSGEEEIIIYSQKUBBTQghhBBCCCGETAEKakIIIYQQQgghZApQUBNCCJkxbNy4ES+99FK7d4N0CLt378a2bdvavRuEEEJ6GApqQgghbeWKK67A//7v/wIAvvrVr+Jb3/oWAOCJJ57Au9/97ortv/SlL+GCCy6o+XwPPfQQXve612Hr1q01t7nrrruwY8eOmvdPTEzgqaeegmVZVe//0Y9+hF27dlW975vf/CY+97nP1XxuADAMA9/61rfwwgsvlNx+5ZVX4p577qn7WC/RaBQ33XRTxe3XX3899txzz0kff/PNN+M73/kOstms79dsFpZlIZfLTes5LrjgApx00kmTbrdhw4aK9xoA1qxZgxtvvLHh17Vtu+HHEEII6U5C7d4BQgghvcEJJ5wAy7KgaRps20ahUMBnPvMZ3H333Zg7dy6OPvpohMNhhMNhAEA6ncbf/va3iud58cUXYZpmzddJp9P4y1/+gkgkUnObU089Fb/73e/w5je/uer9Dz/8MI4//njkcjl3fyTPPfccPvGJT2DLli248MILKx67YcMGvPzyyzVfW/LZz34Wr371q7HffvsBAEzTxKpVq/DRj34Ub3vb2yZ9PABomoaBgQEAQqAahoFwOIz+/n6EQuIr3rZtZLNZhMNhaJrmPjadTuOzn/0swuEwPvKRj+DZZ5+Fqqol20hs20Y+n8fee++NWbNm+do3ydatW3HyySfjxz/+MQ455BD39kcffRQnnXQSbr75Zrz+9a+veNyOHTswMjICXderPu/ChQsRjUbrfs6Sn/zkJ/jud7+Ll156CX19fe7tDzzwAH73u9/hfe97X93HZzIZrF27Fv/7v/+L22+/HQcccAD+67/+CxMTE1W37+vrc99/Qggh3Q2P9oQQQgLh7LPPxvr16/HpT38at956KwzDwJIlS6BpmiviVFWFqorwlKZpVcVUJBKBYRg1X0cKYCk0JV/4whdgGAa+8Y1vQNd16LqOO+64Az/72c9w1VVX4ROf+AT+67/+CwsWLHCfo1xMA8BVV12FAw880HXJc7kctmzZgnA4DEVRkM/nYRgGtmzZAgDI5/OwbRv77LOP+xyhUKjk9waAe++9F8lkEuedd17d9/H3v/89rrzySvzyl7+EruuIxWIAgBdeeAEHHHBAybaKorg/33///TjuuOPc6//2b/+GHTt2YM2aNRgcHMSKFSuwY8cOaJoGRVEwNjaGeDwOXddhWRYKhQKuv/76qqmBesybNw977703Tj75ZDz22GMYHBwEANx+++2IxWJ47WtfW/Vxd9xxB1auXFnxGYyNjQEQLnz5e1iL1atX44Mf/GCJmAbE51BLsANCcP/Lv/wLRkZGoKoq9t13X3zoQx/C0UcfjZtvvhnvf//7a+7729/+9kn3ixBCSOdDQU0IISQQVqxYgV//+tdYvHhxidjIZDI47bTTcNppp7m3XX755QDgxpZN03RdVkk+n4dpmlAUBeFw2BXiUkTato1MJgNN0xAOh3HsscfipJNOwkc/+lEAwtH96le/ine84x3o7+9HJpPBm970Jvzxj38sEaJeRkZG8KMf/Qi/+MUvEA6Hce211+LAAw/Em970JmiahlAoBMMwYNs29t13X3c/99tvPzz33HMYHx/Hyy+/7P4emzdvxrp16/DKV74SP/7xjxGNRvGv//qvVV/76quvxt57741169bh2WefrXBm9913X2zevBnRaBR33303PvvZz+KJJ54AIES/FLIA8OUvfxk/+clPcMstt+Cggw4CIJx1L4qi4Ec/+hFOP/30qvvjF0VRcO211+Itb3kLXn75ZXc/brjhBpx//vk1Be0ZZ5yBM844w71u2zbOPfdc/OAHP8D555+P97znPXj00Ucnff0nnngCa9aswX/9139h+/bt0DTN/b+Sy+VgmiZGR0fd7U3TRDQaRSKRwDHHHIM77rgDixcvxsUXX4wdO3bgS1/6EgDg1ltvxT777FPxvoVCIUSj0UbeIkIIIR0MBTUhhJDAePTRR3HkkUeW3Pb73/8eADA0NIQ///nPeNWrXlXxuPvvv78iBv3Tn/4U73jHO2AYBu66666Kx8jI7aWXXorPf/7zOOGEE/DWt77Vrdf+7W9/i2Qyic9//vPQdR2//vWv8U//9E844YQT8J3vfKfi+WzbxsqVK7Fs2TKsWLEC999/P84880xcccUVMAzDdUrPPfdcvPTSS/jNb37jPlY66n/5y19w4oknIhQKwTRNnHnmmSgUCnj44Ydx880346tf/Spmz55d8rqbN2/GxRdf7Ir8devWwTRNXHTRRchms7jmmmtw11134eKLL8bw8DAAIJFIQFVVDA0NVfwet9xyC772ta/hkksuwQknnICVK1di1apVmDdvXsW20+Whhx7C0Ucf7V4v/2w/8YlP4BOf+ATmzJlTt6bdNE187GMfwy233IIHHngAb3jDG3zvww9/+EMAwFFHHYVXvvKVePrppyu2KY+xX3PNNTjzzDNhGAYOPvjgEtEvyxWkKK9GvfsIIYR0FxTUhBBCAuOWW27Bq171Kvzwhz+Epmk444wzYFkWUqkUxsbG3HpiiXShjz76aDz33HMIh8N43eteh2OOOcaNbiuK4tZmG4aBZcuWYWRkBC+99BJyuZwrKp955hl8+9vfRiwWg2VZOProo/Ge97wHu3fvRjweh2ma+O1vf4v/+7//qxr1/tGPfoRbb70Vb3zjG3HaaadhzZo1OP744/Hv//7vyOfzsCyrwm21LAuZTAaJRAIA8Na3vhX5fB7XXHMNzjrrLNx555047rjj8M53vhMrVqzAueeei3g8XvIcTzzxBC6++GI3rvzII4/AMAysXr0ahmFgzZo1WL9+PXbu3IlCoYBoNIqJiQlYluU6r5ZlIZ1OY3h4GO985ztx00034dRTT8UVV1yBH/7wh3jb296GU089tRkfcQnSRa/XxOv666+ftInbt7/9bdx666344x//iKVLl/p+/ZGREVx33XXu9cceewyRSASKouCII45AMpmEZVnYuXMntm7dimg06iYMALE48qMf/ajkOX/6058CEKKbEEIIoaAmhBASCGvWrMGTTz6JaDSKVCqFP//5z9i5c2dJx+5yMQkAxx57LB544AHsv//++L//+z9s3rwZsVgMCxYsqIg9//SnP3Vrl8u7XL/rXe/C888/D03TkE6n8eEPfxiWZeHcc89FLpfDPffcg9WrV+Of/umf8OCDD1bsx2te8xqcddZZOOyww3DPPfdg27ZtuP/++6EoCs4555wK4eWNjZcLyl//+tfuz8lkEnvuuSf+7d/+Deeddx42bNiAO++803U55WPD4TDS6TQef/xxPPjggzjyyCMxNDSEa665BscccwzOPPNMXHvttSWvU+68btq0CYsWLcKpp56KF154AV/+8pfxla98BaeeeiqeffZZ/OEPf8AZZ5xRsTBQKBSQyWTQ398PAHWbwnmbcdWrT/Yy2XbJZBIHHHCAK6YNw/DV9OsLX/gC9thjD2zatAkA3Cj2c889h0cffRQrV67EM888g2g0ittuuw3vfe97S573i1/8Iv793/8duq7jyCOPxPHHH4/LL78c+Xy+qtNNCCGk92AmiRBCSCBcfPHFAIAPfvCDuOyyy6D
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 1200x800 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
},
|
|||
|
{
|
|||
|
"data": {
|
|||
|
"image/png": "iVBORw0KGgoAAAANSUhEUgAAA9QAAAKoCAYAAACWQ7eKAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjcuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy88F64QAAAACXBIWXMAAA9hAAAPYQGoP6dpAAEAAElEQVR4nOydeZwcZbn9T3X1Nvtksk72sCeExQgBWWSXcCGIuHv5sSioURSuCIheDQEUUVRckU1REgEVDUQwbKKgFwyYEBjCGhJCkkkmmX3ptbp+f7z1Vld3V6/TXb2d7+eTz8x013RXerqr6rznPM+j6LqugxBCCCGEEEIIIXnhKvcOEEIIIYQQQggh1QgFNSGEEEIIIYQQUgAU1IQQQgghhBBCSAFQUBNCCCGEEEIIIQVAQU0IIYQQQgghhBQABTUhhBBCCCGEEFIAFNSEEEIIIYQQQkgBUFATQgghhBBCCCEFQEFNCCGkYti2bRu2b99e7t0gVUJ/fz96enrKvRuEEELqGApqQgghZeWWW27B//3f/wEArrvuOtx8880AgJdeegkf/vCHU7b/3//9X1xzzTVpH+/ZZ5/F0Ucfjd27d6fd5tFHH8XevXvT3j86OorXXnsNsVjM9v7bbrsNfX19tvd9//vfx1VXXZX2sQEgGo3i5ptvxttvv51w+89//nM8/vjjGX/Xit/vxwMPPJBy+8qVKzFjxoysv/+nP/0JP/rRjxAMBnN+znwYGxvDPffcY/781ltv4Yc//GHCNnfddRd+/vOfF/T411xzDc4666ys223dujXltQaAdevW4f7778/7eXVdz/t3CCGE1Cbucu8AIYSQ+uD0009HLBaDqqrQdR2RSARf/epX8dhjj2Hy5Mk45phj4PV64fV6AQgx9sILL6Q8zjvvvANN09I+z9jYGP7973/D5/Ol3ebcc8/FX/7yF5x00km29z/33HM49dRTEQqFzP2RvPXWW/j85z+PXbt2Yfny5Sm/u3XrVuzYsSPtc0uuvPJKvOc978E+++wDANA0DStWrMBnPvMZnHbaaVl/HwBUVUVraysAIBaLIRqNwuv1oqWlBW63OMXruo5gMAiv1wtVVc3fHRsbw5VXXgmv14tPf/rTePPNN+FyuRK2kei6jnA4jNmzZ2PChAk57RsAfPvb38b999+PU045Bbt378bo6CjuvfdefP7zn8dbb72FQw89FGvXrsXUqVNTfnfv3r3o7u6Gx+Oxfezp06fD7/dn/DtLfv3rX+PHP/4xtm/fjubmZvP2v//97/jLX/6Cj3/84xl/PxAIoKurC//3f/+HNWvWYP/998dPfvITjI6O2m7f3Nxsvv6EEEJqGx7tCSGEOMKll16KLVu24IorrsCDDz6IaDSKBQsWQFVVU8S5XC64XCI8paqqrZjy+XyIRqNpn0cKYCk0JV//+tcRjUbxve99Dx6PBx6PBw8//DB++9vf4tZbb8XnP/95/OQnP8G0adPMx0gW0wBw66234oADDjBd8lAohF27dsHr9UJRFITDYUSjUezatQsAEA6Hoes65syZYz6G2+1O+H8DwJNPPomhoSF85Stfyfg6PvHEE/j5z3+O++67Dx6PBw0NDQCAt99+G/vvv3/CtoqimN8/9dRTOPHEE82fv/SlL2Hv3r1Yt24d2trasHTpUuzduxeqqkJRFAwODqKxsREejwexWAyRSAQrV660TQ3Y8eijj+KWW27B008/jddeew2XXHIJfve738HtduPtt9/GhRdeiPXr12P9+vW44YYbUn7/4YcfxrJly1L+BoODgwCEC5/8GqZj7dq1OP/88xPENCD+DukEOyAE93//93+ju7sbLpcLc+fOxYUXXohjjjkGf/rTn/CJT3zC9vcefvhh/Nd//VfW/SKEEFL9UFATQghxhKVLl+IPf/gD5s2blyA2AoEAPvnJT+KTn/ykedtNN90EAGZsWdM002WVhMNhaJoGRVHg9XpNIS5FpK7rCAQCUFUVXq8XJ5xwAs466yx85jOfASAc3euuuw5nnnkmWlpaEAgE8P73vx9PP/10ghC10t3djdtuuw333nsvvF4v7rrrLhxwwAF4//vfD1VV4Xa7EY1Goes65s6da+7nPvvsg7feegsjIyPYsWOH+f/YuXMnNm3ahIMOOgh33nkn/H4//t//+3+2z3377bdj9uzZ2LRpE958880UZ3bu3LnYuXMn/H4/HnvsMVx55ZV46aWXAAjR39bWZm77zW9+E7/+9a+xevVqHHjggQCEs25FURTcdtttOO+882z3JxObNm3CRz7yEdxyyy1YuHAh/vOf/8Dn85kOuFzQ2LVrF95++20cdthhAIBIJAJN0+D3+3HBBRfgggsuMB9T13Vcfvnl+MUvfoGrr74aH/3oR7Fhw4as+/LSSy9h3bp1+MlPfoI9e/ZAVVXzvRIKhaBpGgYGBszt5fM3NTXhuOOOw8MPP4x58+bh+uuvx969e/G///u/AIAHH3wQc+bMSXnd3G43/H5/3q8ZIYSQ6oSCmhBCiGNs2LABRx55ZMJtTzzxBACgvb0d//rXv3DwwQen/N5TTz2VEoP+zW9+gzPPPBPRaBSPPvpoyu/IyO2NN96Ir33tazj99NNxyimnmPXaf/7znzE0NISvfe1r8Hg8+MMf/oAPfOADOP300/GjH/0o5fF0XceyZcuwePFiLF26FE899RQuvvhi3HLLLYhGo6ZTevnll2P79u344x//aP6udNT//e9/44wzzoDb7Yamabj44osRiUTw3HPP4U9/+hOuu+46dHR0JDzvzp07cf3115sif9OmTdA0Dddeey2CwSDuuOMOPProo7j++uvR2dkJAGhqaoLL5UJ7e3vK/2P16tW44YYb8O1vfxunn346li1bhhUrVmDKlCkp2xbKgQceiLvuugsf+9jHcM455+CQQw7B2NgYnn/+eQwODuL5559HOBzGX/7yF6iqimOOOQajo6NQVRVXXHEFvv3tbyc8nqZpuOSSS7B69Wr8/e9/x7HHHpvzvvzyl78EABx11FE46KCD8Prrr6dskxxjv+OOO3DxxRcjGo1i/vz5CS62LFeQotyOTPcRQgipLSioCSGEOMbq1atx8MEH45e//CVUVcUFF1yAWCyG4eFhDA4OmvXEEulCH3PMMXjrrbfg9Xpx9NFH47jjjjOj24qimLXZ0WgUixcvRnd3N7Zv345QKGSKyjfeeAM/+MEP0NDQgFgshmOOOQYf/ehH0d/fj8bGRmiahj//+c/4z3/+Yxv1vu222/Dggw/i+OOPxyc/+UmsW7cOp556Kr785S8jHA4jFoulxIdjsRgCgQCampoAAKeccgrC4TDuuOMOfPazn8UjjzyCE088Eeeccw6WLl2Kyy+/HI2NjQmP8dJLL+H6668348rr169HNBrF2rVrEY1GsW7dOmzZsgW9vb2IRCLw+/0YHR1FLBYznddYLIaxsTF0dnbinHPOwQMPPIBzzz0Xt9xyC375y1/itNNOw7nnnluMPzEAEdf/2Mc+hmeeeQZ79uzBf//3f2PfffcFAFxxxRWIRqNYvnw5br/9dixfvhzf/OY3ccYZZ+Diiy+2jZT/4Ac/wIMPPoinn34aCxcuzHk/uru7cffdd5s/v/jii/D5fFAUBYsWLcLQ0BBisRh6e3uxe/du+P1+M2EAiMWR2267LeExf/Ob3wAQopsQQgihoCaEEOII69atw6uvvgq/34/h4WH861//Qm9vb0LH7mQxCQAnnHAC/v73v2PffffFf/7zH+zcuRMNDQ2YNm1aSuz5N7/5jVm7nNzl+kMf+hA2b94MVVUxNjaGiy66CLFYDJdffjlCoRAef/xxrF27Fh/4wAfwz3/+M2U/3vve9+Kzn/0sDjvsMDz++OPo6enBU089BUVRcNlll6UIL2tsPLkr9B/+8Afz+6GhIcyYMQNf+tKX8JWvfAVbt27FI488Yrqc8ne9Xi/GxsawceNG/POf/8SRRx6J9vZ23HHHHTjuuONw8cUX46677kp4nmTn9d1338XMmTNx7rnn4u2338Y3v/lNfOtb38K5556LN998E//4xz9wwQU
|
|||
|
"text/plain": [
|
|||
|
"<Figure size 1200x800 with 1 Axes>"
|
|||
|
]
|
|||
|
},
|
|||
|
"metadata": {},
|
|||
|
"output_type": "display_data"
|
|||
|
},
|
|||
|
{
|
|||
|
"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], np.log1p(train[col])\n",
|
|||
|
" X_valid, Y_valid = valid[feature_cols], np.log1p(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=50, verbose_eval=False)\n",
|
|||
|
" y_pred = np.expm1(gb_model.predict(xgb.DMatrix(X_valid)))\n",
|
|||
|
" y_true = np.expm1(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": "dcce8331-256f-4e22-8ac5-f07dca12f3cf",
|
|||
|
"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>333217.197067</td>\n",
|
|||
|
" <td>545.874683</td>\n",
|
|||
|
" <td>419.177758</td>\n",
|
|||
|
" <td>0.602743</td>\n",
|
|||
|
" <td>0.369714</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>碳材料结构特征-总孔体积</th>\n",
|
|||
|
" <td>0.115585</td>\n",
|
|||
|
" <td>0.326015</td>\n",
|
|||
|
" <td>0.260617</td>\n",
|
|||
|
" <td>0.855863</td>\n",
|
|||
|
" <td>0.426921</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>碳材料结构特征-微孔体积</th>\n",
|
|||
|
" <td>0.047409</td>\n",
|
|||
|
" <td>0.216009</td>\n",
|
|||
|
" <td>0.172998</td>\n",
|
|||
|
" <td>2.598594</td>\n",
|
|||
|
" <td>0.487892</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" <tr>\n",
|
|||
|
" <th>碳材料结构特征-平均孔径</th>\n",
|
|||
|
" <td>0.675843</td>\n",
|
|||
|
" <td>0.763879</td>\n",
|
|||
|
" <td>0.509585</td>\n",
|
|||
|
" <td>0.172561</td>\n",
|
|||
|
" <td>0.307433</td>\n",
|
|||
|
" </tr>\n",
|
|||
|
" </tbody>\n",
|
|||
|
"</table>\n",
|
|||
|
"</div>"
|
|||
|
],
|
|||
|
"text/plain": [
|
|||
|
" MSE RMSE MAE MAPE R2\n",
|
|||
|
"碳材料结构特征-比表面积 333217.197067 545.874683 419.177758 0.602743 0.369714\n",
|
|||
|
"碳材料结构特征-总孔体积 0.115585 0.326015 0.260617 0.855863 0.426921\n",
|
|||
|
"碳材料结构特征-微孔体积 0.047409 0.216009 0.172998 2.598594 0.487892\n",
|
|||
|
"碳材料结构特征-平均孔径 0.675843 0.763879 0.509585 0.172561 0.307433"
|
|||
|
]
|
|||
|
},
|
|||
|
"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": "7ea3c810-754a-484b-b14e-e4fe571386b8",
|
|||
|
"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.8.16"
|
|||
|
}
|
|||
|
},
|
|||
|
"nbformat": 4,
|
|||
|
"nbformat_minor": 5
|
|||
|
}
|