无法在Weka中使用多层感知器,附ARFF数据集求助
解决Weka多层感知器无法分析ARFF数据集的问题
看起来你的多层感知器(MLP)无法正常运行,核心问题出在ARFF数据集的属性类型和格式上——MLP作为神经网络模型,只能处理数值型或可转换为数值的**标称型(nominal)**属性,你的数据里存在几个不符合要求的地方,我来一步步帮你修正:
1. 处理STRING类型属性
你的hasta_sikayeti和temel_neden都是STRING类型,MLP无法直接解析字符串,必须把它们改成标称型,明确枚举所有可能的取值。
从你给出的样本数据来看,修改后的属性定义应该是这样的(如果还有其他未列出的取值,记得补充完整):
@ATTRIBUTE hasta_sikayeti {Yanık,Bacak_şişmesi,Ateş,Baygınlık} @ATTRIBUTE temel_neden {Yanık,Kırık,Üşütme,Diş_çıkarma,Yüksekten_düşme}
2. 优化日期时间属性(可选但推荐)
tarih属性目前只有1.01.2017这一个取值,对模型来说没有任何区分度,完全可以删除这个属性,避免占用无用的特征空间。saat现在是标称型,Weka会自动把它转成二进制特征,但如果想让时间特征更符合数值逻辑,你可以把它改成NUMERIC类型:比如把03:00换成3.0,11:30换成11.5,修改后的属性定义为:
对应DATA里的行也要同步修改,比如:@ATTRIBUTE saat NUMERIC1.01.2017,3.0,X1,Yanık,Yanık,Y1 1.01.2017,6.0,X1,Bacak_şişmesi,Kırık,Y1 ... 1.01.2017,10.0,X1,Baygınlık,Yüksekten_düşme,Y1
3. 检查ARFF格式完整性
确认DATA部分的每一行都和属性数量完全对应,没有多余或缺失的逗号,也不要有换行、空格这类格式错误——你给出的样本行格式是正确的,保持这个一致性即可。
4. Weka中MLP的配置与运行
修改完ARFF后,按以下步骤操作:
- 打开Weka Explorer,加载修正后的数据集。
- 切换到
Classify标签,在functions分类下选择MultilayerPerceptron。 - 点击
Start之前,可以先检查参数:Weka默认会启用NominalToBinary过滤器处理标称型属性,如果你手动调整过过滤器,确保没有禁用这个功能。
常见错误排查
如果还是报错,查看Weka的错误日志:
- 若提示
String attributes not allowed:说明还有STRING类型的属性没处理,回到第一步检查所有属性的类型。 - 若提示
Missing values:检查DATA行是否有缺失值或格式错误(比如多了/少了逗号)。 - 若模型不收敛:可能是你的数据集样本量太小,可以尝试增加训练数据,或者调整MLP的参数(比如增加隐藏层节点数、降低学习率)。
内容的提问来源于stack exchange,提问作者sumeyyeemir
相关产品推荐
相关产品推荐

