用于特征选择的F-Score打分及其Python实现

F-Score是一种衡量特征在两类间分辨能力的方法,用于特征选择。本文介绍F-Score的计算公式,并提供一个Python脚本实现,适用于二分类问题。此外,还提及了多分类情况下的F-Score改进版,并介绍了sklearn库中SelectKBest类的相关方法,如fit、fit_transform等,用于选择最高得分的特征。
摘要由CSDN通过智能技术生成

F-Score(非模型评价打分,区别与 F1_score )是一种衡量特征在两类之间分辨能力的方法,通过此方法可以实现最有效的特征选择。最初是由台湾国立大学的Yi-Wei Chen提出的(参考《Combining SVMs with Various Feature Selection Strategies》),公式如下:

在这里插入图片描述

其中i代表第i个特征,即每一个特征都会有一个F-score。x拔是所有该特征值的平均数,而(+),(-)则分别代表所有阳性样本和阴性样本的特征值(的平均数)。代表k是对于具体第i个特征的每个实例,分母的两个sigma可以理解为阳性样本与阴性样本的特征值的方差。F-score越大说明该特征的辨别能力越强。

这里给出一个Python脚本,可以实现F-score的计算。当然,一般我们的输入格式是一个矩阵,包含所有样本的特征以及这些样本的分类,最终希望得到每个特征的F-score。于是我写的脚本就是这样以特征矩阵以及分类列表两个参数作为输入,以F-score列表作为输出。

谢娟英等人还改进了F-score,将它推广至多分类的情况文献,公式如下:

在这里插入图片描述

不难发现,原版的F-score是改进版的一个特例,即l=2, 分别代表正类与负类(我们通常用0和1表示)
考虑到原Fscore可能更常用一点,这里仅分享原版的脚本。而改进版的由于我本人的研究需要也应该会写,有需要的可以留言~

def fscore_core(np,nn,xb,xbp,xbn,xkp,xkn):
    '''
    np: number of positive features
    nn: number of negative features
    xb: list of the average of each feature of the whole instances
    xbp: list of the average of each feature of the positive instances
    xbn: list of the average of each feature of the negative instances
    xkp: list of each feature which is a list of each positive instance
    xkn: list of each feature which is a list of each negatgive instance
    reference: http://link.springer.com/chapter/10.1007/978-3-540-35488-8_13
    '''

    def sigmap (i,np,xbp,xkp):
        return sum([(xkp[i][k]-xbp[i])**2 for k in range(np)])

    def sigman (i,nn,xbn,xkn):
        print sum([(xkn[i][k]-xbn[i]
  • 5
    点赞
  • 57
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

a useful man

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值