Excel - 如何将数据拆分为均匀分布的训练集和测试集

时间:2017-04-07 15:44:39

标签: excel-formula sas statistics excel-2010

我有一个数据集(在Excel中),我将导入SAS进行一些建模。

我有一个随机分割我的excel数据集的方法(使用=RAND()函数),但是有一种方法(在分裂阶段)确保样本的分布是均匀的(除了随机拆分并测试分布直到可以接受为止)?

否则,如果最好在SAS中执行此操作,那么测试样本随机性的最有效方法是什么?

数据集包含35个变量,包含二元,连续和分类变量。

2 个答案:

答案 0 :(得分:2)

在SAS中,您只需使用proc surveyselect即可。

proc surveyselect data=sashelp.cars out=cars_out outall samprate=0.7;
run;

data train test;
  set cars_out;
  if selected then output test;
  else output train;
run;

如果有一个特定的变量[s]你想确保训练和测试集平衡,你可以使用stratacontrol,具体取决于你究竟是什么类型的&# 39;重新谈论。 control只是通过控制变量对事物进行近似尝试(它按控制变量进行排序,然后拉动每个3或其他任何东西,这样你得到一种近似平衡;如果你有2个以上的控制变量它蛇排序,Asc。然后在内部描述。但这会减少随机性。)

如果您使用strata,它会保证您在分层内的采样率 - 所以如果您这样做了:

proc sort data=sashelp.cars out=cars;
  by origin;
run;


proc surveyselect data=cars out=cars_out outall samprate=0.7;
strata origin;
run;

(并且最终的分割数据步骤是相同的​​)然后您将获得70%的每个单独来源(当然,最终将占总数的70%)。

你做的事情取决于你关心它的平衡。你做的事情越多,与所有 else 的关系越不平衡,所以要小心;可能是一个简单的随机样本是最好的,特别是如果你有足够好的N.

如果你没有足够的N,那么你可以使用自举技术,这意味着你可以从70%的样本中取出一个替换样本,并且可能需要100个样本,每个样本的N都比原始样本高。然后,您对所选的每个样本进行测试或其他任何操作,这些结果的变化会告诉您即使您的N在一次通过中不足以做到这一点,您也会如何做。

答案 1 :(得分:1)

这个答案与Excel无关,但与采样策略无关。

首先,我们必须构建一个标准,使样本的度量与整个数据集“足够接近”。

假设我们对平均值和标准偏差感兴趣,并且完整填充是 A

列中10,000个值的集合
  1. 我们计算完整数据集的平均值和标准差。
  2. 为每项措施设计一个“足够接近”的标准
  3. 选择500个样本
  4. 计算样本的度量。
  5. 如果措施“足够接近”,我们就完成了,否则选择另一个500。
  6. 我们需要注意标准不要太紧;否则我们可能永远循环。