Weka中属性合并需求:合并细分医学专业属性以缩减维度
处理Weka中医疗专科属性的标签合并与二进制转换
针对你遇到的问题——将包含70余种标签的medical speciality标称属性转换为合并后的二进制属性(比如把Pediatrics-Endocrinology同时标记到Pediatrics和Endocrinology属性),这里有两种实用的解决方案,分别适合GUI可视化操作和自定义脚本处理:
方法一:用Weka内置过滤器快速实现(无需代码)
这种方法适合不想写脚本的场景,通过两步过滤器完成:
将标称属性转为字符串属性
- 加载数据集后,在Weka Explorer的
Filter面板选择unsupervised.attribute.NominalToString - 配置过滤器,选择
medical speciality作为目标属性,点击Apply将其转为字符串类型
- 加载数据集后,在Weka Explorer的
拆分标签生成二进制属性
- 接着选择
unsupervised.attribute.StringToWordVector过滤器 - 关键配置:
- 设置
outputWordCounts为False(生成二进制值,1表示存在该标签,0表示不存在) - 修改
delimiters为-(用连字符和空格作为标签拆分的分隔符,适配你的复合标签格式) - 可选:设置
wordsToKeep指定只保留你需要的标签(比如Pediatrics,Endocrinology),避免生成多余属性
- 设置
- 点击
Apply后,数据集会自动生成每个单一标签对应的二进制属性,Pediatrics-Endocrinology这类复合标签会同时在Pediatrics和Endocrinology属性上标记为1
- 接着选择
清理多余属性(可选)
- 如果生成了不需要的标签属性,用
unsupervised.attribute.Remove过滤器删除即可,只保留你需要的目标属性
- 如果生成了不需要的标签属性,用
方法二:自定义脚本实现更灵活的控制
如果需要更复杂的标签映射规则(比如某些复合标签需要特殊处理),可以用ScriptedFilter编写Groovy脚本:
- 在Weka Explorer的
Filter面板选择unsupervised.attribute.ScriptedFilter - 在
script配置项中粘贴以下代码(可根据你的目标标签修改):
// 定义你需要保留的目标标签集合 def targetTags = ["Pediatrics", "Endocrinology"] // 为每个目标标签添加新的二进制属性 targetTags.each { tag -> outputAttributes.addAttribute(new Attribute(tag, [0, 1])) } // 遍历每个实例处理标签 for (int i = 0; i < inputInstances.numInstances(); i++) { def instance = inputInstances.instance(i) def originalTag = instance.stringValue(instance.attribute("medical speciality")) // 生成新属性的取值 def binaryValues = [] targetTags.each { tag -> // 判断原标签是否包含目标标签,是则设为1,否则0 binaryValues.add(originalTag.contains(tag) ? 1.0 : 0.0) } // 构建新实例:保留原属性 + 添加新的二进制属性 def newInstance = new DenseInstance(instance.numAttributes() + targetTags.size()) // 复制原属性值 for (int j = 0; j < instance.numAttributes(); j++) { newInstance.setValue(j, instance.value(j)) } // 设置新属性值 for (int j = 0; j < targetTags.size(); j++) { newInstance.setValue(instance.numAttributes() + j, binaryValues[j]) } outputInstances.add(newInstance) }
- 点击
Apply后,会生成你指定的二进制属性,复合标签会被正确映射到对应的属性上
两种方法都能有效减少爆炸后的属性数量,同时保留你需要的标签关联关系,你可以根据自己的需求选择。
内容的提问来源于stack exchange,提问作者Mari
相关产品推荐
相关产品推荐

