美文网首页
SelectKBest

SelectKBest

作者: 曦宝 | 来源:发表于2018-10-26 14:05 被阅读885次

from sklearn.feature_selection import SelectKBest

http://scikit-learn.org/stable/modules/generated/sklearn.feature_selection.SelectKBest.html#sklearn.feature_selection.SelectKBest.set_params

之前做过一段时间的特征选择部分的研究。总结了一些知识和使用的方法,今天再看相关文章的时候,提到了一个

SelectKBest

看名字挺牛的,本来因为是一个第三方库,结果百度了一下,发现是sklearn里的一部分,而且这还是我一直用过的feature_selection里面的,于是跟进去看了一下源码。
我的心都凉了,这是啥玩意。。。。。。

class SelectKBest(_BaseFilter):
    """Select features according to the k highest scores.

    Read more in the :ref:`User Guide <univariate_feature_selection>`.

    Parameters
    ----------
    score_func : callable
        Function taking two arrays X and y, and returning a pair of arrays
        (scores, pvalues) or a single array with scores.
        Default is f_classif (see below "See also"). The default function only
        works with classification tasks.

    k : int or "all", optional, default=10
        Number of top features to select.
        The "all" option bypasses selection, for use in a parameter search.

    Attributes
    ----------
    scores_ : array-like, shape=(n_features,)
        Scores of features.

    pvalues_ : array-like, shape=(n_features,)
        p-values of feature scores, None if `score_func` returned only scores.

    Notes
    -----
    Ties between features with equal scores will be broken in an unspecified
    way.

    See also
    --------
    f_classif: ANOVA F-value between label/feature for classification tasks.
    mutual_info_classif: Mutual information for a discrete target.
    chi2: Chi-squared stats of non-negative features for classification tasks.
    f_regression: F-value between label/feature for regression tasks.
    mutual_info_regression: Mutual information for a continuous target.
    SelectPercentile: Select features based on percentile of the highest scores.
    SelectFpr: Select features based on a false positive rate test.
    SelectFdr: Select features based on an estimated false discovery rate.
    SelectFwe: Select features based on family-wise error rate.
    GenericUnivariateSelect: Univariate feature selector with configurable mode.
    """

下面是官网的例子


image.png

看懂了吧,意思就是说,计算公式要自己给,要取前k个的k值也自己给,等于说这个包什么都没做。。。只是做了一部分计算而已。。。。。。心有点累了
看着名字很牛,其实啥都没有。

参数

1、score_func : callable,函数取两个数组X和y,返回一对数组(scores, pvalues)或一个分数的数组。默认函数为f_classif,默认函数只适用于分类函数。
2、k:int or "all", optional, default=10。所选择的topK个特征。“all”选项则绕过选择,用于参数搜索。

属性

1、scores_ : array-like, shape=(n_features,),特征的得分
2、pvalues_ : array-like, shape=(n_features,),特征得分的p_value值,如果score_func只返回分数,则返回None。

score_func里可选的公式

image.png

方法

1、fit(X,y),在(X,y)上运行记分函数并得到适当的特征。
2、fit_transform(X[, y]),拟合数据,然后转换数据。
3、get_params([deep]),获得此估计器的参数。
4、get_support([indices]),获取所选特征的掩码或整数索引。
5、inverse_transform(X),反向变换操作。
6、set_params(**params),设置估计器的参数。
7、transform(X),将X还原为所选特征。


image.png

我试了一下,别的不好用,只有这个好用,暂时就这样吧。

---------------------------------------更新一--------------------------------------------


image.png

---------------------------------更新二-----------------------------------------------------
发现有人提问,我回答一下,哈哈哈,有点小得意呢。

首先,如何返回选择特征的名称或者索引。其实在上面的方法中已经提了一下了,那就是get_support()


image.png
image.png

之前的digit数据是不带特征名称的,我选择了带特征的波士顿房价数据,因为是回归数据,所以计算的评价指标也跟着变换了,f_regression,这里需要先fit一下,才能使用get_support()。里面的参数如果索引选择True,


image.png
返回值就是feature的索引,可能想直接返回feature name在这里不能这么直接的调用了,但是在dataset里面去对应一下应该很容易的。这里我给出的K是5,选择得分最高的前5个特征,分别是第2,5,9,10,12个属性。
如果里面的参数选择了False,返回值就是该特征是否被选择的Boolean值。
image.png

相关文章

  • SelectKBest

    from sklearn.feature_selection import SelectKBest http://...

  • 小白的情感分析实战

    大神连接: 机器学习方法进行情感分析(详细步骤) sklearn- SelectKBest 特征选择---Sele...

  • 3.数据降维--selectkbest

    一、selectkbest原理 二、代码原理 结论:葡萄酒数据属性有13个,其中的3个属性,不重要! 为什么进行数...

网友评论

      本文标题:SelectKBest

      本文链接:https://www.haomeiwen.com/subject/ksiktqtx.html