用於估計分區模型的調整表:結果分區模型(樹、引導、提升)的一個選項是使用調整設計表。 結果首先包含一個表格,其中包括設計點以及每個設計點的驗證 R 平方和驗證 RMSE。 我需要讓表格也顯示訓練 R 平方、訓練 RMSE、測試 R 平方和測試 RMSE。 任何人都可以在這裡提供幫助 - 也許可以提供腳本嗎?
這些統計數據以及更多數據顯示在所選模型的表格下方,但我需要所有設計點的這些統計數據。 讓我瘋狂的方法是這樣的:我希望能夠產生一個圖表,顯示驗證 R2 和訓練 R2 與學習率的關係,以顯示隨著學習率增加而發生的過度擬合量。
回覆:用於估計分區模型的調整表:結果卡梅倫,我對 JMP 腳本的細節有了很多了解。 再一次,這工作得很好。 再次感謝你。 我非常感謝你的幫助。
回覆:用於估計分區模型的調整表:結果看起來 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 等的變數名稱,以便我可以在腳本中呼叫它們?
回覆:用於估計分區模型的調整表:結果我改變了主意。編寫腳本並不太難。以下是範例資料庫中的提升樹和汽車物理資料的範例。我為此創建了一個調整表來嘗試,並將其附在後面。我還在“汽車物理數據”表中放置了一個驗證列。
這是腳本:
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 列來製作下圖:
這應該很容易適應您提到的其他平台。
回覆:用於估計分區模型的調整表:結果我認為您必須為此編寫一個腳本,這實際上需要重現內建功能的結果+獲取訓練集的其他所需指標。當然可行,但我不確定這是否值得付出努力。