svm-rfe 在不同级别的功能上

Posted

技术标签:

【中文标题】svm-rfe 在不同级别的功能上【英文标题】:svm-rfe over different level of features 【发布时间】:2020-03-14 18:04:46 【问题描述】:

假设我有包含 1000 个特征的数据。我想对这些数据应用 SVM-RFE,每次删除 10% 的特征。 如何获得消除阶段整体水平的准确性。例如,我想获得超过 1000 个功能、900 个功能、800 个功能、....、2 个功能、1 个功能的性能。

另外,我想跟踪每个级别的功能。

【问题讨论】:

请用一些代码编辑您的代码,到目前为止您尝试了什么?你是怎么开始的 【参考方案1】:

当前框架不会在 RFE 的每次迭代中对模型/存储特征集进行评分。

也许您可以使用私有函数来获得评分,该函数旨在用于 RFECV 类。

>>> from sklearn.datasets import make_friedman1
>>> from sklearn.feature_selection import RFE
>>> from sklearn.svm import SVR
>>> from sklearn.model_selection._validation import _score
>>> X, y = make_friedman1(n_samples=50, n_features=10, random_state=0)
>>> estimator = SVR(kernel="linear")
>>> selector = RFE(estimator, 5, step=1)
>>> from sklearn.metrics import check_scoring
>>> scorer = check_scoring(estimator, 'r2')
>>> selector._fit(
...         X, y, lambda estimator, features:
...         _score(estimator, X[:, features], y, scorer))
RFE(estimator=SVR(C=1.0, cache_size=200, coef0=0.0, degree=3, epsilon=0.1,
                  gamma='scale', kernel='linear', max_iter=-1, shrinking=True,
                  tol=0.001, verbose=False),
    n_features_to_select=5, step=1, verbose=0)

>>> selector.scores_
[0.6752027280057595, 0.6750531506827873, 0.6722333425078437, 0.6684835939207456, 0.6669024507875724, 0.6751247326304468]
>>> selector.ranking_
array([1, 1, 1, 1, 1, 6, 4, 3, 2, 5])

如果您想检索每个级别/迭代的功能集,您需要编辑fit method。

另一种选择,您可以在rfe 之上进行迭代,然后存储功能集和性能。

【讨论】:

以上是关于svm-rfe 在不同级别的功能上的主要内容,如果未能解决你的问题,请参考以下文章

在SQL数据访问中如何对不同级别设置访问权限

Cisco—ASA的基本思路和应用

Android API 级别 16 及更高级别的 Torch 应用程序

RAID学习

RAID学习

google colab 上“功率级别”的含义