【发布时间】:2016-02-21 23:01:08
【问题描述】:
我正在尝试使用 scikit-learn Randomized Logistic Regression 特征选择方法,但我一直遇到它在拟合时杀死所有特征并返回的情况:
ValueError: Found array with 0 feature(s) (shape=(777, 0)) while a minimum of 1 is required.
这与预期的一样,很明显,因为我将正则化参数 - C - 降低到非常低的水平(请注意,这是数学正则化参数 lambda 的倒数,即 C = 1/lambda 所以C越低,正则化越极端)。
我的问题是,如何提前找到我可以选择的最低C,而不需要手动测试多个值并删除引发此错误的值?
就我而言(从大约 250 个功能开始),我知道 C = 0.5 是我能达到的最低值。 0.1、0.4 甚至 0.49 在他们将我的功能集拉到 0 时抛出一个错误(并给出我在上面粘贴的 shape = (blah, 0) 错误)。
另一方面(也许这应该是一个不同的问题)——我的C 越高(也就是说,我的lambda 或正则化参数越低)——我的机器适应的时间越多。再加上我通常通过管道运行 RLR,在 RLR 之前使用 StandardScaler,之后使用 SVM 或 RF,并且还使用交叉验证,这使得在我的机器上运行所需的总时间呈指数级增长。
【问题讨论】:
标签: python machine-learning scikit-learn feature-selection