"IndexError: .iloc requires numeric indexers, got [array([False, False, False, ..." in python. Why is it failing?

"IndexError: .iloc requires numeric indexers, got [array([False, False, False, ..." in python. Why is it failing?

我正在实施金融机器学习的进展,以便在 Python 中获得交叉验证的分数。我的代码是下一个:

cv = PurgedKFold(n_splits = 10,
             samples_info_sets = pd.Series(train['close_datetime'].values, index = train['opendatetime'].values),
             pct_embargo = 0.02)

scores = ml_cross_val_score(classifier = classifier,
                        X = X, y = y, cv_gen = cv)

问题是当我 运行 最后一个命令行时,我得到下一个错误:

IndexError: .iloc requires numeric indexers, got [array([False, False, False, ..., False, False, False])
 array([False, False, False, ..., False, False, False])
 array([False, False, False, ..., False, False, False]) ...
 array([False, False, False, ...,  True, False, False]) 8428
 array([False, False, False, ..., False, False,  True])]

我的代码出了点问题,也许我配置了错误的 X 和 y 数据帧格式以供交叉验证器检查。谁能帮助我理解为什么会出现该错误?

经过一番尝试,我找到了解决办法。发生此错误是因为 Purged K Fold 需要索引值是唯一的。如果有两个索引('opendatetime')相等,在拆分数据的不同分区时,会报错。

解决方法是检查是否有具有相同索引的行。如果您将这些相同事件的索引值更改为它们之间的不同,它会起作用!