一旦我训练并生成了一个模型,截至目前我已经看过的例子,我们正在使用一个测试集,我们必须为实际值和预测值设置值,是否有一种方法可以让我实际放置列为空或在进行预测时根本无法使用
如果我拿一个例子,以下是我的训练集
@relation supermarket
@attribute 'department1' { t}
@attribute 'department2' { t}
@attribute 'department3' { t}
@attribute value
我正在使用像
这样的测试集 @relation supermarket
@attribute 'department1' { t}
@attribute 'department2' { t}
@attribute 'department3' { t}
@attribute value
并输出
@relation supermarket
@attribute 'department1' { t}
@attribute 'department2' { t}
@attribute 'department3' { t}
@attribute value
@attribute predicted-value
@attribute predicted-margin
我的问题是我可以删除值还是将其保留为测试集
答案 0 :(得分:1)
案例1:您的培训和测试集都有类别标签
训练:
@relation
simple-training
@attribute
feature1 numeric
feature2 numeric
class string{a,b}
@data
1, 2, b
2, 4, a
.......
测试:
@relation
simple-testing
@attribute
feature1 numeric
feature2 numeric
class string{a,b}
@data
7, 12, a
8, 14, a
.......
在这种情况下,无论您是使用k-fold cv还是火车测试设置,Weka都不会在测试集中查看您的班级标签。它从训练中获取模型,盲目地将其应用于测试集,然后将其预测与测试集中的实际类标签进行比较。
如果您想查看分类器的性能评估,这非常有用。
案例2:您拥有培训数据的分类标签,但您没有用于测试数据的分类标签。
训练:
@relation
simple-training
@attribute
feature1 numeric
feature2 numeric
class string{a,b}
@data
1, 2, b
2, 4, a
.......
测试:
@relation
simple-testing
@attribute
feature1 numeric
feature2 numeric
class string{a,b}
@data
7, 12, ?
8, 14, ?
.......
这是非常正常的,因为这是我们需要做的 - 在看不见的未标记数据上应用训练模型来标记它们!在这种情况下,只需在测试类标签上添加?
标记即可。在此设置上运行Weka后,您将获得这些?
标记替换为预测值的输出(您不需要创建任何其他列,因为这会给您带来错误)。
因此,简而言之,您需要在培训和测试数据方面具有兼容性。在测试数据时,如果您不知道该值并且想要预测它,那么在该列中添加?
标记。