13 m4_include(`SQLCommon.m4
') --'
326 DROP TYPE IF EXISTS MADLIB_SCHEMA.__logregr_result;
327 CREATE TYPE MADLIB_SCHEMA.__logregr_result AS (
328 coef DOUBLE PRECISION[],
329 log_likelihood DOUBLE PRECISION,
330 std_err DOUBLE PRECISION[],
331 z_stats DOUBLE PRECISION[],
332 p_values DOUBLE PRECISION[],
333 odds_ratios DOUBLE PRECISION[],
334 condition_no DOUBLE PRECISION,
336 num_iterations INTEGER
339 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_cg_step_transition(
344 RETURNS DOUBLE PRECISION[]
345 AS
'MODULE_PATHNAME',
'logregr_cg_step_transition'
346 LANGUAGE C IMMUTABLE;
348 ------------------------------------------------------------------------
350 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_irls_step_transition(
355 RETURNS DOUBLE PRECISION[]
356 AS
'MODULE_PATHNAME',
'logregr_irls_step_transition'
357 LANGUAGE C IMMUTABLE;
359 ------------------------------------------------------------------------
361 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_igd_step_transition(
366 RETURNS DOUBLE PRECISION[]
367 AS
'MODULE_PATHNAME',
'logregr_igd_step_transition'
368 LANGUAGE C IMMUTABLE;
370 ------------------------------------------------------------------------
372 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_cg_step_merge_states(
373 state1 DOUBLE PRECISION[],
374 state2 DOUBLE PRECISION[])
375 RETURNS DOUBLE PRECISION[]
376 AS
'MODULE_PATHNAME',
'logregr_cg_step_merge_states'
377 LANGUAGE C IMMUTABLE STRICT;
379 ------------------------------------------------------------------------
381 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_irls_step_merge_states(
382 state1 DOUBLE PRECISION[],
383 state2 DOUBLE PRECISION[])
384 RETURNS DOUBLE PRECISION[]
385 AS
'MODULE_PATHNAME',
'logregr_irls_step_merge_states'
386 LANGUAGE C IMMUTABLE STRICT;
388 ------------------------------------------------------------------------
390 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_igd_step_merge_states(
391 state1 DOUBLE PRECISION[],
392 state2 DOUBLE PRECISION[])
393 RETURNS DOUBLE PRECISION[]
394 AS
'MODULE_PATHNAME',
'logregr_igd_step_merge_states'
395 LANGUAGE C IMMUTABLE STRICT;
397 ------------------------------------------------------------------------
399 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_cg_step_final(
400 state DOUBLE PRECISION[])
401 RETURNS DOUBLE PRECISION[]
402 AS
'MODULE_PATHNAME',
'logregr_cg_step_final'
403 LANGUAGE C IMMUTABLE STRICT;
405 ------------------------------------------------------------------------
407 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_irls_step_final(
408 state DOUBLE PRECISION[])
409 RETURNS DOUBLE PRECISION[]
410 AS
'MODULE_PATHNAME',
'logregr_irls_step_final'
411 LANGUAGE C IMMUTABLE STRICT;
413 ------------------------------------------------------------------------
415 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_igd_step_final(
416 state DOUBLE PRECISION[])
417 RETURNS DOUBLE PRECISION[]
418 AS
'MODULE_PATHNAME',
'logregr_igd_step_final'
419 LANGUAGE C IMMUTABLE STRICT;
421 ------------------------------------------------------------------------
428 CREATE AGGREGATE MADLIB_SCHEMA.__logregr_cg_step(
431 DOUBLE PRECISION[]) (
433 STYPE=DOUBLE PRECISION[],
434 SFUNC=MADLIB_SCHEMA.__logregr_cg_step_transition,
435 m4_ifdef(`__GREENPLUM__
',`prefunc=MADLIB_SCHEMA.__logregr_cg_step_merge_states,')
436 FINALFUNC=MADLIB_SCHEMA.__logregr_cg_step_final,
437 INITCOND='{0,0,0,0,0,0}
'
446 CREATE AGGREGATE MADLIB_SCHEMA.__logregr_irls_step(
448 /*+ x */ DOUBLE PRECISION[],
449 /*+ previous_state */ DOUBLE PRECISION[]) (
451 STYPE=DOUBLE PRECISION[],
452 SFUNC=MADLIB_SCHEMA.__logregr_irls_step_transition,
453 m4_ifdef(`__GREENPLUM__',`prefunc=MADLIB_SCHEMA.__logregr_irls_step_merge_states,
')
454 FINALFUNC=MADLIB_SCHEMA.__logregr_irls_step_final,
458 ------------------------------------------------------------------------
465 CREATE AGGREGATE MADLIB_SCHEMA.__logregr_igd_step(
467 /*+ x */ DOUBLE PRECISION[],
468 /*+ previous_state */ DOUBLE PRECISION[]) (
470 STYPE=DOUBLE PRECISION[],
471 SFUNC=MADLIB_SCHEMA.__logregr_igd_step_transition,
472 m4_ifdef(`__GREENPLUM__',`prefunc=MADLIB_SCHEMA.__logregr_igd_step_merge_states,
')
473 FINALFUNC=MADLIB_SCHEMA.__logregr_igd_step_final,
474 INITCOND='{0,0,0,0,0}
'
477 ------------------------------------------------------------------------
479 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_cg_step_distance(
480 /*+ state1 */ DOUBLE PRECISION[],
481 /*+ state2 */ DOUBLE PRECISION[])
482 RETURNS DOUBLE PRECISION AS
483 'MODULE_PATHNAME
', 'internal_logregr_cg_step_distance
'
484 LANGUAGE c IMMUTABLE STRICT;
486 ------------------------------------------------------------------------
488 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_cg_result(
489 /*+ state */ DOUBLE PRECISION[])
490 RETURNS MADLIB_SCHEMA.__logregr_result AS
491 'MODULE_PATHNAME
', 'internal_logregr_cg_result
'
492 LANGUAGE c IMMUTABLE STRICT;
494 ------------------------------------------------------------------------
496 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_irls_step_distance(
497 /*+ state1 */ DOUBLE PRECISION[],
498 /*+ state2 */ DOUBLE PRECISION[])
499 RETURNS DOUBLE PRECISION AS
500 'MODULE_PATHNAME
', 'internal_logregr_irls_step_distance
'
501 LANGUAGE c IMMUTABLE STRICT;
503 ------------------------------------------------------------------------
505 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_irls_result(
506 /*+ state */ DOUBLE PRECISION[])
507 RETURNS MADLIB_SCHEMA.__logregr_result AS
508 'MODULE_PATHNAME
', 'internal_logregr_irls_result
'
509 LANGUAGE c IMMUTABLE STRICT;
511 ------------------------------------------------------------------------
513 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_igd_step_distance(
514 /*+ state1 */ DOUBLE PRECISION[],
515 /*+ state2 */ DOUBLE PRECISION[])
516 RETURNS DOUBLE PRECISION AS
517 'MODULE_PATHNAME
', 'internal_logregr_igd_step_distance
'
518 LANGUAGE c IMMUTABLE STRICT;
520 ------------------------------------------------------------------------
522 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_igd_result(
523 /*+ state */ DOUBLE PRECISION[])
524 RETURNS MADLIB_SCHEMA.__logregr_result AS
525 'MODULE_PATHNAME
', 'internal_logregr_igd_result
'
526 LANGUAGE c IMMUTABLE STRICT;
528 ------------------------------------------------------------------------
592 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.logregr_train (
597 grouping_col VARCHAR,
600 tolerance DOUBLE PRECISION,
603 PythonFunction(regress, logistic, logregr_train)
604 $$ LANGUAGE plpythonu;
606 ------------------------------------------------------------------------
608 CREATE FUNCTION MADLIB_SCHEMA.logregr_train (
614 SELECT MADLIB_SCHEMA.logregr_train($1, $2, $3, $4, NULL::VARCHAR, 20, 'irls
', 0.0001, False);
615 $$ LANGUAGE sql VOLATILE;
617 ------------------------------------------------------------------------
619 CREATE FUNCTION MADLIB_SCHEMA.logregr_train (
624 grouping_col VARCHAR)
626 SELECT MADLIB_SCHEMA.logregr_train($1, $2, $3, $4, $5, 20, 'irls
', 0.0001, False);
627 $$LANGUAGE sql VOLATILE;
629 ------------------------------------------------------------------------
631 CREATE FUNCTION MADLIB_SCHEMA.logregr_train (
636 grouping_col VARCHAR,
639 SELECT MADLIB_SCHEMA.logregr_train($1, $2, $3, $4, $5, $6, 'irls
', 0.0001, False);
640 $$LANGUAGE sql VOLATILE;
642 ------------------------------------------------------------------------
644 CREATE FUNCTION MADLIB_SCHEMA.logregr_train (
649 grouping_col VARCHAR,
653 SELECT MADLIB_SCHEMA.logregr_train($1, $2, $3, $4, $5, $6, $7, 0.0001, False);
654 $$ LANGUAGE sql VOLATILE;
656 ------------------------------------------------------------------------
658 CREATE FUNCTION MADLIB_SCHEMA.logregr_train (
663 grouping_col VARCHAR,
666 tolerance DOUBLE PRECISION)
668 SELECT MADLIB_SCHEMA.logregr_train($1, $2, $3, $4, $5, $6, $7, $8, False);
669 $$ LANGUAGE sql VOLATILE;
671 ------------------------------------------------------------------------
695 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.logistic(x DOUBLE PRECISION)
696 RETURNS DOUBLE PRECISION
699 SELECT CASE WHEN -$1 < -37 THEN 1
700 WHEN -$1 > 709 THEN 0
701 ELSE 1 / (1 + exp(-$1))