首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >WEKA更改预测中的小数位数

WEKA更改预测中的小数位数
EN

Stack Overflow用户
提问于 2018-06-07 00:33:53
回答 1查看 957关注 0票数 1

我正在尝试从WEKA获得精确的预测,并且我需要增加它为其预测数据输出的小数位数。

我的.arff训练集如下所示:

@relation TrainSet

@attribute TimeDiff1 numeric
@attribute TimeDiff2 numeric
@attribute TimeDiff3 numeric
@attribute TimeDiff4 numeric
@attribute TimeDiff5 numeric
@attribute TimeDiff6 numeric
@attribute TimeDiff7 numeric
@attribute TimeDiff8 numeric
@attribute TimeDiff9 numeric
@attribute TimeDiff10 numeric
@attribute LBN/Distance numeric
@attribute LBNDiff1 numeric
@attribute LBNDiff2 numeric
@attribute LBNDiff3 numeric
@attribute Size numeric
@attribute RW {R,W}
@attribute 'Response Time' numeric

@data

0,0,0,0,0,0,0,0,0,0,203468398592,0,0,0,32768,R,0.006475
0.004254,0,0,0,0,0,0,0,0,0,4564742206976,4361273808384,0,0,65536,R,0.011025
0.002128,0.006382,0,0,0,0,0,0,0,0,4585966117376,21223910400,4382497718784,0,4096,R,0.01389
0.001616,0.003744,0,0,0,0,0,0,0,0,4590576115200,4609997824,25833908224,4387107716608,4096,R,0.005276
0.002515,0.004131,0.010513,0,0,0,0,0,0,0,233456156672,-4357119958528,-4352509960704,-4331286050304,32768,R,0.01009
0.004332,0.006847,0.010591,0,0,0,0,0,0,0,312887472128,79431315456,-4277688643072,-4273078645248,4096,R,0.005081
0.000342,0.004674,0.008805,0,0,0,0,0,0,0,3773914294272,3461026822144,3540458137600,-816661820928,8704,R,0.004252
0.000021,0.000363,0.00721,0,0,0,0,0,0,0,3772221901312,-1692392960,3459334429184,3538765744640,4096,W,0.00017
0.000042,0.000063,0.004737,0.01525,0,0,0,0,0,0,3832104423424,59882522112,58190129152,3519216951296,16384,W,0.000167
0.005648,0.00569,0.006053,0.016644,0,0,0,0,0,0,312887476224,-3519216947200,-3459334425088,-3461026818048,19456,R,0.009504

我正在尝试获得响应时间的预测,这是最右边的一列。如你所见,我的数据到了小数点后6位。

然而,WEKA的预测只到了第3天。以下是名为“predictions”的文件的结果:

    inst#     actual  predicted      error
        1      0.006      0.005     -0.002 
        2      0.011      0.017      0.006 
        3      0.014      0.002     -0.012 
        4      0.005      0.022      0.016 
        5      0.01       0.012      0.002 
        6      0.005      0.012      0.007 
        7      0.004      0.018      0.014 
        8      0          0.001      0     
        9      0          0.001      0     
       10      0.01       0.012      0.003 

如你所见,这极大地限制了我预测的准确性。对于小于0.0005的非常小的数字(如第8行和第9行),它们将显示为0,而不是更精确的较小十进制数。

java weka.classifiers.trees.REPTree -M 2 -V 0.00001 -N 3 -S 1 -L -1 -I 0.0 -num-decimal-places 6 \
   -t [removed path]/TrainSet.arff \
   -T [removed path]/TestSet.arff \
   -d [removed path]/model1.model > \
   [removed path]/model1output

(删除路径:出于隐私考虑,我只是删除了完整的路径名)

正如您所看到的,我找到了用于创建模型的"-num-decimal-places“开关。

java weka.classifiers.trees.REPTree \
    -T [removed path]/LUN0train.arff \
    -l [removed path]/model1.model -p 0 > \
    [removed path]/predictions

我不能在这里使用"-num-decimal places“开关,因为出于某种原因,WEKA在这种情况下不允许这样做。“预测”是我想要的预测文件。

所以我执行了这两个命令,它不会改变预测中的小数位数!它仍然只有3个。

我已经看过这个答案了,Weka decimal precision,还有pentaho forum上的这个答案,但是没有人提供足够的信息来回答我的问题。这些答案暗示了更改小数位数可能是不可能的?但我只想确认一下。

有没有人知道解决这个问题的办法?理想情况下,解决方案应该在命令行上,但如果您只知道如何在GUI中执行此操作,也没问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-07 03:28:22

我只是想出了一个变通办法,就是简单地将数据缩放/乘以1000,然后获得预测,然后在完成后将其乘回到1/1000以获得原始比例。有点打破常规,但很管用。

编辑:另一种方法:来自http://weka.8497.n7.nabble.com/Changing-decimal-point-precision-td43393.html的彼得·鲁特曼的回答

这已经存在很长时间了。;-) "-p“是一种非常老式的预测输出方式。使用"-classifications“选项,您可以指定输出的格式(例如CSV)。使用该选项指定的类必须从"weka.classifiers.evaluation.output.prediction.AbstractOutput":http://weka.sourceforge.net/doc.dev/weka/classifiers/evaluation/output/prediction/AbstractOutput.html派生

下面是使用Java对预测输出使用12个小数的示例:https://svn.cms.waikato.ac.nz/svn/weka/trunk/wekaexamples/src/main/java/wekaexamples/classifiers/PredictionDecimals.java

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50725361

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档