我正在实施金融机器学习的进展,以获得 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 数据帧格式以供交叉验证器检查。谁能帮助我理解为什么会出现该错误?
1 回答
慕的地6264312
TA贡献1817条经验 获得超6个赞
发生此错误的原因是 Purged K Fold 需要索引值是唯一的。如果有两个索引('opendatetime')相等,则在分割数据的不同分区时,会出现错误。
解决方案是检查是否存在具有相同索引的行。如果您将这些相同出现次数的索引值更改为不同,那么它就有效!
添加回答
举报
0/150
提交
取消