我尝试进行特征选择RFECV
但每次都会给出不同的结果,交叉验证是将样本 X 划分为随机块还是顺序确定性块?
另外,为什么分数不同grid_scores_
and score(X,y)
?为什么分数有时是负数?
交叉验证是否将样本 X 划分为随机块或顺序确定性块?
CV 默认将数据划分为确定性块。您可以通过将 shuffle 参数设置为 True 来更改此行为。
然而,RFECV uses sklearn.model_selection.StratifiedKFold
如果 y 是二元或多类。
这意味着它将分割数据,使每个折叠具有相同(或几乎相同的类比例)。为了做到这一点,每个折叠中的确切数据在 CV 的不同迭代中可能会略有变化。然而,这不应导致数据发生重大变化。
如果您使用 cv 参数传递 CV 迭代器,则可以通过指定随机状态来修复分割。随机状态与算法做出的随机决策相关。每次使用相同的随机状态将确保相同的行为。
另外,为什么 grid_scores_ 和 Score(X,y) 的分数不同?
grid_scores_ 是交叉验证分数的数组。 grid_scores_[i] 是第 i 次迭代的交叉验证分数。这意味着第一个分数是所有特征的分数,第二个分数是删除一组特征时的分数,依此类推。每个中删除的特征数量等于步骤参数的值。默认情况下 = 1。
Score(X, y) 选择最佳特征数量并返回这些特征的分数。
为什么分数有时是负数?
这取决于您使用的估算器和评分器。如果您没有设置评分器,RFECV 将使用估计器的默认评分函数。一般来说,这是准确性,但在您的特定情况下,可能会返回负值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)