mlxtend.feature_selection 前向选择不适用于 SVM 线性内核?

问题描述

所以我使用 SVM 和 mlxtend 包执行特征选择。 X 是具有特征的数据框,y 是目标变量。这是我代码的一部分。

from sklearn.svm import SVC
from mlxtend.feature_selection import SequentialFeatureSelector as SFS

def SFFS(X,y,C_GS,gamma_GS,kernel_GS):
    sfs = SFS(SVC(kernel = kernel_GS,C = C_GS,gamma = gamma_GS),k_features = (1,num_of_features),forward= True,floating = False,verbose= 2,scoring= 'roc_auc',#scoring= 'accuracy',cv = 10,n_jobs= -1
         ).fit(X,y)

    return sfs

def SFFS_lin(X,C = C_GS),y)
    return sfs

def featureNames(sfs):
    Feature_Names = sfs.k_feature_names_
    return Feature_Names


sfs_lin = SFFS_lin(X,1,'linear')
#sfs_rbf = SFFS(X,'auto','rbf')
names = featureNames(sfs_lin)
print(names)

代码开始运行,但很快就冻结在这里

[Parallel(n_jobs=-1)]: 使用后端 LokyBackend 和 8 个并发 工人。 [Parallel(n_jobs=-1)]:完成了 28 个中的 28 个 |经过:2.5s 剩余:0.0s [Parallel(n_jobs=-1)]:完成 28 个,共 28 个 | 已用时间:2.5s 完成

[2021-01-24 00:01:57] 特点:1/28 -- 得分: 0.6146428161908037[Parallel(n_jobs=-1)]:使用后端 LokyBackend 和 8 个并发工作器。

使用 rbf 内核时,代码运行得很漂亮。如果我通过将 forward 参数设置为 False 来更改函数以执行向后消除,它会运行得很漂亮

转发=假,

它运行得很漂亮。使用线性内核进行前向选择时似乎会出现冻结问题。 这是一个愚蠢的错误还是我遗漏了一些微不足道的东西?

系统信息:

Python 3.8.5
scikit-learn 0.24.1
mlxtend 0.18.0

解决方法

看来这只是一个愚蠢的错误。

切换交叉验证

cv = 10

参数设置为 9 并运行 ..

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...