使用 sklearn 进行交叉验证的高级特征提取

Posted

技术标签:

【中文标题】使用 sklearn 进行交叉验证的高级特征提取【英文标题】:advanced feature extraction for cross-validation using sklearn 【发布时间】:2013-05-29 06:56:34 【问题描述】:

给定一个包含 1000 个样本数据的样本数据集,假设我想对数据进行预处理以获得 10000 行数据,因此每个原始数据行都会导致 10 个新样本。此外,在训练我的模型时,我也希望能够执行交叉验证。 我拥有的评分函数使用原始数据来计算分数,因此我希望交叉验证评分也适用于原始数据而不是生成的数据。由于我将生成的数据提供给训练器(我使用的是 RandomForestClassifier),因此我不能依靠交叉验证来根据原始样本正确拆分数据。

我想做什么:

创建自定义特征提取器以提取特征以提供给分类器。 将特征提取器添加到管道并将其馈送到例如 GridSearchCv 中 实现一个自定义评分器,该评分器对原始数据进行操作,以便在给定一组选定参数的情况下对模型进行评分。

对于我想要完成的事情,有更好的方法吗?

我问这个与现在在Kaggle上进行的比赛有关

【问题讨论】:

【参考方案1】:

也许您可以在扩展样本上使用分层交叉验证(例如,分层 K 折叠或分层随机拆分),并将原始样本 idx 用作分层信息,并结合自定义评分函数,该函数将忽略模型评估。

【讨论】:

我会试一试的。感谢您的回答奥利维尔! 由于我的评分函数需要对每个样本进行评分(因此所有生成的样本都属于该样本),因此在生成的样本上使用 StratifiedKfold 是否有害,因为生成的折叠可能由样本的不同部分而不是全部一起?

以上是关于使用 sklearn 进行交叉验证的高级特征提取的主要内容,如果未能解决你的问题,请参考以下文章

通过 Sklearn 的 RFECV(带有交叉验证的递归特征消除)选择特定数量的特征

Sklearn 0.20+的交叉验证?

如何在sklearn中计算交叉验证的每个模型中的特征重要性

Sklearn MLP 特征选择

CTR预估--正则,交叉验证特征提取变量分类

使用 Sklearn 进行交叉验证