关于材料数据挖掘的常用特征衍生方法

一.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
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值