使用MeanEncoder时遇AttributeError:'Index'对象无'infer_objects'属性
问题解决方法
原因
这个报错源于feature-engine版本与pandas版本不兼容:infer_objects()方法在pandas 2.0及以上版本中已被移除,但旧版本的feature-engine仍在调用该方法。
解决方案
方案1:升级feature-engine到兼容版本
执行命令更新feature-engine,确保它适配当前pandas版本:
pip install --upgrade feature-engine
升级后重新运行原代码即可正常执行,x1和x2列会被替换为对应y值的均值。
方案2:降级pandas到支持infer_objects的版本
如果暂时不想升级feature-engine,可以将pandas降级到1.x版本:
pip install pandas==1.5.3
降级后再次运行代码即可恢复正常。
方案3:临时修改feature-engine源码(不推荐)
找到feature-engine库中MeanEncoder的对应代码位置,将counts.index = counts.index.infer_objects()替换为counts.index = counts.index.astype(object)。但这种方法需要定位库的安装路径,且后续升级库会覆盖修改,仅作为应急临时方案。
验证示例
升级feature-engine后运行代码,输出结果如下:
x1 x2 0 0.000000 0.666667 1 1.000000 0.666667 2 1.000000 0.666667 3 1.000000 1.000000 4 0.000000 0.000000
内容的提问来源于stack exchange,提问作者Bruno SALANON
相关产品推荐
相关产品推荐

