Unified regression is a tool that provides a unified interface for calling various regression algorithms. These algorithms include GEO, LOG, EXP, GLM, MLR, POL, DT, HGBT, MLP, RDT, and SVM. However, MLP only supports a single target column and will throw an error if multiple target columns are used. DT, HGBT, RDT, and SVM support continuous target columns and can be used with regression algorithms. For more information on each specific regression method, refer to the corresponding topic.
------

SET SCHEMA DM_PAL;

DROP TABLE PAL_DATA_TBL;
CREATE COLUMN TABLE PAL_DATA_TBL(
     "ID" INTEGER,
     "X1" DOUBLE,
     "X2" VARCHAR (100),
     "X3" INTEGER,
     "Y" DOUBLE
);
INSERT INTO PAL_DATA_TBL VALUES (0, 0.0, 'A', 1, -6.879);
INSERT INTO PAL_DATA_TBL VALUES (1, 0.50, 'A', 1, -3.449);
INSERT INTO PAL_DATA_TBL VALUES (2, 0.54, 'B', 1, 6.635);
INSERT INTO PAL_DATA_TBL VALUES (3, 1.04, 'B', 1, 11.844);
INSERT INTO PAL_DATA_TBL VALUES (4, 1.50, 'A', 1, 2.786);
INSERT INTO PAL_DATA_TBL VALUES (5, 0.04, 'B', 2, 2.389);
INSERT INTO PAL_DATA_TBL VALUES (6, 2.00, 'A', 2, -0.011);
INSERT INTO PAL_DATA_TBL VALUES (7, 2.04, 'B', 2, 8.839);
INSERT INTO PAL_DATA_TBL VALUES (8, 1.54, 'B', 1, 4.689);
INSERT INTO PAL_DATA_TBL VALUES (9, 1.00, 'A', 2, -5.507);

DROP TABLE PAL_PARAMETER_TBL;
CREATE COLUMN TABLE PAL_PARAMETER_TBL (
    "PARAM_NAME" VARCHAR (256),
    "INT_VALUE" INTEGER,
    "DOUBLE_VALUE" DOUBLE,
    "STRING_VALUE" VARCHAR (1000)
);

INSERT INTO PAL_PARAMETER_TBL VALUES ('FUNCTION',null,null,'MLR'); 
INSERT INTO PAL_PARAMETER_TBL VALUES ('PARTITION_METHOD',2,null,null); 
INSERT INTO PAL_PARAMETER_TBL VALUES ('PARTITION_TRAINING_PERCENT', null,0.7,null);
INSERT INTO PAL_PARAMETER_TBL VALUES ('OUTPUT_PARTITION_RESULT', 1,null, null);
INSERT INTO PAL_PARAMETER_TBL VALUES ('THREAD_RATIO', null,0.5,null);
INSERT INTO PAL_PARAMETER_TBL VALUES ('LABEL', null,null,'X3');

--CALL _SYS_AFL.PAL_UNIFIED_REGRESSION(PAL_DATA_TBL, PAL_PARAMETER_TBL, ?, ?, ?, ?, ?, ?); 

DROP TABLE PAL_DATA_MODEL_TBL;
CREATE COLUMN TABLE PAL_DATA_MODEL_TBL(
     "ROW_INDEX" INTEGER,
     "PART_INDEX" INTEGER,
     "MODEL_CONTENT" VARCHAR (5000)
);

DO BEGIN
  data_tab = SELECT * FROM PAL_DATA_TBL; 
  control_tab = SELECT * FROM PAL_PARAMETER_TBL; 
  CALL _SYS_AFL.PAL_UNIFIED_REGRESSION(:data_tab, :control_tab, model_tab, stats_tab, optimal_parameter_tab, partition_result, place_holder_1_tab, place_holder_2_tab); 
  INSERT into PAL_DATA_MODEL_TBL SELECT * FROM :model_tab; 
END
