如何在Weka GUI中添加is-missing-value属性标记缺失值?
嘿,我完全懂你的需求——把受访者拒绝回答的缺失值本身当成有研究价值的变量,用Weka GUI创建专门标记缺失值的二元属性对吧?不用手动改数据,这几个方法绝对能帮到你:
方法1:用MathExpression直接生成标记属性(最快捷,支持单个属性)
这应该是最贴合你需求的方式,Weka的MathExpression其实支持检测缺失值的函数,只是你没发现:
- 打开Weka Explorer加载数据集后,切换到Preprocess标签页
- 点击右上角的
MathExpression按钮,打开配置窗口 - 根据属性类型写表达式:
- 对于数值型属性:输入
ifelse(isNaN(你的属性名), 1, 0),比如要检测Income的缺失值,就写ifelse(isNaN(Income), 1, 0) - 对于标称型属性:输入
ifelse(isMissing(你的属性名), 1, 0),比如检测Education的缺失值,写ifelse(isMissing(Education), 1, 0)
- 对于数值型属性:输入
- 在
New attribute name里填你想要的名字,比如is-missing-Income - 点击
OK,新的二元属性就会自动添加到数据集里了
方法2:用MakeIndicator批量生成标记属性(适合多属性场景)
如果你要给多个属性批量生成缺失值标记,这个方法更高效:
- 先给缺失值赋自定义标称值:
- 在Preprocess标签页,点击
Filter按钮,搜索并选择ReplaceMissingWithUserConstant过滤器 - 在配置界面的
attributeIndices里选择你要处理的所有属性(比如用1-5表示前5个属性) - 在
constant参数里输入自定义值,比如"Missing"(注意加引号,因为是标称值) - 点击
OK应用,所有缺失值都会被替换成"Missing"
- 在Preprocess标签页,点击
- 生成二元标记属性:
- 再次点击
Filter,搜索并选择MakeIndicator过滤器 - 在
attributeIndex里选择刚才处理过的属性(可以批量选),在value里输入你刚才设置的"Missing" - 点击
OK,每个目标属性都会对应生成一个is-missing-xxx的二元属性,原属性值为"Missing"时标记为1,否则为0
- 再次点击
小提示
- 如果你不确定属性类型,在Preprocess标签页的属性列表里能看到标注(
Numeric或Nominal) - 测试的时候可以先拿一小部分数据试手,避免误操作影响整个数据集
内容的提问来源于stack exchange,提问作者Ricardo Cruz
相关产品推荐
相关产品推荐

