Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Commitf491afc

Browse files
authored
Merge pull request#4 from postgresml/small-fixes
Small fixes
2 parentsfab7311 +28545c9 commitf491afc

File tree

2 files changed

+42
-13
lines changed

2 files changed

+42
-13
lines changed

‎pgml/pgml/model.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ def find_by_name(cls, name: str):
7979
1,
8080
)
8181
iflen(result)==0:
82-
returnNone
82+
raisePgMLException(f"Project '{name}' does not exist.")
8383

8484
project=Project()
8585
project.__dict__=dict(result[0])
@@ -206,14 +206,13 @@ def data(self):
206206
"""
207207
)
208208

209-
print(data)
210209
# Sanity check the data
211210
iflen(data)==0:
212-
PgMLException(
211+
raisePgMLException(
213212
f"Relation `{self.relation_name}` contains no rows. Did you pass the correct `relation_name`?"
214213
)
215214
ifself.y_column_namenotindata[0]:
216-
PgMLException(
215+
raisePgMLException(
217216
f"Column `{self.y_column_name}` not found. Did you pass the correct `y_column_name`?"
218217
)
219218

@@ -429,6 +428,10 @@ def train(
429428
algorithms= ["linear","random_forest"]
430429
elifobjective=="classification":
431430
algorithms= ["random_forest"]
431+
else:
432+
raisePgMLException(
433+
f"Unknown objective '{objective}', available options are: regression, classification"
434+
)
432435

433436
foralgorithm_nameinalgorithms:
434437
model=Model.create(project,snapshot,algorithm_name)

‎sql/install.sql

Lines changed: 35 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ CREATE EXTENSION IF NOT EXISTS plpython3u;
66
---
77
--- Create schema for models.
88
---
9-
DROPSCHEMA pgml CASCADE;
9+
--DROP SCHEMA pgml CASCADE;
1010
CREATESCHEMAIF NOT EXISTS pgml;
1111

1212
CREATE OR REPLACEFUNCTIONpgml.auto_updated_at(tbl regclass)
@@ -40,17 +40,17 @@ END;
4040
$$
4141
LANGUAGE plpgsql;
4242

43-
CREATETABLEpgml.projects(
43+
CREATETABLEIF NOT EXISTSpgml.projects(
4444
idBIGSERIALPRIMARY KEY,
4545
nameTEXTNOT NULL,
4646
objectiveTEXTNOT NULL,
4747
created_atTIMESTAMP WITHOUT TIME ZONENOT NULL DEFAULT clock_timestamp(),
4848
updated_atTIMESTAMP WITHOUT TIME ZONENOT NULL DEFAULT clock_timestamp()
4949
);
5050
SELECTpgml.auto_updated_at('pgml.projects');
51-
CREATEUNIQUE INDEXprojects_name_idxONpgml.projects(name);
51+
CREATEUNIQUE INDEXIF NOT EXISTSprojects_name_idxONpgml.projects(name);
5252

53-
CREATETABLEpgml.snapshots(
53+
CREATETABLEIF NOT EXISTSpgml.snapshots(
5454
idBIGSERIALPRIMARY KEY,
5555
relation_nameTEXTNOT NULL,
5656
y_column_nameTEXTNOT NULL,
@@ -62,7 +62,7 @@ CREATE TABLE pgml.snapshots(
6262
);
6363
SELECTpgml.auto_updated_at('pgml.snapshots');
6464

65-
CREATETABLEpgml.models(
65+
CREATETABLEIF NOT EXISTSpgml.models(
6666
idBIGSERIALPRIMARY KEY,
6767
project_idBIGINTNOT NULL,
6868
snapshot_idBIGINTNOT NULL,
@@ -76,17 +76,17 @@ CREATE TABLE pgml.models(
7676
CONSTRAINT project_id_fkFOREIGN KEY(project_id)REFERENCESpgml.projects(id),
7777
CONSTRAINT snapshot_id_fkFOREIGN KEY(snapshot_id)REFERENCESpgml.snapshots(id)
7878
);
79-
CREATEINDEXmodels_project_id_created_at_idxONpgml.models(project_id, created_at);
79+
CREATEINDEXIF NOT EXISTSmodels_project_id_created_at_idxONpgml.models(project_id, created_at);
8080
SELECTpgml.auto_updated_at('pgml.models');
8181

82-
CREATETABLEpgml.deployments(
82+
CREATETABLEIF NOT EXISTSpgml.deployments(
8383
project_idBIGINTNOT NULL,
8484
model_idBIGINTNOT NULL,
8585
created_atTIMESTAMP WITHOUT TIME ZONENOT NULL DEFAULT clock_timestamp(),
8686
CONSTRAINT project_id_fkFOREIGN KEY(project_id)REFERENCESpgml.projects(id),
8787
CONSTRAINT model_id_fkFOREIGN KEY(model_id)REFERENCESpgml.models(id)
8888
);
89-
CREATEINDEXdeployments_project_id_created_at_idxONpgml.deployments(project_id, created_at);
89+
CREATEINDEXIF NOT EXISTSdeployments_project_id_created_at_idxONpgml.deployments(project_id, created_at);
9090
SELECTpgml.auto_updated_at('pgml.deployments');
9191

9292

@@ -103,12 +103,15 @@ $$ LANGUAGE plpython3u;
103103
---
104104
--- Regression
105105
---
106+
DROPFUNCTION IF EXISTSpgml.train(project_nameTEXT, objectiveTEXT, relation_nameTEXT, y_column_nameTEXT);
106107
CREATE OR REPLACEFUNCTIONpgml.train(project_nameTEXT, objectiveTEXT, relation_nameTEXT, y_column_nameTEXT)
107-
RETURNSVOID
108+
RETURNSTABLE(project_nameTEXT, objectiveTEXT, statusTEXT)
108109
AS $$
109110
frompgml.model import train
110111

111112
train(project_name, objective, relation_name, y_column_name)
113+
114+
return [(project_name, objective,"deployed")]
112115
$$ LANGUAGE plpython3u;
113116

114117
---
@@ -121,3 +124,26 @@ AS $$
121124

122125
returnProject.find_by_name(project_name).deployed_model.predict([features,])[0]
123126
$$ LANGUAGE plpython3u;
127+
128+
---
129+
--- Quick status check on the system.
130+
---
131+
DROPVIEW IF EXISTSpgml.overview;
132+
CREATEVIEWpgml.overviewAS
133+
SELECT
134+
p.name,
135+
d.created_atAS deployed_at,
136+
p.objective,
137+
m.algorithm_name,
138+
m.mean_squared_error,
139+
m.r2_score,
140+
s.relation_name,
141+
s.y_column_name,
142+
s.test_sampling,
143+
s.test_size
144+
FROMpgml.projects p
145+
INNER JOINpgml.models mONp.id=m.project_id
146+
INNER JOINpgml.deployments dONd.project_id=p.id
147+
ANDd.model_id=m.id
148+
INNER JOINpgml.snapshots sONs.id=m.snapshot_id
149+
ORDER BYd.created_atDESC;

0 commit comments

Comments
 (0)

[8]ページ先頭

©2009-2025 Movatter.jp