ВЕКА Изменение количества десятичных разрядов в прогнозах - PullRequest
0 голосов
/ 06 июня 2018

Я пытаюсь получить точные прогнозы от 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

Я пытаюсь получить прогнозы для времени отклика, которое является самым правым столбцом.Как видите, мои данные идут с шестым десятичным знаком.

Однако прогнозы WEKA относятся только к третьему.Вот результаты файла с именем «прогнозы»:

    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 вместо более точного меньшего десятичного числа.

Я использую WEKA в «Простая командная строка» вместографический интерфейсМоя команда для построения модели выглядит следующим образом:

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-place "переключатель для создания модели.

Затем я использую следующую команду, чтобы делать прогнозы:

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

Я не могу использовать" -num-decimal numbers ""переключитесь здесь, потому что WEKA не позволяет этого в этом случае по какой-то причине.«Предсказания» - это мой требуемый файл предсказаний.

Поэтому я выполняю эти две команды, и он не меняет количество десятичных знаков в прогнозе!Это все еще только 3.

Я уже посмотрел на эти ответы, Weka десятичная точность , и этот ответ на форуме pentaho , но никто не дал достаточно информацииответить на мой вопрос.Эти ответы намекают на то, что изменение количества десятичных разрядов может быть невозможным?но я просто хочу быть уверен.

Кто-нибудь знает возможность исправить это?В идеале решение должно быть в командной строке, но если вы знаете, как это сделать в графическом интерфейсе, это нормально.

1 Ответ

0 голосов
/ 06 июня 2018

Я только что придумал обходной путь, который заключается в том, чтобы просто масштабировать / умножать данные на 1000, а затем получать ваши прогнозы, а затем умножать их обратно на 1/1000, когда закончите, чтобы получить исходный масштаб.Вроде как за пределами коробки, но это работает.

РЕДАКТИРОВАТЬ: Альтернативный способ сделать это: Ответ от Питера Ройтемана из http://weka.8497.n7.nabble.com/Changing-decimal-point-precision-td43393.html:

Это было давно.;-) "-p" - это действительно старомодный способ вывода прогнозов.Используя опцию «-classification», вы можете указать, в каком формате должен быть вывод (например, CSV).Класс, который вы указываете с помощью этой опции, должен быть получен из "weka.classifiers.evaluation.output.prediction.AbstractOutput": http://weka.sourceforge.net/doc.dev/weka/classifiers/evaluation/output/prediction/AbstractOutput.html

Вот пример использования 12 десятичных знаков для вывода прогноза с использованием Java: https://svn.cms.waikato.ac.nz/svn/weka/trunk/wekaexamples/src/main/java/wekaexamples/classifiers/PredictionDecimals.java

...