13 m4_include(`SQLCommon.m4
') --'
212 DROP TYPE IF EXISTS MADLIB_SCHEMA.__logregr_result;
213 CREATE TYPE MADLIB_SCHEMA.__logregr_result AS (
214 coef DOUBLE PRECISION[],
215 log_likelihood DOUBLE PRECISION,
216 std_err DOUBLE PRECISION[],
217 z_stats DOUBLE PRECISION[],
218 p_values DOUBLE PRECISION[],
219 odds_ratios DOUBLE PRECISION[],
220 condition_no DOUBLE PRECISION,
222 num_iterations INTEGER
225 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_cg_step_transition(
230 RETURNS DOUBLE PRECISION[]
231 AS
'MODULE_PATHNAME',
'logregr_cg_step_transition'
232 LANGUAGE C IMMUTABLE;
234 ------------------------------------------------------------------------
236 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_irls_step_transition(
241 RETURNS DOUBLE PRECISION[]
242 AS
'MODULE_PATHNAME',
'logregr_irls_step_transition'
243 LANGUAGE C IMMUTABLE;
245 ------------------------------------------------------------------------
247 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_igd_step_transition(
252 RETURNS DOUBLE PRECISION[]
253 AS
'MODULE_PATHNAME',
'logregr_igd_step_transition'
254 LANGUAGE C IMMUTABLE;
256 ------------------------------------------------------------------------
258 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_cg_step_merge_states(
259 state1 DOUBLE PRECISION[],
260 state2 DOUBLE PRECISION[])
261 RETURNS DOUBLE PRECISION[]
262 AS
'MODULE_PATHNAME',
'logregr_cg_step_merge_states'
263 LANGUAGE C IMMUTABLE STRICT;
265 ------------------------------------------------------------------------
267 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_irls_step_merge_states(
268 state1 DOUBLE PRECISION[],
269 state2 DOUBLE PRECISION[])
270 RETURNS DOUBLE PRECISION[]
271 AS
'MODULE_PATHNAME',
'logregr_irls_step_merge_states'
272 LANGUAGE C IMMUTABLE STRICT;
274 ------------------------------------------------------------------------
276 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_igd_step_merge_states(
277 state1 DOUBLE PRECISION[],
278 state2 DOUBLE PRECISION[])
279 RETURNS DOUBLE PRECISION[]
280 AS
'MODULE_PATHNAME',
'logregr_igd_step_merge_states'
281 LANGUAGE C IMMUTABLE STRICT;
283 ------------------------------------------------------------------------
285 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_cg_step_final(
286 state DOUBLE PRECISION[])
287 RETURNS DOUBLE PRECISION[]
288 AS
'MODULE_PATHNAME',
'logregr_cg_step_final'
289 LANGUAGE C IMMUTABLE STRICT;
291 ------------------------------------------------------------------------
293 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_irls_step_final(
294 state DOUBLE PRECISION[])
295 RETURNS DOUBLE PRECISION[]
296 AS
'MODULE_PATHNAME',
'logregr_irls_step_final'
297 LANGUAGE C IMMUTABLE STRICT;
299 ------------------------------------------------------------------------
301 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_igd_step_final(
302 state DOUBLE PRECISION[])
303 RETURNS DOUBLE PRECISION[]
304 AS
'MODULE_PATHNAME',
'logregr_igd_step_final'
305 LANGUAGE C IMMUTABLE STRICT;
307 ------------------------------------------------------------------------
314 CREATE AGGREGATE MADLIB_SCHEMA.__logregr_cg_step(
317 DOUBLE PRECISION[]) (
319 STYPE=DOUBLE PRECISION[],
320 SFUNC=MADLIB_SCHEMA.__logregr_cg_step_transition,
321 m4_ifdef(`__GREENPLUM__
',`prefunc=MADLIB_SCHEMA.__logregr_cg_step_merge_states,')
322 FINALFUNC=MADLIB_SCHEMA.__logregr_cg_step_final,
323 INITCOND='{0,0,0,0,0,0}
'
332 CREATE AGGREGATE MADLIB_SCHEMA.__logregr_irls_step(
334 /*+ x */ DOUBLE PRECISION[],
335 /*+ previous_state */ DOUBLE PRECISION[]) (
337 STYPE=DOUBLE PRECISION[],
338 SFUNC=MADLIB_SCHEMA.__logregr_irls_step_transition,
339 m4_ifdef(`__GREENPLUM__',`prefunc=MADLIB_SCHEMA.__logregr_irls_step_merge_states,
')
340 FINALFUNC=MADLIB_SCHEMA.__logregr_irls_step_final,
344 ------------------------------------------------------------------------
351 CREATE AGGREGATE MADLIB_SCHEMA.__logregr_igd_step(
353 /*+ x */ DOUBLE PRECISION[],
354 /*+ previous_state */ DOUBLE PRECISION[]) (
356 STYPE=DOUBLE PRECISION[],
357 SFUNC=MADLIB_SCHEMA.__logregr_igd_step_transition,
358 m4_ifdef(`__GREENPLUM__',`prefunc=MADLIB_SCHEMA.__logregr_igd_step_merge_states,
')
359 FINALFUNC=MADLIB_SCHEMA.__logregr_igd_step_final,
360 INITCOND='{0,0,0,0,0}
'
363 ------------------------------------------------------------------------
365 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_cg_step_distance(
366 /*+ state1 */ DOUBLE PRECISION[],
367 /*+ state2 */ DOUBLE PRECISION[])
368 RETURNS DOUBLE PRECISION AS
369 'MODULE_PATHNAME
', 'internal_logregr_cg_step_distance
'
370 LANGUAGE c IMMUTABLE STRICT;
372 ------------------------------------------------------------------------
374 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_cg_result(
375 /*+ state */ DOUBLE PRECISION[])
376 RETURNS MADLIB_SCHEMA.__logregr_result AS
377 'MODULE_PATHNAME
', 'internal_logregr_cg_result
'
378 LANGUAGE c IMMUTABLE STRICT;
380 ------------------------------------------------------------------------
382 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_irls_step_distance(
383 /*+ state1 */ DOUBLE PRECISION[],
384 /*+ state2 */ DOUBLE PRECISION[])
385 RETURNS DOUBLE PRECISION AS
386 'MODULE_PATHNAME
', 'internal_logregr_irls_step_distance
'
387 LANGUAGE c IMMUTABLE STRICT;
389 ------------------------------------------------------------------------
391 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_irls_result(
392 /*+ state */ DOUBLE PRECISION[])
393 RETURNS MADLIB_SCHEMA.__logregr_result AS
394 'MODULE_PATHNAME
', 'internal_logregr_irls_result
'
395 LANGUAGE c IMMUTABLE STRICT;
397 ------------------------------------------------------------------------
399 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_igd_step_distance(
400 /*+ state1 */ DOUBLE PRECISION[],
401 /*+ state2 */ DOUBLE PRECISION[])
402 RETURNS DOUBLE PRECISION AS
403 'MODULE_PATHNAME
', 'internal_logregr_igd_step_distance
'
404 LANGUAGE c IMMUTABLE STRICT;
406 ------------------------------------------------------------------------
408 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.__logregr_igd_result(
409 /*+ state */ DOUBLE PRECISION[])
410 RETURNS MADLIB_SCHEMA.__logregr_result AS
411 'MODULE_PATHNAME
', 'internal_logregr_igd_result
'
412 LANGUAGE c IMMUTABLE STRICT;
414 ------------------------------------------------------------------------
477 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.logregr_train (
482 grouping_col VARCHAR,
485 tolerance DOUBLE PRECISION,
488 PythonFunction(regress, logistic, logregr_train)
489 $$ LANGUAGE plpythonu;
491 ------------------------------------------------------------------------
493 CREATE FUNCTION MADLIB_SCHEMA.logregr_train (
499 SELECT MADLIB_SCHEMA.logregr_train($1, $2, $3, $4, NULL::VARCHAR, 20, 'irls
', 0.0001, False);
500 $$ LANGUAGE sql VOLATILE;
502 ------------------------------------------------------------------------
504 CREATE FUNCTION MADLIB_SCHEMA.logregr_train (
509 grouping_col VARCHAR)
511 SELECT MADLIB_SCHEMA.logregr_train($1, $2, $3, $4, $5, 20, 'irls
', 0.0001, False);
512 $$LANGUAGE sql VOLATILE;
514 ------------------------------------------------------------------------
516 CREATE FUNCTION MADLIB_SCHEMA.logregr_train (
521 grouping_col VARCHAR,
524 SELECT MADLIB_SCHEMA.logregr_train($1, $2, $3, $4, $5, $6, 'irls
', 0.0001, False);
525 $$LANGUAGE sql VOLATILE;
527 ------------------------------------------------------------------------
529 CREATE FUNCTION MADLIB_SCHEMA.logregr_train (
534 grouping_col VARCHAR,
538 SELECT MADLIB_SCHEMA.logregr_train($1, $2, $3, $4, $5, $6, $7, 0.0001, False);
539 $$ LANGUAGE sql VOLATILE;
541 ------------------------------------------------------------------------
543 CREATE FUNCTION MADLIB_SCHEMA.logregr_train (
548 grouping_col VARCHAR,
551 tolerance DOUBLE PRECISION)
553 SELECT MADLIB_SCHEMA.logregr_train($1, $2, $3, $4, $5, $6, $7, $8, False);
554 $$ LANGUAGE sql VOLATILE;
556 ------------------------------------------------------------------------
580 CREATE OR REPLACE FUNCTION MADLIB_SCHEMA.logistic(x DOUBLE PRECISION)
581 RETURNS DOUBLE PRECISION
584 SELECT CASE WHEN -$1 < -37 THEN 1
585 WHEN -$1 > 709 THEN 0
586 ELSE 1 / (1 + exp(-$1))