🌐 AI搜索 & 代理 主页
Skip to content

Commit 45cd3a3

Browse files
committed
stuff
1 parent 74bfa5e commit 45cd3a3

File tree

3 files changed

+30
-11
lines changed

3 files changed

+30
-11
lines changed

pgml/README.md

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,19 @@
1-
# pgml
1+
# PgML - Postgres Machine Learning
2+
3+
This package implements data processing, training and scoring of ML models. It is built to be used
4+
inside PL/Python functions, inside a Postgres connection process.
5+
6+
Most functions can work in any Python environment; some functions are tightly coupled to
7+
PL/Python by requiring a `plpy` object passed in as an argument: it provides database access methods.
8+
9+
## Installation
10+
11+
For now, we require that this package is installed into the system Python packages space:
12+
13+
```bash
14+
sudo pip3 setup.py install
15+
```
16+
17+
## Usage
18+
19+
See `../sql/install.sql` for list of functions. This package is not meant to be used directly.

sql/install.sql

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,13 @@
22
-- Create the PL/Python3 extension.
33
CREATE EXTENSION IF NOT EXISTS plpython3u;
44

5+
DROP SCHEMA pgml CASCADE;
6+
CREATE SCHEMA IF NOT EXISTS pgml;
7+
58
---
69
--- Extension version.
710
---
8-
CREATE OR REPLACE FUNCTION pgml_version()
11+
CREATE OR REPLACE FUNCTION pgml.version()
912
RETURNS TEXT
1013
AS $$
1114
import pgml
@@ -15,7 +18,6 @@ $$ LANGUAGE plpython3u;
1518
---
1619
--- Track table versions.
1720
---
18-
CREATE SCHEMA IF NOT EXISTS pgml;
1921
CREATE TABLE pgml.model_versions(
2022
id BIGSERIAL PRIMARY KEY,
2123
name VARCHAR,
@@ -33,7 +35,7 @@ CREATE TABLE pgml.model_versions(
3335
--- Run some validations on the table/view to make sure
3436
--- it'll work without our package.
3537
---
36-
CREATE OR REPLACE FUNCTION pgml_validate(table_name TEXT)
38+
CREATE OR REPLACE FUNCTION pgml.validate(table_name TEXT)
3739
RETURNS BOOL
3840
AS $$
3941
from pgml.sql import all_rows
@@ -47,7 +49,7 @@ $$ LANGUAGE plpython3u;
4749
---
4850
--- Train the model.
4951
---
50-
CREATE OR REPLACE FUNCTION pgml_train(table_name TEXT, y TEXT)
52+
CREATE OR REPLACE FUNCTION pgml.train(table_name TEXT, y TEXT)
5153
RETURNS TEXT
5254
AS $$
5355
from pgml.train import train
@@ -88,8 +90,7 @@ $$ LANGUAGE plpython3u;
8890
---
8991
--- Predict
9092
---
91-
DROP FUNCTION pgml_score(model_name TEXT, VARIADIC features DOUBLE PRECISION[]);
92-
CREATE OR REPLACE FUNCTION pgml_score(model_name TEXT, VARIADIC features DOUBLE PRECISION[])
93+
CREATE OR REPLACE FUNCTION pgml.score(model_name TEXT, VARIADIC features DOUBLE PRECISION[])
9394
RETURNS DOUBLE PRECISION
9495
AS $$
9596
from pgml.sql import models_directory

sql/test.sql

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,21 @@
44
\i sql/install.sql
55
\i data/winequality-red.sql
66

7-
SELECT pgml_version();
7+
SELECT pgml.version();
88

99
-- Valiate our wine data.
10-
SELECT pgml_validate('wine_quality_red');
10+
SELECT pgml.validate('wine_quality_red');
1111

1212
-- Train twice
13-
SELECT pgml_train('wine_quality_red', 'quality');
13+
SELECT pgml.train('wine_quality_red', 'quality');
1414

1515
SELECT * FROM pgml.model_versions;
1616

1717
\timing
1818
WITH latest_model AS (
1919
SELECT name || '_' || id AS model_name FROM pgml.model_versions ORDER BY id DESC LIMIT 1
2020
)
21-
SELECT pgml_score(
21+
SELECT pgml.score(
2222
(SELECT model_name FROM latest_model), -- last model we just trained
2323

2424
-- features as variadic arguments

0 commit comments

Comments
 (0)