为什么我得到错误的预测值 python-weka wrapper

问题描述

我想在 Jupyter Notebook 中使用 python-weka-wrapper 来预测数据,但是,我只得到错误而不是给定的预测。这是我的数据示例:

@relation data_new3

@attribute pos_x numeric
@attribute pos_y numeric
@attribute angle numeric
@attribute vel numeric
@attribute vel_x numeric
@attribute vel_y numeric

@data
414049364,21773560,75.06043,16.775027,15.827037,-5.559355
414049656,21773926,43.232657,4.452031,3.258594,-3.033504
414049938,21774287,43.836066,4.347145,4.300749,-0.633426
414050204,21774638,44.704315,4.157368,3.119995,2.747606

当我使用“预测”选项卡(选择 pos_x 和 pos_y 作为要预测的变量)在 Weka 上运行此数据时,会得到有效的预测(线性回归)。然而,当我尝试在 python 上构建它以自动化该过程时,结果远非预期。

这是我当前的代码

import weka.core.jvm as jvm
import weka.core.converters as conv
from weka.classifiers import Evaluation,Classifier
from weka.core.classes import Random
import weka.plot.classifiers as plcls
df = conv.load_any_file("data_new3.arff")
df.class_is_last()

cls = Classifier(classname="weka.classifiers.functions.LinearRegression",options=["-C","-S","1"])
evl = Evaluation(df)
evl.crossvalidate_model(cls,df,10,Random(1))
plcls.plot_classifier_errors(evl.predictions,absolute=False,wait=True)

我想获得 n 个预测(预测)。 在上面代码的结果下面。但是,我希望数据不是错误

evl.predictions 内容

[NUM: 2.341519980578598 -0.46169578717854165 1.0,NUM: 0.0324593108656498 -1.250148004408402 1.0,NUM: 1.0894596695042125 -0.19638227888390247 1.0,NUM: 2.2415137801101532 0.21523000008892268 1.0,NUM: 0.8403094260947848 1.4159336571192398 1.0,NUM: -0.6246802557143522 0.02694804349266633 1.0,NUM: -1.1291083174467442 -0.9771784825188661 1.0,NUM: 1.9865123314290711 0.0020180962164886296 1.0,NUM: -1.4171054579203468 -0.1185322656565404 1.0,NUM: 1.701392413210111 -0.31173498990392545 1.0,NUM: 0.9142204697441169 -0.46289838829034125 1.0,NUM: 2.2371544887471027 0.26863408847202663 1.0,NUM: 1.0104945457853498 0.08266907560209802 1.0,NUM: -2.1844092184524277 0.2537549599419435 1.0,NUM: -1.64486932964462 -0.0757717380165559 1.0,NUM: -0.8833185855520697 0.272053514894651 1.0,NUM: 2.023258402624002 0.20075652151535905 1.0,NUM: -0.09766261800428815 -0.13010619249325828 1.0,NUM: 0.008614470166021827 -2.0206928075313044 1.0,NUM: -0.3746145438554381 0.2627094869476423 1.0,NUM: 0.321292162562831 -0.39300510611246864 1.0,NUM: -0.8603272578575111 -0.24401632088301994 1.0,NUM: 1.2917808082313293 0.27398191955035145 1.0,NUM: 2.5069928462982736 -0.28666784299093706 1.0,NUM: 0.5342954034915244 0.023908866474812385 1.0,NUM: -0.8199944215138957 -0.35662294870599 1.0,NUM: 1.5190967129296846 -0.494692957136067 1.0,NUM: 2.1750768892884005 0.17687020938865317 1.0,NUM: -1.3129196874730458 -0.4337196896722162 1.0,NUM: 0.9085960948511023 -1.0273595147173182 1.0,NUM: -1.790840080776049 -0.7976173866791214 1.0,NUM: 0.6226362259069361 0.8034413426921674 1.0,NUM: -1.6641718286913476 0.1441503225123597 1.0,NUM: 0.9671958169480396 0.4460301975123002 1.0,NUM: -0.0762479157090975 -0.014214109052772983 1.0,NUM: 0.1274295194870555 -0.7136733953120711 1.0,

我做错了什么?我在 https://fracpete.github.io/python-weka-wrapper3/weka.html

中找不到正确的函数

解决方法

预测(即预测时间序列中的下一个点)与单点预测不同。前者可通过 Weka 的 timeseriesForecasting 包和 Weka Explorer 中的 Forecast 选项卡获得。后者是分类器通常执行的操作,可通过 Weka Explorer 中的 Classify 选项卡使用。

Forecast 选项卡将实际的基本分类器包装在 WekaForecaster 实例中(这不是分类器而是预测器!),并且还使用 TSLagMaker 过滤器转换数据内部。

到目前为止,python-weka-wrapper3 库不支持预测。 在新版本 0.2.0 中引入了一个新模块:weka.timeseries。这个新模块包装了 timeseriesForecasting 包的基本类。

一些提示: