\qecho ================================================================= \qecho === Running: Naive-Bayes Classification ========================= \qecho ================================================================= \qecho \qecho === Refresh table: bayes ======================================== SET client_min_messages = error; DROP TABLE IF EXISTS bayes CASCADE; DROP TABLE IF EXISTS toclassify CASCADE; CREATE TABLE bayes ( id integer NOT NULL, class INTEGER, attributes INTEGER[], CONSTRAINT pk_bayes PRIMARY KEY (id) ); COPY bayes (id, class, attributes) FROM stdin; 1 1 {1, 2, 3} 3 1 {1, 4, 3} 5 2 {0, 2, 2} 2 1 {1, 2, 1} 4 2 {1, 2, 2} 6 2 {0, 1, 3} \. \qecho === Show training data ========================================== SELECT * FROM bayes; \qecho === Refresh table: toclassify =================================== CREATE TABLE toclassify ( id SERIAL NOT NULL, attributes INTEGER[], CONSTRAINT pk_toclassify PRIMARY KEY (id) ); COPY toclassify (attributes) FROM stdin; {0, 2, 1} {1, 2, 3} \. \qecho === Show Data we want to run Naive Bayes classification on ====== SELECT * FROM toclassify; \qecho === Precompute feature probabilities and class priors =========== DROP TABLE IF EXISTS nb_class_priors CASCADE; DROP TABLE IF EXISTS nb_feature_probs CASCADE; SELECT madlib.create_nb_prepared_data_tables( 'bayes', 'class', 'attributes', 3, 'nb_feature_probs', 'nb_class_priors'); \qecho === Show feature probabilities and class priors ================= SELECT * FROM nb_feature_probs ORDER BY class, attr, value; SELECT * FROM nb_class_priors ORDER BY class; \qecho === Run Naive Bayes ============================================= DROP VIEW IF EXISTS nb_classify_view_fast; SELECT madlib.create_nb_classify_view( 'nb_feature_probs', 'nb_class_priors', 'toclassify', 'id', 'attributes', 3, 'nb_classify_view_fast'); SELECT * from nb_classify_view_fast; \qecho === Look at the probabilities for each class \qecho === (Note we use Laplacian Smoothing): DROP VIEW IF EXISTS nb_probs_view_fast; SELECT madlib.create_nb_probs_view( 'nb_feature_probs', 'nb_class_priors', 'toclassify', 'id', 'attributes', 3, 'nb_probs_view_fast'); SELECT * FROM nb_probs_view_fast; RESET client_min_messages;