【问题标题】:How to make training and testing set from a dataset?如何从数据集中制作训练和测试集?
【发布时间】:2014-07-09 22:20:02
【问题描述】:

最好的方法是什么:

  1. 将我的数据分成训练集和测试集,将 70% 的数据作为训练集和 30% 的测试集,或者
  2. 使用相似的数据进行训练和测试集。

A- 第二种方法是否正确,有什么缺点?

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

【问题讨论】:

    标签: database machine-learning weka


    【解决方案1】:

    第二种方法是错误的(至少如果“相似”是指“相同”)。

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

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

    测试集可让您预测模型在“现实世界”中的性能,因为它是独立的(在训练/验证阶段,您不会根据测试数据做出任何选择)。

    【讨论】:

      【解决方案2】:

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

      使用 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. 
      

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

      【讨论】:

        【解决方案3】:
        1. 您可以在命令行中从数据集创建训练测试:

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

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

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

        【讨论】:

          猜你喜欢
          • 2017-06-09
          • 2012-07-06
          • 2019-05-01
          • 2017-09-30
          • 1970-01-01
          • 1970-01-01
          • 2017-02-20
          • 2019-06-16
          • 2020-12-31
          相关资源
          最近更新 更多