2016-09-06 227 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聲明。