【问题标题】:How to find which variables are retained in scikit learn如何查找 scikit learn 中保留了哪些变量
【发布时间】:2015-07-09 04:16:45
【问题描述】:

我正在 scikit 中运行一些算法。就像目前我使用 RandomisedLasso。但是这个问题与 scikit 中的任何 ml 算法有关。

我的初始训练数据是 149x56。现在这就是我要做的:

from sklearn.linear_model import RandomizedLasso
est_rlasso = RandomizedLasso(max_iter=1000)
# Running Randomised Lasso
x=est_rlasso.fit_transform(tourism_X,tourism_Y)
x.shape

>>> (149x36). 

因此,如果您看到它给出了最初 56 个要保留的 36 个最佳特征,并将数据集从 149x56 转换为 149x36。但问题是它保留了哪些 36 个特征? scikit 最大的问题是它去掉了变量头。所以现在我一无所知该算法保留了哪些功能以及删除了哪个功能,因为最终的 X 没有要交叉检查的标题。

这在 scikit 中的任何 ml 算法实现中都很常见。如何克服这一点?就像我需要找到它给出的哪些变量一样重要,或者如果我正在运行回归模型,那么系数代表哪些变量,因为我可能使用 Onehotencoder 来转换分类变量,然后它会改变原始的 var 顺序。

有什么想法吗?

【问题讨论】:

    标签: python numpy pandas matplotlib scikit-learn


    【解决方案1】:

    来自文档

    get_support([indices]) 返回特征/索引的掩码或列表 已选中。

    http://scikit-learn.org/stable/modules/generated/sklearn.linear_model.RandomizedLasso.html

    【讨论】:

    • 谢谢。这有助于随机套索案例。但是其他人呢?就像我也在运行 Random ForestRegressor 一样,它没有类似 get_support 的东西来告诉我选择了哪些功能。它只有一个 feature_importance 属性,但它没有告诉我在进行 fit_transform 后选择了哪些特征
    • 目前没有方法,但您可以使用 feature_importances 并按照转换文档字符串中的说明对它们进行阈值处理。我们正在尝试改进这里的界面:github.com/scikit-learn/scikit-learn/pull/4242
    猜你喜欢
    • 2015-04-14
    • 2021-05-28
    • 2012-12-28
    • 2017-10-13
    • 2015-09-28
    • 2016-11-25
    • 2015-03-02
    • 2017-01-08
    • 1970-01-01
    相关资源
    最近更新 更多