用於估計分區模型的調整表:結果分區模型(樹、引導程序、提升)的一個選項是使用調整設計表。 結果以包含設計點以及每個設計點的驗證 R 平方和驗證 RMSE 的表格開始。 我需要讓該表還顯示訓練 R 平方、訓練 RMSE、測試 R 平方和測試 RMSE。 任何人都可以在這裡提供幫助——也許有一個腳本?
這些統計信息以及更多信息顯示在所選模型的表格下方,但我需要所有設計點的這些統計信息。 我發瘋的方法是這樣的:我希望能夠生成一個圖表,顯示驗證 R2 和訓練 R2 對學習率的影響,以顯示隨著學習率增加而發生的過度擬合量。
回复:估計分區模型的調整表:結果我正在學習很多關於 JMP 劇本 Cameron 的來龍去脈。 再一次,這工作得很好。 再次感謝你。 我非常感謝您的幫助。
回复:估計分區模型的調整表:結果看起來 NumberBox 無法識別“<< Get”。檢查 NumberBox 的腳本索引,您將看到該對像類型可以識別的所有消息。其中之一是 << 獲取文本;但是,這將返回一個字符串。您可以使用 num() 將其轉換為數字。
num(report["Specifications"][NumberBox(1)] << Get Text);
回复:估計分區模型的調整表:結果你好,卡梅倫:
我已經修改了您的腳本(再次感謝!),但被困在最後一個問題上。 除了提升樹的 RSq、RMSE 等結果外,我現在還想檢索最終的層數。 我認為這將是對原始腳本的直接修改。 請從底部查看第 13 行:
NL = report["Specifications"][NumberBox(1)] << Get;
這顯然行不通。 您知道報告的“規格”部分與“總體統計”部分是否有不同之處?
dt = Data Table("C.jmp");
dt_pars = Data Table("table 3400.jmp");
//Get copy of pars table to store results
dt_results = dt_pars << Subset( All rows, Selected columns only( 0 ) );
dt_results << New Column("Seed");
dt_results << New Column("Final N Layers");
dt_results << New Column("Rsq Training");
dt_results << New Column("Rsq Validation");
dt_results << New Column("Rsq Test");
dt_results << New Column("RMSE Training");
dt_results << New Column("RMSE Validation");
dt_results << New Column("RMSE Test");
dt_results << New Column("N Training");
dt_results << New Column("N Validation");
dt_results << New Column("N Test");
for(i = 1, i<= N Row(dt_pars), i++,
SED = dt_pars: Seeds[i];
SPT = dt_pars:Splits Per Tree[i];
LR = dt_pars:Learning Rate[i];
RSR = dt_pars:Row Sampling Rate[i];
CSR = dt_pars:Column Sampling Rate[i];
MSS = dt_pars:Minimum Size Split[i];
NL = dt_pars:Number of Layers[i];
str = Eval Insert("\[report = (dt << Boosted Tree(
Y( :PR ),
X(
:Pe,
:To,
:Td,
),
Validation( :Name( "Train/Valid/Test" ) ),
Set Random Seed( ^SED^ ),
Method( "Boosted Tree" ),
Splits per Tree( ^SPT^ ),
Number of Layers( ^NL^ ),
Learning Rate( ^LR^ ),
Row Sampling Rate( ^RSR^ ),
Column Sampling Rate( ^CSR^ ),
Minimum Size Split( ^MSS^ ),
Go,
invisible
)) << Report;]\");
//Fit the boosted tree
Eval(Parse(str));
//Get the Rsq values and insert them into the results table
R2 = report["Overall Statistics"][NumberColBox(1)] << Get;
RMSE = report["Overall Statistics"][NumberColBox(2)] << Get;
N = report["Overall Statistics"][NumberColBox(3)] << Get;
NL = report["Specifications"][NumberBox(1)] << Get;
report << Close Window;
dt_results:Final N Layers[i] = NL[1];
dt_results:Rsq Training[i] = R2[1];
dt_results:Rsq Validation[i] = R2[2];
dt_results:Rsq Test[i] = R2[3];
dt_results:RMSE Training[i] = RMSE[1];
dt_results:RMSE Validation[i] = RMSE[2];
dt_results:RMSE Test[i] = RMSE[3];
dt_results:N Training[i] = N[1];
dt_results:N Validation[i] = N[2];
dt_results:N Test[i] = N[3];
);
回复:估計分區模型的調整表:結果很高興我能幫上忙!回复:估計分區模型的調整表:結果現在一切都很好,卡梅倫。 無法告訴你我多麼欣賞你的智慧!
回复:估計分區模型的調整表:結果RMSE 列將位於 numcolbox(2) 中,因此您可以像抓取 R2 一樣在腳本中抓取它。
要從報告中獲取類似的值,您只需要找出它們在顯示樹中的位置。 你可以在這裡看到如何做到這一點: https://www.jmp.com/support/help/14/view-the-display-tree.shtml
在我的腳本中,我有一個變量“report”,它包含對提升樹輸出的報告窗口的引用。 在報告中,標題為“總體統計”的大綱框包含帶有 R2 和 RMSE 的表格。 我使用'report [“Overall Statistics”] [numcolbox(1)]'到達帶有R2值的numcolbox顯示元素回复:估計分區模型的調整表:結果工作就像一個魅力,卡梅倫! 冒著耐心等待的風險,我將如何檢索 RMSE 和 R2? 或者,更一般地,對於我的教育,我如何確定 R2、RMSE 等的變量名稱,以便我可以在腳本中調用它們?
回复:估計分區模型的調整表:結果我改變了主意。編寫腳本並不難。這是一個示例數據庫中的增強樹和汽車物理數據的示例。我為此創建了一個調優表來試用,我正在附上。我還在 Car Physical Data 表中放置了一個驗證列。
這是腳本:
dt = Data Table("Car Physical Data");
dt_pars = Data Table("TuningTable");
//Get copy of pars table to store results
dt_results = dt_pars << Subset( All rows, Selected columns only( 0 ) );
dt_results << New Column("Rsq Training");
dt_results << New Column("Rsq Validation");
for(i = 1, i<= N Row(dt_pars), i++,
SPT = dt_pars:SplitsPerTree[i];
LR = dt_pars:Learning Rate[i];
RSR = dt_pars:Row Sampling Rate[i];
CSR = dt_pars:Column Sampling Rate[i];
str = Eval Insert("\[report = (dt << Boosted Tree(
Y( :Weight ),
X(
:Country,
:Type,
:Turning Circle,
:Displacement,
:Horsepower,
:Gas Tank Size
),
Validation( :Validation ),
Method( "Boosted Tree" ),
Splits per Tree( ^SPT^ ),
Number of Layers( 50 ),
Learning Rate( ^LR^ ),
Row Sampling Rate( ^RSR^ ),
Column Sampling Rate( ^CSR^ ),
Go,
invisible
)) << Report;]\");
//Fit the boosted tree
Eval(Parse(str));
//Get the Rsq values and insert them into the results table
R2 = report["Overall Statistics"][NumberColBox(1)] << Get;
report << Close Window;
dt_results:Rsq Training[i] = R2[1];
dt_results:Rsq Validation[i] = R2[2];
);我為結果表做了一堆 R2 列來製作下圖:
這應該很容易適應您提到的其他平台。
回复:估計分區模型的調整表:結果我認為您必須為此編寫一個腳本,這實際上需要重現內置功能的結果 + 獲取訓練集的其他所需指標。當然可行,但我不確定這是否值得。