从训练数据集中提取测试集

时间:2012-07-05 21:11:34

标签: database dataset data-mining cluster-analysis cross-validation

我有一个数据集(其中每个数据都是属性的向量及其对应的类标签)。我想将数据集拆分为训练集和测试集。反正有自动执行此操作吗?

1 个答案:

答案 0 :(得分:1)

将建模数据集拆分为训练,验证和测试集的典型方法是使用随机样本。也就是说,在0和1之间分配一个随机数。如果你想要40/30/30分割,那么值在0到0.4之间的行在训练中,在validatino中为0.4到0.7之间,在测试中为0.7和1.0 。 40/30/30 slpit没有什么神奇之处。它恰好是SAS Enterprise Miner的默认设置(实际上,我经常将其更改为60/30/10)。

有一些调整和可能的改进。如果您知道有一些重要的建模功能,例如地理位置,那么您可以进行分层抽样。为此,您将按列对数据进行排序,然后基本上执行"每隔n"记录样本。我说"基本上是",因为对于40%的分割来说这有点复杂。要处理此问题,请一次取记录10,为训练集选择4,为验证集选择3,为测试集选择3。你从10中选择哪些特定的并不重要。

更大的问题是当您拥有分层数据时,几乎所有用于建模的数据都是层次结构。例如,您可能拥有描述客户人口普查区的大量列的客户数据。如果这些变量作为预测变量很重要,那么您可以考虑在人口普查区域而不是客户级别进行抽样。也就是说,将人口普查区划分为三组(随机),因此40%的客户进入训练集,30%进入验证集,30%进入测试集。

您希望确保对数据进行分区,并且没有记录属于多个组。如果您不知道培训,验证和测试集是什么,那么我强烈建议您获得一本关于数据挖掘的书籍(例如"用于营销,销售和客户支持的数据挖掘技术,第三版"在http://www.amazon.com/Data-Mining-Techniques-Relationship-Management/dp/0470650931/ref=pd_sim_b_5)。

相关问题