import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression
import pandas as pd
abdstract
金属的d波段中心已被广泛用于根据线性Brønsted-Evans-Polanyi关系和Hammer-Nørskov d波段模型来理解金属表面催化反应中的活性趋势。在本文中,使用机器学习方法对十一种金属(Fe,Co,Ni,Cu,Ru,Rh,Pd,Ag,Ir,Pt,Au)的d波段中心及其对两种不同结构(1%金属掺杂或覆盖层覆盖的金属表面)的成对双金属中心进行了统计预测,这些方法来自现成的值作为目标金属的描述符(例如每种金属的密度和熔融焓)。使用统计交叉验证定量评估具有不同描述符数量和不同测试集/训练集比率的四种回归方法的预测准确性。结果表明,梯度提升回归(GBR)方法仅使用六个描述符可以很好地预测d波段中心,即使我们从仅给出的25%用于训练的数据中预测75%的数据(平均均方根误差(RMSE)<0.5 eV)。这证明了机器学习方法的潜在用途,与第一性原理方法相比,机器学习方法可以预测金属表面的活动趋势,CPU时间可以忽略不计。
m
introduction
催化科学的最终目标是利用金属的电子结构准确预测催化活性的趋势,从而在不进行大量试错实验的情况下,合理设计具有特殊催化性能的表面。Nørskov及其同事的d波段模型给出了对这些趋势的半定量理解,他们将d波段中心( ξ d \xi_d ξd)的能量相对于费米能级( E F E_F EF) ξ d − E F \xi_d-E_F ξd−EF,作为金属电子结构的函数。
假设过渡金属的 d 电子在化学吸附中起核心作用,他们使用密度泛函理论 (DFT) 作为解释给定吸附能趋势的指标,计算了各种金属的 d 带中心 ( ξ d − E F \xi_d-E_F ξd−EF)吸附物:d 态相对于费米能级的能量越高,反键态越空,吸附能越大(吸附质与金属表面之间的强键合)。该模型随后通过各个研究小组的实验和理论研究进行了验证。在金属表面的反应中,中间体的强结合会导致表面中毒,而弱结合会导致中间体的可用性有限.在这两种情况下,催化速率都不是最佳的(Sabatier 原理)。因此,金属的催化活性可以表现出对 d 带中心的所谓“火山型”依赖性。一些电催化和催化研究中的实验数据表明,催化活性与 d 带中心之间存在良好的相关性。
机器学习 (ML) 方法 越来越多地用于分子科学 和材料科学。在 ML 框架中,预测计算被建模为从某些输入到期望值输出的函数。有监督的 ML 方法统计推断函数,给定称为训练集的输入-输出对实例:它们从数据中归纳学习输入-输出依赖关系的基本原理。由于 ML 方法是通用的、无第一原则的,并且完全由数据驱动,因此它们广泛适用于预测各种物理特性,这些物理特性具有未知或过于复杂的数学模型。考虑到第一性原理 计算过于耗时,无法探索全部可能性,另一方面,该领域正在生成和积累大量数据,ML 方法可以提供一种快速、高精度的第一性原理模型替代方法。然而,催化中的 ML 方法处于起步阶段。
为了证明ML方法在催化中的潜在用途,我们在本文中报告了基于ML的金属和双金属化合物d带中心的预测。DFT方法、Nørskov群计算了11种金属(Fe,Co,Ni,Cu,Ru,Rh,Pd,Ag,Ir,Pt,Au)及其110种双金属的d波段中心,这些金属具有两种不同的结构(表面杂质和干净金属表面上的覆盖层).如本例所示,常规情况下,每种金属或双金属的d波段中心是由第一性原理计算的。 相比之下,本文定量研究了一种基于ML的完全数据驱动的方法,该方法从其他一些金属和双金属的d波段中心推断出金属或双金属的d波段中心。例如,从材料信息学的角度来看,诸如Cu-Co的d-band中心是否可以以某种方式从Cu,Au,Cu-Fe,Ni-Ru,Pd-Co和Rh-Pd中推断出来的问题将非常有趣。我们的结果表明,通过ML方法,使用一小组现成的金属属性作为描述符,d波段中心具有足够的可预测性。鉴于近年来各种数据的快速增长,这表明ML方法在绕过或补充第一性原理计算方面具有广阔的作用。
methods and data
dataset and descriptors
为了评估 ML 预测的准确性,我们使用 11 种金属(Fe、Co、Ni、Cu、Ru、Rh、 Pd、Ag、Ir、Pt、Au)和所有成对的双金属合金(110 对主体金属 M h M_h Mh 和客体金属 Mg)与费米能级 E F E_F EF、 ϵ d − E F \epsilon_d-E_F ϵd−EF相关的d-band中心数据。这些值是在Nørskov等人的DFT研究中获得的,1,2用于两种不同结构的表面杂质(表1)和覆盖层(表2)。在原始表格中,双金属的 d 波段中心以相对于纯净金属值的偏移给出,并将它们转换为相对于费米能级的值。对于表 1,所考虑的表面是最紧密堆积的,并且 1% 的客体金属掺杂在主体金属的表面上。对于表 2,覆盖层结构是赝晶,在主体金属的表面上形成客体金属的单层。尽管这两种结构在物理上非常不同,但表1和表2之间的Pearson相关系数为0.948(p <0.001),并且d波段中心高度相关。因此为了区分这些结构特定值,任何数据驱动的预测都需要一个高度适应性的机制,可以捕捉到这种微妙的差异。
数据地址:https://github.com/lgd-matlab/-.git
#从pdf读取
import camelot
tables = camelot.read_pdf('takigawa2016.pdf', pages=str(2),
flavor="stream",
strip_text="\n",
row_tol=2) #类似于Pandas打开CSV文件的形式
df1=tables[0].df # get a pandas DataFrame!
df1.drop([0,1,2],axis=0,inplace=True)
df_surface=df1.replace('\(cid:1\)','-',regex=True)
df_surface.reset_index(drop=True)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Mh | Fe | Co | Ni | Cu | Ru | Rh | Pd | Ag | Ir | Pt | Au |
1 | Fe | -0.92 | -0.87 | -1.12 | -1.05 | -1.21 | -1.46 | -2.16 | -1.75 | -1.28 | -2.01 | -2.34 |
2 | Co | -1.16 | -1.17 | -1.45 | -1.33 | -1.41 | -1.75 | -2.54 | -2.08 | -1.53 | -2.36 | -2.73 |
3 | Ni | -1.20 | -1.10 | -1.29 | -1.10 | -1.43 | -1.60 | -2.26 | -1.82 | -1.43 | -2.09 | -2.42 |
4 | Cu | -2.11 | -2.07 | -2.40 | -2.67 | -2.09 | -2.35 | -3.31 | -3.37 | -2.09 | -3.00 | -3.76 |
5 | Ru | -1.20 | -1.15 | -1.40 | -1.29 | -1.41 | -1.58 | -2.23 | -1.68 | -1.39 | -2.03 | -2.25 |
6 | Rh | -1.49 | -1.39 | -1.57 | -1.29 | -1.69 | -1.73 | -2.27 | -1.66 | -1.56 | -2.08 | -2.22 |
7 | Pd | -1.46 | -1.29 | -1.33 | -0.89 | -1.59 | -1.47 | -1.83 | -1.24 | -1.30 | -1.64 | -1.66 |
8 | Ag | -3.58 | -3.46 | -3.63 | -3.83 | -3.46 | -3.44 | -4.16 | -4.30 | -3.16 | -3.80 | -4.45 |
9 | Ir | -1.90 | -1.84 | -2.06 | -1.90 | -2.02 | -2.26 | -2.84 | -2.24 | -2.11 | -2.67 | -2.85 |
10 | Pt | -1.92 | -1.77 | -1.85 | -1.53 | -2.11 | -2.02 | -2.42 | -1.81 | -1.87 | -2.25 | -2.30 |
11 | Au | -2.93 | -2.79 | -2.93 | -3.01 | -2.86 | -2.81 | -3.39 | -3.35 | -2.58 | -3.10 | -3.56 |
df2=tables[1].df
df2.drop(np.arange(0,43,1),axis=0,inplace=True)
df2.drop(55,axis=0,inplace=True)
df_overlayers=df2.replace('\(cid:1\)','-',regex=True)
df_overlayers.drop([7,11],axis=1,inplace=True)
df_overlayers.reset_index(drop=True)
0 | 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 12 | 13 | |
---|---|---|---|---|---|---|---|---|---|---|---|---|
0 | Mh | Fe | Co | Ni | Cu | Ru | Rh | Pd | Ag | Ir | Pt | Au |
1 | Fe | -0.92 | -0.78 | -0.96 | -0.97 | -1.65 | -1.64 | -2.24 | -2.17 | -1.87 | -2.40 | -3.11 |
2 | Co | -1.18 | -1.17 | -1.37 | -1.23 | -1.87 | -2.12 | -2.82 | -2.53 | -2.26 | -3.06 | -3.56 |
3 | Ni | -0.33 | -1.18 | -1.29 | -1.17 | -1.92 | -2.03 | -2.61 | -2.43 | -2.15 | -2.82 | -3.39 |
4 | Cu | -2.42 | -2.29 | -2.49 | -2.67 | -2.89 | -2.94 | -3.71 | -3.88 | -2.99 | -3.82 | -4.63 |
5 | Ru | -1.11 | -1.04 | -1.12 | -1.11 | -1.41 | -1.53 | -1.88 | -1.81 | -1.54 | -2.02 | -2.27 |
6 | Rh | -1.42 | -1.32 | -1.39 | -1.51 | -1.70 | -1.73 | -2.12 | -1.81 | -1.70 | -2.18 | -2.30 |
7 | Pd | -1.47 | -1.29 | -1.29 | -1.03 | -1.94 | -1.58 | -1.83 | -1.68 | -1.52 | -1.79 | -1.97 |
8 | Ag | -3.75 | -3.56 | -3.62 | -3.68 | -3.80 | -3.63 | -4.03 | -4.30 | -3.50 | -3.93 | -4.51 |
9 | Ir | -1.78 | -1.71 | -1.78 | -1.55 | -2.12 | -2.14 | -2.53 | -2.20 | -2.11 | -2.60 | -2.70 |
10 | Pt | -1.90 | -1.72 | -1.71 | -1.47 | -2.13 | -2.01 | -2.23 | -2.06 | -1.96 | -2.25 | -2.33 |
11 | Au | -3.03 | -2.82 | -2.85 | -2.86 | -3.09 | -2.89 | -3.21 | -3.44 | -2.77 | -3.13 | -3.56 |
Y1=pd.DataFrame(df_surface.iloc[1:,1:].values.astype(float))
Y1#surface的d带中心
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | |
---|---|---|---|---|---|---|---|---|---|---|---|
0 | -0.92 | -0.87 | -1.12 | -1.05 | -1.21 | -1.46 | -2.16 | -1.75 | -1.28 | -2.01 | -2.34 |
1 | -1.16 | -1.17 | -1.45 | -1.33 | -1.41 | -1.75 | -2.54 | -2.08 | -1.53 | -2.36 | -2.73 |
2 | -1.20 | -1.10 | -1.29 | -1.10 | -1.43 | -1.60 | -2.26 | -1.82 | -1.43 | -2.09 | -2.42 |
3 | -2.11 | -2.07 | -2.40 | -2.67 | -2.09 | -2.35 | -3.31 | -3.37 | -2.09 | -3.00 | -3.76 |
4 | -1.20 | -1.15 | -1.40 | -1.29 | -1.41 | -1.58 | -2.23 | -1.68 | -1.39 | -2.03 | -2.25 |
5 | -1.49 | -1.39 | -1.57 | -1.29 | -1.69 | -1.73 | -2.27 | -1.66 | -1.56 | -2.08 | -2.22 |
6 | -1.46 | -1.29 | -1.33 | -0.89 | -1.59 | -1.47 | -1.83 | -1.24 | -1.30 | -1.64 | -1.66 |
7 | -3.58 | -3.46 | -3.63 | -3.83 | -3.46 | -3.44 | -4.16 | -4.30 | -3.16 | -3.80 | -4.45 |
8 | -1.90 | -1.84 | -2.06 | -1.90 | -2.02 | -2.26 | -2.84 | -2.24 | -2.11 | -2.67 | -2.85 |
9 | -1.92 |