sklearn kfold在python中返回错误的索引

sklearn kfold在python中返回错误的索引,python,scikit-learn,Python,Scikit Learn,我正在python中使用sklearn包中的kfold函数,该函数位于具有非连续行索引的df(数据帧)上 代码如下: kFold = KFold(n_splits=10, shuffle=True, random_state=None) for train_index, test_index in kFold.split(dfNARemove):... 我得到了一些在我的df中不存在的训练索引或测试索引 我能做什么?kFold迭代器为您生成数据帧的序列和验证对象的位置索引,而不是它们的非连续索

我正在python中使用sklearn包中的kfold函数,该函数位于具有非连续行索引的df(数据帧)上

代码如下:

kFold = KFold(n_splits=10, shuffle=True, random_state=None)
for train_index, test_index in kFold.split(dfNARemove):...
我得到了一些在我的df中不存在的训练索引或测试索引


我能做什么?

kFold迭代器为您生成数据帧的序列和验证对象的位置索引,而不是它们的非连续索引。您可以使用
.iloc
方法访问训练和验证对象:

kFold = KFold(n_splits=10, shuffle=True, random_state=None)
for train_index, test_index in kFold.split(dfNARemove):
    train_data = dfNARemove.iloc[train_index]
    test_data = dfNARemove.iloc[test_index]
如果您想知道每个折叠上的train_索引和test_索引使用了哪些非连续索引,可以执行以下操作:

non_continuous_train_index = dfNARemove.index[train_index]
non_continuous_test_index = dfNARemove.index[test_index]

我仍然可以看到我的df行名称是:1、3、4、5、7。。我得到了火车指数:0,3,4,5,6,7。。。test_索引:1、2、16…迭代器生成位置索引,而不是dfNARemove.index中的索引。这是作为答复写的。loc方法允许您通过位置索引获取对象。位置索引从0开始,以len(dfNARemove)-1或范围(0,len(dfNARemove))结束。数据帧对象的索引可能不同于位置索引。没关系。@EduardIlyasov我注意到,访问每个连续拆分的位置索引的方式就像访问字典的键和值一样。列车和测试集的不同对应集是否相互映射并聚合,它们通过哪一部分发挥列车/测试数据的作用?它们是否像字典一样映射,其中键是拆分标识符/索引,值是相应的序列和测试位置索引?