The unified classification interface is a new interface that combines various classification algorithms such as decision trees, logistic regression, naïve Bayes, and support vector machines. This interface aims to provide a unified approach to classification tasks.
------

SET SCHEMA DM_PAL;

DROP TABLE  PAL_DATA_TBL;
CREATE COLUMN TABLE PAL_DATA_TBL (
	"ID" INTEGER,
	"OUTLOOK" NVARCHAR(20),
	"TEMP" DOUBLE,
	"HUMIDITY" DOUBLE,
	"WINDY" NVARCHAR(10),
	"CLASS" NVARCHAR(20)
);
INSERT INTO PAL_DATA_TBL VALUES (1, 'Sunny', 75, 70.0, 'Yes', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (2, 'Sunny', 80, 90.0, 'Yes', 'Do not Play');
INSERT INTO PAL_DATA_TBL VALUES (3, 'Sunny', 85, 91.0, 'No', 'Do not Play');
INSERT INTO PAL_DATA_TBL VALUES (4, 'Sunny', 72, 95.0, 'No', 'Do not Play');
INSERT INTO PAL_DATA_TBL VALUES (5, 'Sunny', 73, 70.0, 'No', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (6, 'Overcast', 72.0, 90, 'Yes', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (7, 'Overcast', 83.0, 78, 'No', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (8, 'Overcast', 64.0, 65, 'Yes', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (9, 'Overcast', 81.0, 75, 'No', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (10, 'Rain', 71, 80.0, 'Yes', 'Do not Play');
INSERT INTO PAL_DATA_TBL VALUES (11, 'Rain', 65, 70.0, 'Yes', 'Do not Play');
INSERT INTO PAL_DATA_TBL VALUES (12, 'Rain', 75, 80.0, 'No', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (13, 'Rain', 68, 80.0, 'No', 'Play');
INSERT INTO PAL_DATA_TBL VALUES (14, 'Rain', 70, 96.0, 'No', 'Play');

DROP TABLE PAL_PARAMETER_TBL;
CREATE  COLUMN TABLE PAL_PARAMETER_TBL (
	"PARAM_NAME" NVARCHAR (100), 
	"INT_VALUE" INTEGER, 
	"DOUBLE_VALUE" DOUBLE, 
	"STRING_VALUE" NVARCHAR (100)
);

INSERT INTO PAL_PARAMETER_TBL VALUES ('FUNCTION', NULL, NULL, 'RDT');
INSERT INTO PAL_PARAMETER_TBL VALUES ('KEY', 1, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('SEED', 2, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('SPLIT_THRESHOLD', NULL, 0.0000001, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('MIN_SAMPLES_LEAF', 1, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('N_ESTIMATORS', 10, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('MAX_DEPTH', 55, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('PARTITION_METHOD', 2, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('PARTITION_RANDOM_SEED', 2, NULL, NULL);
INSERT INTO PAL_PARAMETER_TBL VALUES ('PARTITION_STRATIFIED_VARIABLE', NULL, NULL, 'CLASS');
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 ('NTILES', 2, NULL, NULL); 
INSERT INTO PAL_PARAMETER_TBL VALUES ('MODEL_FORMAT', 2, NULL, NULL);

DROP TABLE PAL_MODEL_RDT_TBL;  
CREATE COLUMN TABLE PAL_MODEL_RDT_TBL (
	"ROW_INDEX" INTEGER,
	"PART_INDEX" INTEGER,
	"MODEL_CONTENT" NCLOB
);

DROP TABLE PAL_IMP_TBL;
CREATE COLUMN TABLE PAL_IMP_TBL (
	"VARIABLE_NAME" NVARCHAR(256),
	"IMPORTANCE" DOUBLE
);

DROP TABLE PAL_STAT_TBL;
CREATE COLUMN TABLE PAL_STAT_TBL (
	"STAT_NAME" NVARCHAR(256),
	"STAT_VALUE" NVARCHAR(1000),
	"CLASS_NAME" NVARCHAR(256)
);

DROP TABLE PAL_CMATRIX_TBL;
CREATE COLUMN TABLE PAL_CMATRIX_TBL (
	"ACTUAL_CLASS" NVARCHAR(256),
	"PREDICTED_CLASS" NVARCHAR(256),
	"COUNT" INTEGER
);

DROP TABLE PAL_METRICS_TBL;
CREATE COLUMN TABLE PAL_METRICS_TBL (
	"NAME" NVARCHAR(256),
	"X" DOUBLE,
	"Y" DOUBLE 
);

DROP TABLE PAL_PARTITION_TBL;
CREATE COLUMN TABLE PAL_PARTITION_TBL (
	"DATA_ID" INTEGER,
	"TYPE" INTEGER
);


DO
BEGIN
	lt_data = SELECT * FROM PAL_DATA_TBL;
	lt_ctrl = SELECT * FROM PAL_PARAMETER_TBL;
	CALL _SYS_AFL.PAL_UNIFIED_CLASSIFICATION (:lt_data, :lt_ctrl, lt_model,lt_imp,lt_stat, lt_opt,lt_cm,lt_metrics,lt_partition,lt_ph1);
	INSERT INTO PAL_MODEL_RDT_TBL SELECT * FROM :lt_model;
	INSERT INTO PAL_IMP_TBL SELECT * FROM :lt_imp;
	INSERT INTO PAL_STAT_TBL SELECT * FROM :lt_stat;
	INSERT INTO PAL_CMATRIX_TBL SELECT * FROM :lt_cm;
	INSERT INTO PAL_METRICS_TBL SELECT * FROM :lt_metrics;
	INSERT INTO PAL_PARTITION_TBL SELECT * FROM :lt_partition;
END;
SELECT * FROM PAL_MODEL_RDT_TBL;
SELECT * FROM PAL_IMP_TBL;
SELECT * FROM PAL_STAT_TBL;
SELECT * FROM PAL_CMATRIX_TBL;
SELECT * FROM PAL_METRICS_TBL;
SELECT * FROM PAL_PARTITION_TBL;
