zoukankan      html  css  js  c++  java
  • sklearn.feature_selection.SelectFromModel 特征重要性选择(嵌入法的一种)

    嵌入式特征选择在学习器训练过程中自动地进行特征选择。嵌入式选择最常用的是L1正则化与L2正则化。

    SelectFromModel是一个元变压器,可与拟合后具有coef_或feature_importances_属性的任何估算器一起使用。如果相应的coef_或feature_importances_值低于提供的 threshold参数,则认为这些功能不重要并已删除 。除了通过数字指定阈值之外,还有一些内置的启发式方法,可使用字符串参数查找阈值。可用的试探法是“平均值”,“中位数”和浮点数的倍数,例如“ 0.1 *平均值”。与threshold标准结合使用时,可以使用 max_features参数设置对要选择的要素数量的限制

    基于L1-特征选择

    受L1范式惩罚的线性模型的稀疏解:其许多估计系数为零。当目标是减少要与另一个分类器一起使用的数据的维数时,可以将它们与feature_selection.SelectFromModel 选择非零系数一起使用。特别地,用于此目的的稀疏估计量是linear_model.Lasso用于回归,的linear_model.LogisticRegression和svm.LinearSVC 用于分类的,对于SVM和logistic回归,参数C控制稀疏度:C越小,选择的特征就越少。使用套索,alpha参数越高,选择的特征就越少,为了很好地选择alpha ,只要满足某些特定条件,套索就可以使用很少的观测值完全恢复非零变量的确切集合。特别是,样本数量应为“足够大”,否则L1模型将随机执行,其中“足够大”取决于非零系数的数量,特征数量的对数,噪声量,非零系数的最小绝对值以及设计矩阵X的结构。此外,设计矩阵必须显示某些特定的属性,例如,不具有太大的相关性。没有一般规则来选择用于恢复非零系数的alpha参数。它可以通过交叉验证(LassoCV或LassoLarsCV)进行设置,尽管这可能会导致惩罚模型不足:包括少量不相关的变量不会损害预测得分。LassoLarsIC相反,BIC()倾向于设置较高的alpha值。

     基于树的特征选择

    基于树的估计器(请参阅sklearn.tree模块和模块中的树林sklearn.ensemble)可用于计算基于杂质的特征重要性,而反过来又可用于丢弃不相关的特征(当与sklearn.feature_selection.SelectFromModel 元变压器结合使用时)

    函数用法:

    class sklearn.feature_selection.SelectFromModel(estimator, *, threshold=None, prefit=False, norm_order=1, max_features=None)

    可选参数:

    (1)estimator: object,用来构建变压器的基本估算器。既可以是拟合的(如果prefit设置为True),也可以是不拟合的估计量。拟合后,估计量必须具有 feature_importances_或coef_属性
    (2)threshold: str, float, optional default None,用于特征选择的阈值。保留重要性更高或相等的要素,而其他要素则被丢弃。如果为“中位数”(分别为“均值”),则该threshold值为特征重要性的中位数(分别为均值)。也可以使用缩放因子(例如,“ 1.25 *平均值”)。如果为None(无),并且估计器的参数惩罚显式或隐式设置为l1(例如Lasso),则使用的阈值为1e-5。否则,默认情况下使用“平均值”
    (3)prefit: bool, default False,预设模型是否期望直接传递给构造函数。如果为True,transform必须直接调用和SelectFromModel不能使用cross_val_score, GridSearchCV而且克隆估计类似的实用程序。否则,使用训练模型fit,然后transform进行特征选择。
    (4)norm_order: 非零 int, inf, -inf, default 1,在估算器threshold的coef_属性为维度2 的情况下,用于过滤以下系数矢量的范数的顺序 ,正则化
    (5)max_features:int or None, optional,要选择的最大功能数。若要仅基于选择max_features,请设置threshold=-np.inf

    属性:

    estimator_:一个估算器,用来建立变压器的基本估计器。只有当一个不适合的估计器传递给SelectFromModel时,才会存储这个值,即当prefit为False时。
    threshold_:float,用于特征选择的阈值

    方法:

    fit(X [,y])适合SelectFromModel元变压器。
    fit_transform(X [,y])适合数据,然后对其进行转换。
    get_params([deep])获取此估计量的参数。
    get_support([index])获取所选特征的掩码或整数索引
    inverse_transform(X)反向转换操作
    partial_fit(X [,y])仅将SelectFromModel元变压器安装一次。
    set_params(**参数)设置此估算器的参数。
    transform(X)将X缩小为选定的特征。

     from sklearn.svm import LinearSVC
     from sklearn.datasets import load_iris
     from sklearn.feature_selection import SelectFromModel
     X, y = load_iris(return_X_y=True)
     X.shape
    # (150, 4)
     lsvc = LinearSVC(C=0.01, penalty="l1", dual=False).fit(X, y)
     model = SelectFromModel(lsvc, prefit=True)  #已经fit过了,所以必须带上参数prefit
     X_new = model.transform(X)   
     X_new.shape
     #(150, 3)
  • 相关阅读:
    vue form dynamic validator All In one
    TypeScript api response interface All In One
    closable VS closeable All In One
    macOS 如何开启 WiFi 热点 All In One
    vue css inline style All In One
    vs2010里面 新建网站里面的 asp.net网站 和 新建项目里面的 asp.net Web应用程序 的区别 (下)
    牛腩新闻 59 整合添加新闻页 FreeTextBox 富文本编辑器,检测到有潜在危险的 Request.Form 值,DropDownList 的使用
    牛腩新闻 61尾声: error.aspx的使用 防止报错
    vs2010里面 新建网站里面的 asp.net网站 和 新建项目里面的 asp.net Web应用程序 的区别 (上)
    牛腩新闻 62:尾声续2 asp.net的编译和发布
  • 原文地址:https://www.cnblogs.com/cgmcoding/p/13588878.html
Copyright © 2011-2022 走看看