WEKA运行glass数据集属性选择时遇索引越界错误求解决方案
解决WEKA中Attribute Selector的"Index -1 out of bounds for length 17"错误
1. 检查数据集基础配置
- 确认类属性已正确设置:glass数据集必须指定类属性(比如最后一列的"Type"),未设置或设置错误会直接触发索引越界。打开数据集后切换到Preprocess标签,选中目标类属性,点击右上角的"Set class"按钮即可。
- 排查数据格式问题:用Preprocess标签里的"Edit"功能检查数据,确保没有缺失值、数值属性中没有混入非数字字符,标称属性的取值都在定义范围内。存在缺失值的话,先用ReplaceMissingValues过滤器处理。
2. 调整Attribute Selector参数
- 修改BestFirst的搜索方向:默认是Forward,试试换成Backward,或者把"Search terminates after X consecutive non-improving nodes"的数值从5调大到10,避免搜索逻辑触发异常索引。
- 给CfsSubsetEval添加约束:在CfsSubsetEval的参数设置中,勾选"ignore nominal attributes"(如果数据集标称属性不多),或者把delta值从默认的0.01改成0.05,减少评估时的计算异常。
3. 修复WEKA自身问题
- 升级到最新稳定版:旧版本WEKA的Attribute Selector模块可能存在索引处理bug,比如3.8.6及以上版本修复过这类问题。
- 重置WEKA配置:关闭WEKA后,删除用户目录下
wekafiles/preferences/GenericPropertiesCreator.props文件,重启后恢复默认配置,避免自定义配置冲突。
4. 手动定位问题属性
- 先用Filter标签的AttributeSelection过滤器手动选择几个核心属性测试,如果不报错,再逐步添加其他属性,排查是否是特定属性组合导致的索引越界。
内容的提问来源于stack exchange,提问作者Ayushi Bhagat
相关产品推荐
相关产品推荐

