加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python-2.7 – 删除低方差scikit-learn的功能

发布时间:2020-12-20 12:32:01 所属栏目:Python 来源:网络整理
导读:scikit-learn提供了各种方法来删除描述符,给定的教程提供了初始方法 http://scikit-learn.org/stable/modules/feature_selection.html# 但是给定的教程没有提供任何方法或方法来告诉您保留已删除或保留的功能列表的方法. 在下面给出的教程页面上提供了代码:
scikit-learn提供了各种方法来删除描述符,给定的教程提供了初始方法

http://scikit-learn.org/stable/modules/feature_selection.html#

但是给定的教程没有提供任何方法或方法来告诉您保留已删除或保留的功能列表的方法.
在下面给出的教程页面上提供了代码:

from sklearn.feature_selection import VarianceThreshold
    X = [[0,1],[0,1,0],[1,1]]
    sel = VarianceThreshold(threshold=(.8 * (1 - .8)))
    sel.fit_transform(X)
array([[0,1]])

这个例子只包含两个描述符“shape(6,2)”,但在我的例子中我有一个巨大的数据形状(51,9000).在获得合适的模型之后,我希望保留可用功能的跟踪,这样当我将针对未知数据集运行我的模型时,我将仅计算测试集的所选描述符.

例如,当我使用WEKA 6.0工具执行机器建模时,此工具在特征选择方面提供了非凡的灵活性,并且在化学数据集上执行任务后提供了最佳特征列表9000,并且我可以使用列名称保存简化数据.

谢谢

解决方法

然后,如果我没错,你可以做的是:

对于VarianceThreshold,您可以调用方法fit而不是fit_transform.这将适合数据,结果差异将存储在vt.variances_中(假设vt是您的对象).

有了一个threhold,你可以像fit_transform那样提取转换的特征:

X[:,vt.variances_ > threshold]

或者将索引作为:

idx = np.where(vt.variances_ > threshold)[0]

或者作为面具

mask = vt.variances_ > threshold

PS:默认阈值为0

编辑:

更直接的做法是使用类VarianceThreshold的方法get_support.从文档:

get_support([indices])  Get a mask,or integer index,of the features selected

您应该在fit或fit_transform之后调用此方法.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读