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

Scikit learn 使用sklearn进行交叉验证的高级特征提取,scikit-learn,feature-extraction,cross-validation,Scikit Learn,Feature Extraction,Cross Validation,给定一个包含1000个数据样本的样本数据集,假设我想对数据进行预处理以获得10000行数据,那么每一行原始数据将产生10个新样本。此外,在培训我的模型时,我希望能够执行交叉验证。 我使用的评分函数使用原始数据来计算评分,因此我希望交叉验证评分也使用原始数据,而不是生成的数据。由于我将生成的数据提供给培训师(我使用的是RandomForestClassifier),因此我无法依靠交叉验证根据原始样本正确分割数据 我想做什么: 创建自定义特征提取器,以提取要提供给分类器的特征 例如,将特征提取器添

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

我想做什么:

  • 创建自定义特征提取器,以提取要提供给分类器的特征
  • 例如,将特征提取器添加到管道中,并将其馈送到GridSearchCv
  • 实现一个自定义记分器,该记分器对原始数据进行操作,以便在给定一组选定参数的情况下对模型进行记分
对于我想要完成的事情,有没有更好的方法


我问这个问题是关于目前正在进行的一场比赛,也许你可以使用分层交叉验证(例如分层K折叠或分层洗牌分割)在扩展样本上,使用原始样本idx作为分层信息,并结合自定义评分函数,该函数将忽略模型评估中的非原始样本。

我将尝试一下。谢谢你的回答,奥利弗!由于我的评分函数需要对每个样本(以及属于该样本的所有生成样本)进行评分,因此在生成的样本上使用StratifiedKfold是否有害,因为生成的折叠可能由样本的不同位组成,而不是全部组成?