微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何将 SMOTE 重采样和特征选择集成到 RFECV 中

如何解决如何将 SMOTE 重采样和特征选择集成到 RFECV 中

我正在研究一个形状为 (41188,58) 的数据集来制作二元分类器。数据极不平衡。最初,我打算通过 RFECV 进行特征选择,这是我使用的从 here 借来的代码

# Create the RFE object and compute a cross-validated score.
svc = SVC(kernel="linear")

# The "accuracy" scoring is proportional to the number of correct classifications
min_features_to_select = 1  # Minimum number of features to consider
rfecv = RFECV(estimator=svc,step=1,cv=StratifiedKFold(5),scoring='accuracy',min_features_to_select=min_features_to_select)
rfecv.fit(X,y)

print("Optimal number of features : %d" % rfecv.n_features_)

# Plot number of features VS. cross-validation scores
plt.figure()
plt.plot(range(min_features_to_select,len(rfecv.grid_scores_) +
                  min_features_to_select),rfecv.grid_scores_)
plt.show()

我得到了以下结果:

enter image description here

然后我将代码更改为 cv=StratifiedKFold(2)min_features_to_select = 20,这次我得到了:

enter image description here

在上述情况下,均未进行重采样。由于重采样应该应用于训练数据,因此我在这里使用交叉验证,因此每个训练数据折叠也应该重新采样(例如 SMOTE)。我想知道如何将重采样和特征选择集成到 RFECV 中?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。