我正在尝试了解WEKA,并使用我手头的数据进行一些实验。
基本上我想做的是使用数据集1作为训练集,运行J48决策树。然后使用数据集2,运行训练好的树,并在原始数据集的输出中添加一列来显示预测结果。
然后,我希望对贝叶斯神经网络重复同样的操作。
有人能提供详细的说明链接,告诉我具体如何实现吗?我似乎漏掉了一些步骤,无法在原始数据集的输出中添加额外的列。
回答:
以下是通过命令行实现的一种方法。这条信息可以在随软件提供的Weka手册的第1章(“命令行入门”)中找到。
java weka.classifiers.trees.J48 -t training_data.arff -T test_data.arff -p 1-N
其中:
-t <training_data.arff> 指定训练数据的ARFF格式-T <test_data.arff> 指定测试数据的ARFF格式-p 1-N 指定你希望输出特征向量和预测结果,其中N是你特征向量的特征数量。
例如,这里我使用soybean.arff作为训练和测试数据。特征向量中有35个特征:
java weka.classifiers.trees.J48 -t soybean.arff -T soybean.arff -p 1-35
输出的前几行看起来像这样:
=== Predictions on test data === inst# actual predicted error prediction (date,plant-stand,precip,temp,hail,crop-hist,area-damaged,severity,seed-tmt,germination,plant-growth,leaves,leafspots-halo,leafspots-marg,leafspot-size,leaf-shread,leaf-malf,leaf-mild,stem,lodging,stem-cankers,canker-lesion,fruiting-bodies,external-decay,mycelium,int-discolor,sclerotia,fruit-pods,fruit-spots,seed,mold-growth,seed-discolor,seed-size,shriveling,roots) 1 1:diaporth 1:diaporth 0.952 (october,normal,gt-norm,norm,yes,same-lst-yr,low-areas,pot-severe,none,90-100,abnorm,abnorm,absent,dna,dna,absent,absent,absent,abnorm,no,above-sec-nde,brown,present,firm-and-dry,absent,none,absent,norm,dna,norm,absent,absent,norm,absent,norm) 2 1:diaporth 1:diaporth 0.952 (august,normal,gt-norm,norm,yes,same-lst-two-yrs,scattered,severe,fungicide,80-89,abnorm,abnorm,absent,dna,dna,absent,absent,absent,abnorm,yes,above-sec-nde,brown,present,firm-and-dry,absent,none,absent,norm,dna,norm,absent,absent,norm,absent,norm)
这些列分别是:(1) 数据实例编号;(2) 真实标签;(3) 预测标签;(4) 错误;(5) 预测置信度;以及 (6) 特征向量。