This is an automated email from the ASF dual-hosted git repository.

nkak pushed a commit to branch madlib2-master
in repository https://gitbox.apache.org/repos/asf/madlib.git

commit c9987434d4bef4dc468ac9bbead456e5103b4693
Author: Nikhil Kak <[email protected]>
AuthorDate: Tue Feb 20 11:11:36 2024 -0800

    PMML: Improve multinom dev-check tests
    
    JIRA: MADLIB-1517
    
    This commit adds a few more multinom pmml tests including grouping and no
    intercept
---
 .../modules/pmml/test/pmml_multinom.sql_in         | 107 ++++++++++++++++++---
 1 file changed, 91 insertions(+), 16 deletions(-)

diff --git a/src/ports/postgres/modules/pmml/test/pmml_multinom.sql_in 
b/src/ports/postgres/modules/pmml/test/pmml_multinom.sql_in
index 576d96ac..07f8e0a9 100644
--- a/src/ports/postgres/modules/pmml/test/pmml_multinom.sql_in
+++ b/src/ports/postgres/modules/pmml/test/pmml_multinom.sql_in
@@ -216,27 +216,82 @@ INSERT INTO multinom_test(feat1, feat2, cat, g) VALUES
 (2,62,2,'B');
 ALTER TABLE multinom_test ADD COLUMN id SERIAL;
 
-DROP TABLE IF EXISTS mglm_out, mglm_out_summary;
+-- '0' as ref category
+DROP TABLE IF EXISTS multinom_model, multinom_model_summary;
 SELECT multinom(
     'multinom_test',
-    'mglm_out',
+    'multinom_model',
     'cat',
     'ARRAY[1, feat1, feat2]',
     '0',
     'logit');
-DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('mglm_out','multinom_test', 'multinom_predict_out', 
'probability',FALSE,'id');
-SELECT test_pmml_output('multinom_test', 'mglm_out', 'multinom_predict_out', 
'id', '0', 'probability_0');
-SELECT test_pmml_output('multinom_test', 'mglm_out', 'multinom_predict_out', 
'id', '1', 'probability_1');
-SELECT test_pmml_output('multinom_test', 'mglm_out', 'multinom_predict_out', 
'id', '2', 'probability_2');
+DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('multinom_model','multinom_test', 'multinom_predict_out', 
'probability',FALSE,'id');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', '0', 'probability_0');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', '1', 'probability_1');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', '2', 'probability_2');
+
+DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('multinom_model','multinom_test', 'multinom_predict_out', 
'response',FALSE,'id');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', 'category', 'predicted_cat_pmml_prediction');
+
+-- '2' as ref category
+DROP TABLE IF EXISTS multinom_model, multinom_model_summary;
+SELECT multinom(
+    'multinom_test',
+    'multinom_model',
+    'cat',
+    'ARRAY[1, feat1, feat2]',
+    '2',
+    'logit', NULL,
+    'max_iter=100,optimizer=irls,tolerance=1e-6');
+DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('multinom_model','multinom_test', 'multinom_predict_out', 
'probability',FALSE,'id');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', '0', 'probability_0');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', '1', 'probability_1');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', '2', 'probability_2');
+
+DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('multinom_model','multinom_test', 'multinom_predict_out', 
'response',FALSE,'id');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', 'category', 'predicted_cat_pmml_prediction');
+
+------------------------------------ without intercept 
-------------------------------------------------------------------
+-- '0' as ref category
+DROP TABLE IF EXISTS multinom_model, multinom_model_summary;
+SELECT multinom(
+    'multinom_test',
+    'multinom_model',
+    'cat',
+    'ARRAY[feat1, feat2]',
+    '0',
+    'logit');
+DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('multinom_model','multinom_test', 'multinom_predict_out', 
'probability',FALSE,'id');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', '0', 'probability_0');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', '1', 'probability_1');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', '2', 'probability_2');
+
+DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('multinom_model','multinom_test', 'multinom_predict_out', 
'response',FALSE,'id');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', 'category', 'predicted_cat_pmml_prediction');
+
+-- '2' as ref category
+DROP TABLE IF EXISTS multinom_model, multinom_model_summary;
+SELECT multinom(
+    'multinom_test',
+    'multinom_model',
+    'cat',
+    'ARRAY[feat1, feat2]',
+    '2',
+    'logit');
+DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('multinom_model','multinom_test', 'multinom_predict_out', 
'probability',FALSE,'id');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', '0', 'probability_0');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', '1', 'probability_1');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', '2', 'probability_2');
+
+DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('multinom_model','multinom_test', 'multinom_predict_out', 
'response',FALSE,'id');
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_out', 'id', 'category', 'predicted_cat_pmml_prediction');
 
-DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('mglm_out','multinom_test', 'multinom_predict_out', 
'response',FALSE,'id');
-SELECT test_pmml_output('multinom_test', 'mglm_out', 'multinom_predict_out', 
'id', 'category', 'predicted_cat_pmml_prediction');
 
 ------------------------------------ with grouping 
-------------------------------------------------------------------
--- DROP TABLE IF EXISTS mglm_grp_out, mglm_grp_out_summary;
+DROP TABLE IF EXISTS multinom_model, multinom_model_summary;
 SELECT multinom(
     'multinom_test',
-    'mglm_grp_out',
+    'multinom_model',
     'cat',
     'ARRAY[1, feat1, feat2]',
     '0',
@@ -244,10 +299,30 @@ SELECT multinom(
     'g');
 
 -- PMML export
-SELECT pmml('mglm_grp_out');
-DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('mglm_grp_out','multinom_test', 'multinom_predict_out', 
'probability',FALSE,'id');
-CREATE TABLE multinom_predict_grp_out as (SELECT a.id, a.g, b."0", b."1", 
b."2", a.feat1, a.feat2 FROM multinom_test AS a LEFT JOIN multinom_predict_out 
AS b on a.id =b.id);
-SELECT test_pmml_output('multinom_test', 'mglm_grp_out', 
'multinom_predict_grp_out', 'id', '0', 'probability_0','g');
+DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('multinom_model','multinom_test', 'multinom_predict_out', 
'probability',FALSE,'id');
+DROP TABLE IF EXISTS multinom_predict_grp_out; CREATE TABLE 
multinom_predict_grp_out as (SELECT a.id, a.g, b."0", b."1", b."2", a.feat1, 
a.feat2 FROM multinom_test AS a LEFT JOIN multinom_predict_out AS b on a.id 
=b.id);
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_grp_out', 'id', '0', 'probability_0','g');
+
+DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('multinom_model','multinom_test', 'multinom_predict_out', 
'response',FALSE,'id');
+DROP TABLE IF EXISTS multinom_predict_grp_out; CREATE TABLE 
multinom_predict_grp_out as (SELECT a.id, a.g, b.category FROM multinom_test AS 
a LEFT JOIN multinom_predict_out AS b on a.id =b.id);
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_grp_out', 'id', 'category', 'predicted_cat_pmml_prediction', 
'g');
+
+---- without intercept -----
+DROP TABLE IF EXISTS multinom_model, multinom_model_summary;
+SELECT multinom(
+    'multinom_test',
+    'multinom_model',
+    'cat',
+    'ARRAY[feat1, feat2]',
+    '0',
+    'logit',
+    'g');
+
+-- PMML export
+DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('multinom_model','multinom_test', 'multinom_predict_out', 
'probability',FALSE,'id');
+DROP TABLE IF EXISTS multinom_predict_grp_out; CREATE TABLE 
multinom_predict_grp_out as (SELECT a.id, a.g, b."0", b."1", b."2", a.feat1, 
a.feat2 FROM multinom_test AS a LEFT JOIN multinom_predict_out AS b on a.id 
=b.id);
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_grp_out', 'id', '0', 'probability_0','g');
 
-DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('mglm_grp_out','multinom_test', 'multinom_predict_out', 
'response',FALSE,'id');
-SELECT test_pmml_output('multinom_test', 'mglm_grp_out', 
'multinom_predict_out', 'id', 'category', 'predicted_cat_pmml_prediction');
+DROP TABLE IF EXISTS multinom_predict_out; SELECT 
multinom_predict('multinom_model','multinom_test', 'multinom_predict_out', 
'response',FALSE,'id');
+DROP TABLE IF EXISTS multinom_predict_grp_out; CREATE TABLE 
multinom_predict_grp_out as (SELECT a.id, a.g, b.category FROM multinom_test AS 
a LEFT JOIN multinom_predict_out AS b on a.id =b.id);
+SELECT test_pmml_output('multinom_test', 'multinom_model', 
'multinom_predict_grp_out', 'id', 'category', 'predicted_cat_pmml_prediction', 
'g');

Reply via email to