# 多孔碳储锂材料高通量筛选系统 **Repository Path**: fitz_gitee/HTS_PCLSM ## Basic Information - **Project Name**: 多孔碳储锂材料高通量筛选系统 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-03-31 - **Last Updated**: 2025-04-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 多孔碳储锂材料高通量筛选系统 **依赖库:pymatgen, pandas, sklearn, xgboost, shap, mp-api, robocrys** ## 一、项目简介 **项目目标:** 开发基于机器学习与材料基因组学的多孔碳基锂电负极材料高通量筛选平台,结合Materials Project数据库与深度学习模型,实现材料性能预测与结构优化。 **核心技术:** 多尺度特征工程:融合材料化学组成、晶体对称性、弹性模量等多维度特征 双模型协同预测: 随机森林回归模型(体积模量预测,R²) 、XGBoost分类模型(储锂适用性判定,F1-score) ​可解释性分析:SHAP值可视化特征贡献度 **应用场景:** 锂离子电池负极材料开发 钠/钾离子电池电极材料设计 多孔碳基储能材料优化 ## 二、功能模块 ### 1、数据获取模块 **·Materials Project集成** 支持API key认证 自动过滤低稳定性材料(能量高于Hull>0.2 eV) 提取200+种材料属性(带隙、弹性模量、形成能等) ### 2、特征工程模块 **·自动化特征构建:** ```python # 示例:元素组成特征提取 df["contains_N"] = df["formula"].apply(lambda x: 'N' in Composition(x).elements) ``` **·高级特征转换:** 弹性模量比值(KVRH/GVRH) 带隙类型编码(金属/半导体/绝缘体) ### 3、机器学习模块 **·双模型架构** python ``` class DualPredictor: def __init__(self): self.reg_model = RandomForestRegressor(...) # 体积模量预测 self.clf_model = XGBClassifier(...) # 适用性分类 ``` **·超参数优化:** 随机森林:n_estimators=180, max_depth=10 XGBoost:learning_rate=0.08, max_depth=6 ### 4、可解释性分析 **·SHAP摘要图:** python ``` shap.summary_plot(shap_values, X_test, plot_type="bar") ``` **·特征重要性排序** Top 5特征:比表面积、带隙类型、弹性模量比、晶体对称性、氮掺杂量 ## 三、使用指南 ### 1、环境配置 ```bash pip install pymatgen pandas scikit-learn xgboost shap matminer mp-api ``` ### 2、快速入门 ```python from mp_api.client import MPRester # 获取材料数据 mpr = MPRester("YOUR_API_KEY") docs = mpr.materials.search(criteria={"elements": "C"}, properties=["formula", "density"]) # 特征工程 df = feature_engineering(docs) X, y = df.drop("formula", axis=1), df["density"] # 模型预测 reg_pred, clf_pred = predictor.predict(X) ``` ### 3、扩展应用 ``` # 钠离子电池负极预测(可修改特征权重) na_features = X.copy() na_features["anode_factor"] = na_features["volume"] * na_features["modulus_ratio"] na_pred = reg_model.predict(na_features) ``` ## 四、技术文档 ### 1、材料学原理 #### 1.1、孔隙结构优化 **·扩散动力学公式:** ![输入图片说明](%7DSHTQ101LBY~AUBMO8Z%5DRUO.png) **赝电容贡献** 氮掺杂碳的赝电容行为符合以下模型: ![输入图片说明](NH%7DH_$D9HP(Q1%60W)RR1UJKN.png) #### 1.2、界面稳定性设计 **·碳包浮层应力模型** \sigma(r) = \frac{E \cdot \Delta V}{(1-\nu) \cdot (r_{\text{Si}} + t_{\text{C}})}} \cdot \left(1 - \frac{r_{\text{Si}}}{r}\right) (E:杨氏模量;ν:泊松比) **·界面钝化机制:** SEI膜电阻与锂化深度的关系: ![输入图片说明](5%25%5BH~%255I$@I9OA7FQCTH$%7DI.png) ### 2、机器学习特征工程 #### 2.1关键特征设计 ![输入图片说明](P%60X~HGF%60L_KW00HTP5M)V_8.png) #### 2.2 特征重要性排序(SHAP分析) ```python # SHAP特征重要性可视化 import shap shap.summary_plot(shap_values, X_test, plot_type="bar") ``` ### 3、高通量筛选流程 #### 3.1 技术路线 ```meimaid graph TD A[数据获取] --> B[特征工程] B --> C{机器学习} C --> D[回归模型] C --> E[分类模型] D --> F[稳定性预测] E --> G[适用性筛选] F & G --> H[材料库更新] ``` ## 五、代码模块化实现 #### 1.数据获取模块 ```python # Materials Project API集成 from mp_api.client import MPRester def fetch_carbon_materials(api_key): """ 获取碳基材料数据(>2025年API标准) """ with MPRester(api_key) as mpr: query = { "elements": {"$in": ["C"], "$all": ["C"]}, "nelements": {"$lte": 4, "$gte": 2}, "energy_above_hull": {"$lte": 0.2}, "is_stable": True, "has_elasticity": True, "num_sites": {"$gt": 100} # 排除低比表面积材料 } fields = [ "material_id", "formula_pretty", "density", "elasticity.elastic_tensor", "band_gap", "formation_energy_per_atom", "symmetry" ] docs = mpr.materials.search( criteria=query, fields=fields, chunk_size=1000 ) data = [] for doc in docs: try: crystal_sys = doc.symmetry.crystal_system if doc.symmetry else "Unknown" k_vrh = doc.elasticity.k_vrh g_vrh = doc.elasticity.g_vrh data.append({ "material_id": doc.material_id, "formula": doc.formula_pretty, "density": doc.density, "band_gap": doc.band_gap, "formation_energy": doc.formation_energy_per_atom, "crystal_system": crystal_sys, "k_vrh": k_vrh, "g_vrh": g_vrh }) except Exception as e: print(f"跳过异常材料: {doc.material_id} ({str(e)})") return pd.DataFrame(data) ``` ### 2.特征工程模块 ```python # 高级特征工程 def advanced_feature_engineering(df): """ 构建多尺度特征矩阵 """ # 元素组成特征 df["contains_N"] = df["formula"].apply(lambda x: "N" in Composition(x).elements) df["contains_S"] = df["formula"].apply(lambda x: "S" in Composition(x).elements) # 结构对称性编码 symmetry_encoder = { "cubic": [1,0,0,0], "hexagonal": [0,1,0,0], "tetragonal": [0,0,1,0], "orthorhombic": [0,0,0,1], "monoclinic": [0,0,0,0], "triclinic": [0,0,0,0] } df = pd.concat([ df, pd.DataFrame(df["crystal_system"].map(symmetry_encoder).tolist(), columns=["cubic", "hexagonal", "tetragonal", "orthorhombic"]) ], axis=1) # 弹性模量比值 df["modulus_ratio"] = df["k_vrh"] / (df["g_vrh"] + 1e-6) # 带隙分类 df["band_gap_type"] = pd.cut( df["band_gap"], bins=[-0.1, 0.5, 1.5, 3.0, float("inf")], labels=["Metal", "Semi-metal", "Semiconductor", "Insulator"] ) # 文本特征提取 df["formula_complexity"] = df["formula"].apply(lambda x: len(Composition(x).formula)) return df ``` ### 3.机器学习模块 ```python # 双模型协同预测 class DualPredictor: def __init__(self): # 回归模型(体积模量预测) self.reg_model = RandomForestRegressor( n_estimators=180, max_depth=10, min_samples_split=5, random_state=42 ) # 分类模型(储锂适用性判定) self.clf_model = XGBClassifier( n_estimators=120, learning_rate=0.08, max_depth=6, subsample=0.8, objective="binary:logistic", random_state=42 ) def train(self, X_reg, y_reg, X_clf, y_clf): """联合训练流程""" self.reg_model.fit(X_reg, y_reg) self.clf_model.fit(X_clf, y_clf) def predict(self, X): """批量预测""" reg_pred = self.reg_model.predict(X) clf_pred = self.clf_model.predict_proba(X)[:,1] > 0.7 return reg_pred, clf_pred.astype(int) ``` ### 4.可解释性分析模块 ```python # SHAP交互式分析 def interactive_shap_explainer(model, X, feature_names): """ 生成交互式SHAP摘要图 """ explainer = shap.TreeExplainer(model) shap_values = explainer.shap_values(X) shap.summary_plot( shap_values, X, feature_names=feature_names, plot_type="bar", show=False ) # 添加材料学注释 plt.title("储锂性能关键影响因素") plt.xlabel("SHAP值(特征贡献度)") plt.ylabel("特征名称") plt.tight_layout() plt.savefig("feature_importance.png") plt.close() ``` ## 六、数据规范 1. 手动输入数据格式 ```json "material_id": "mp-12345", "formula": "C6N4", "properties": { "density": 2.15, "volume": 150.2, "k_vrh": 120.5, "g_vrh": 55.3, "band_gap": 1.72, "formation_energy": -0.45, "crystal_system": "hexagonal" ``` 2. 输出数据格式 ```csv material_id,formula,bulk_modulus,predicted_capacity,label mp-12345,C6N4,120.5,89.2,1 mp-67890,C3N2,95.1,76.3,0 ```