如何从数据集中进行训练和测试集?

时间:2014-04-17 22:44:28

标签: database machine-learning weka

最好的方法是什么:

  1. 将70%的数据作为培训和30%的测试,将我的数据分成训练和测试集,或
  2. 使用类似的数据进行培训和测试。
  3. A-第二种方法是否正确?它的缺点是什么?

    B-我的数据集包含3个属性和1000个对象,这是否适合从该数据集中选择训练和测试集?

3 个答案:

答案 0 :(得分:2)

第二种方法是错误的(至少在类似的情况下,“你的意思是”相同的')。

您不应该使用测试集进行培训。

如果您只使用一个数据集,只需学习此设置即可获得完美的准确性(存在过度拟合的风险)。 通常,这不是您想要的,因为算法应该学习示例背后的一般概念。测试是否发生这种情况的方法是使用单独的数据集进行培训和测试。

测试装置可以预测模型在现实世界中的表现。因为它是独立的(在培训/验证阶段,你不能根据测试数据做出任何选择)。

答案 1 :(得分:0)

第二种选择是错误的。第一个选择是最好的......

使用ling-pipe分类器,我们可以训练和测试新闻数据。但是,如果您提供用于测试目的的相同数据,毫无疑问它会显示准确的输出。我们想要的是预测未知案例的输出,这就是我们如何正确测试准确性。

所以你需要做的是

1)Train your data
2)Build a model
3)Apply test data to the model to get output for unknown sets/ cases too. 

构建模型只不过是将训练过的对象写入文件。因此,每次运行程序时,都必须将数据放入该模型,而不是每次都进行培训。这节省了您的时间。我希望我的回答能帮到你。最好的问候。

答案 2 :(得分:0)

  1. 您可以在命令行中使用数据集创建Train-Test:

    java -cp weka.jar weka.filters.unsupervised.instance.RemovePercentage -P 30 -i dataset.arff -o train.arff  java -cp weka.jar weka.filters.unsupervised.instance.RemovePercentage -P 70 -i dataset.arff -o test.arff

  2. 和A):除非数据集中存在“所有”未来可能的数据组合,否则使用相同的数据进行训练和测试是一个糟糕的解决方案。它不会评估您的模型如何处理不同的新案例,也无法评估您是否过度拟合(它适合您当前的数据而没有可重用的逻辑)。为什么不使用“交叉验证”,如果要使用相同的数据集,这非常有效。它会自动分成不同的部分,并根据其余数据测试每个部分,然后计算平均结果。

  3. B)如果你的意思是3个属性和1000个实例,如果你没有太多不同类型的输出(类)来预测并且这些实例映射好的用例,那就可以了。

    仅供参考:如果您想在许多不同的分类器上测试数据以找到最佳分类,请使用experimenter

相关问题