You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将数据文件转换为Weka软件可正常读取的.arff格式文件

正确转换.arff格式的操作方案

失败原因说明

  • 直接修改文件后缀的方式不可行:.arff格式需要包含专属的元数据头部(@relation、@attribute定义),仅修改后缀缺少必要结构会触发报错
  • 通过arff viewer转换失败:你的数据集BareNucloi列存在?格式的缺失值,且属性类型未提前适配Weka要求,工具无法自动识别处理

方案1:Python直接生成.arff(最稳妥)

  1. 安装依赖库
    pip install liac-arff pandas numpy
  2. 转换代码:
import pandas as pd
import arff
import numpy as np

# 读取原始数据
data = pd.read_csv('breast-cancer-wisconsin.data', header=None)
data.columns = ['code','Clump Thickness','UniformityOfCellSize','UniformityOfCellShape','MarginalAdhesion','SingleEpithelialCellSize','BareNucloi','BlandChromatin','NormalNucleoli','Mitoses','Class']

# 处理缺失值:将?替换为NaN,适配arff格式的缺失值定义
data['BareNucloi'] = pd.to_numeric(data['BareNucloi'], errors='coerce')

# 定义arff结构
arff_data = {
    'relation': 'breast_cancer_wisconsin',
    'attributes': [
        ('code', 'NUMERIC'),
        ('Clump_Thickness', 'NUMERIC'),
        ('UniformityOfCellSize', 'NUMERIC'),
        ('UniformityOfCellShape', 'NUMERIC'),
        ('MarginalAdhesion', 'NUMERIC'),
        ('SingleEpithelialCellSize', 'NUMERIC'),
        ('BareNucloi', 'NUMERIC'),
        ('BlandChromatin', 'NUMERIC'),
        ('NormalNucleoli', 'NUMERIC'),
        ('Mitoses', 'NUMERIC'),
        ('Class', ['2', '4'])  # 标注为分类属性,符合Weka分类任务要求
    ],
    'data': data.values.tolist()
}

# 保存为arff文件
with open('breast-cancer-wisconsin.arff', 'w', encoding='utf-8') as f:
    arff.dump(arff_data, f)

方案2:Weka可视化界面转换

  • 打开Weka,进入「Preprocess」标签页,点击「Open file」,文件类型选择CSV,打开你已转换的.csv文件
  • 处理缺失值:在属性列表选中BareNucloi,点击「Edit」按钮,将所有值为?的单元格清空,或选择过滤器unsupervised.attribute.ReplaceMissingValues一键填充缺失值
  • 适配属性类型:右键Class属性,选择「Convert to nominal」,将标签转为分类类型
  • 点击「Save」按钮,文件类型选择ARFF,保存即可得到可正常打开的.arff文件

内容的提问来源于stack exchange,提问作者Encipher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 10:15:02