2016-09-06 277 views
0

看这段代码:PROC glmselect训练和测试

ods graphics on; 

proc glmselect data=analysisData testdata=testData 
       seed=1 plots(stepAxis=number)=(criterionPanel ASEPlot); 
    partition fraction(validate=0.5); 
    class c1 c2 c3(order=data); 
    model y = c1|c2|c3|x1|x2|x3|x4|x5|x5|x6|x7|x8|x9|x10 
      |x11|x12|x13|x14|x15|x16|x17|x18|x19|x20 @2 
     /selection=stepwise(choose = validate 
           select = sl) 
      hierarchy=single stb; 
run; 

here服用。我明白你明确地定义了训练(analysisData)和测试数据集(testData)。我不完全理解的是PARTITION语句。这是否意味着分析数据被分割为使用一半的分析数据用于训练,另一半用于“测试”又名验证,以确定例如候选模型的选定自变量如何执行?换句话说,testData从不用于训练,正如我所期望的那样。

PS:

顺便说一句,我怎么可以从80/20%分割一个originalDataset创建analysisData和TESTDATA?

回答

1

我相信你是对的。只看该PARTITION声明文件:即指定观测的比例在输入数据集被随机分配训练和验证角色 http://support.sas.com/documentation/cdl/en/statug/68162/HTML/default/viewer.htm#statug_glmselect_syntax10.htm

请求。您可以使用TEST =和VALIDATE =子选项指定测试和验证的比例。如果您同时指定TEST =和VALIDATE =子选项,则指定分数的总和必须小于1,剩余的观测分数将分配给训练角色。如果您在PROC GLMSELECT语句中指定TESTDATA =数据集,则不能在PARTITION语句中指定TEST =子选项。如果您在PROC GLMSELECT语句中指定了VALDATA =数据集,则不能在PARTITION语句中指定VALIDATE =子选项。

因此analysisData中的一半数据将用于验证,一半用于训练。 testData中的数据将用于测试。

PS回答:看看您链接到的示例中的数据步骤。它使用随机统一和2/3在分析和测试之间分割数据大约(2/3,1/3)。将该语句中的分数更改为.8以获得所需内容。或者使用文档中概述的PARTITION声明。

相关问题