一.ELMD
首先给上github地址,方便大家自行观看
https://github.com/lrcfmd/ElMD
1.这个方法主要用途在于生成元素距离
元素运动距离(ElMD)是化学成分的相似性度量。这两个组分之间的距离是根据沿着改进的佩蒂福尺度将一个元素分布转换为另一个元素分布所需的最小工作量计算出来的。
简单的用法如下:
> from ElMD import ElMD
> x = ElMD("CaTiO3")
> x.elmd("SrTiO3")
0.2
2.另一个用途在于计算元素相似性
每个元素向量之间的欧几里得度量被用来衡量元素的相似性。
> x = ElMD("NaCl", metric="magpie")
> x.elmd("LiCl")
46.697806
> x = ElMD("NaCl", metric="magpie_sc")
> x.elmd("LiCl")
0.688539
还可以访问每个元素的单独特性字典,每个元素都有一个关于他的单独的21维特性向量
> featurizingDict = ElMD(metric="magpie).periodic_tab
> featurizingDict["Na"]
[2.0, 22.98976928, 370.87, 1.0, 3.0, 166.0, 0.93, 1.0, 0.0, 0.0, 0.0, 1.0, 1.0, 0.0, 0.0, 0.0, 1.0, 29.2433333333, 0.0, 0.0, 229.0]
3.根据每个化学式生成单独的特征向量
# For single element compositions, equivalent to x.periodic_tab["Cl"]
> x = ElMD("Cl", metric="magpie")
> x.feature_vector
array([ 94. , 35.453 , 171.6 , 17. , 3. , 102. ,
3.16 , 2. , 5. , 0. , 0. , 7. ,
0. , 1. , 0. , 0. , 1. , 24.4975,
2.493 , 0. , 64. ])
# Aggregate vector by each elements contribution
> x = ElMD("NaCl", metric="magpie").feature_vector
array([ 48. , 29.22138464, 271.235 , 9. ,
3. , 134. , 2.045 , 1.5 ,
2.5 , 0. , 0. , 4. ,
0.5 , 0.5 , 0. , 0. ,
1. , 26.87041667, 1.2465 , 0. ,
146.5 ])
二.matainer
照例先放上github链接:
https://github.com/hackingmaterials/matminer
在使用这个库要注意,钙钛矿化学式中的一些缩写:MA,FA这些要换成实际化学式才可以进行使用。
我目前就用了关于原子属性特征的衍生:计算化学式中每种元素的各种原子属性,如电负性、原子半径等,并将其用作特征。其他稳定性等方面的特征衍生可以自行查阅文档,代码框架大体都是相同的,只要更换其中使用到的转换器代码就行了。
下面附上我的代码:
from matminer.featurizers.composition import ElementFraction
from matminer.featurizers.composition import (
Stoichiometry
)
ep_feat = ElementProperty.from_preset("magpie") #获取一个名为ep_feat的特征化器,该
#特征化器包含了一组基于元素的化学属性(如原子半径、电负性、离子势等)的特征
ep_feat_lst = ep_feat.feature_labels() #获取转换后的特征名,方便后续进行查阅
ef = ElementFraction()
features1 = ef.featurize_dataframe(data, col_id="composition")#使用转换器对特征进行转换
features1