我試圖使用scikit學習Randomized Logistic Regression特徵選擇的方法,但我一直運行到的情況下,它殺死所有的功能,同時安裝,並返回:如何在scikit-learn中使用隨機Logistic迴歸找到最低正則化參數(C)?
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和SVM或RF之後通過帶有StandardScaler的管線運行RLR,並且還使用交叉驗證,使得在我的機器上運行所需的總時間以指數方式爆炸。
是的,我用'n_jobs = -1'來進行所有訓練。 此外,我做了一些測試,錯誤肯定與'C'值有關。 RLR的不同數量特徵給了我不同的'C'值,可以導致所有變量的擠出。畢竟,這是L1/Lasso式的迴歸,它傾向於將特徵係數降低到0(與L2壓制所有這一切的情況相反)。 我想答案是,它確實取決於輸入數據以及試圖實現的內容。 – alichaudry