Skip to content

Commit b353a8e

Browse files
authored
Merge pull request #106 from rstudio/model-card
adding model card template
2 parents 7202cd8 + bb4fe60 commit b353a8e

File tree

8 files changed

+375
-25
lines changed

8 files changed

+375
-25
lines changed

.gitignore

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
/docs/site/*
2-
2+
docs/source/reference
3+
vetiver/templates/*.html
34
# Mac specific
45
.DS_Store
56

vetiver/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
from .handlers.xgboost import XGBoostHandler # noqa
1919
from .rsconnect import deploy_rsconnect # noqa
2020
from .monitor import compute_metrics, pin_metrics, plot_metrics, _rolling_df # noqa
21+
from .model_card import model_card # noqa
2122

2223
__author__ = "Isabel Zimmerman <isabel.zimmerman@rstudio.com>"
2324
__all__ = []

vetiver/data/__init__.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
sources = {
44
"mtcars": _files("vetiver") / "data/mtcars.csv",
55
"chicago": _files("vetiver") / "data/chicago.csv",
6+
"sacramento": _files("vetiver") / "data/sacramento.csv",
67
}
78

89

@@ -16,5 +17,6 @@ def __getattr__(k):
1617
f_path = sources.get("mtcars")
1718
if k == "chicago":
1819
f_path = sources.get("chicago")
19-
20+
elif k == "sacramento":
21+
f_path = sources.get("sacramento")
2022
return pd.read_csv(f_path)

vetiver/data/sacramento.csv

Lines changed: 173 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,173 @@
1+
"price","type","sqft","beds","baths"
2+
68212,"Residential",1167,3,1
3+
89921,"Condo",1122,3,1
4+
98937,"Residential",1146,3,2
5+
122682,"Residential",1329,4,2
6+
123000,"Residential",1240,4,2
7+
124100,"Residential",1601,3,2
8+
126640,"Residential",1088,3,2
9+
131200,"Residential",1380,4,2
10+
141000,"Condo",1039,2,2
11+
146250,"Residential",1418,3,2
12+
149593,"Residential",1146,4,2
13+
152000,"Condo",1304,2,2
14+
164000,"Residential",1120,4,1
15+
173000,"Residential",1590,4,2
16+
181000,"Residential",1172,3,2
17+
189000,"Residential",1420,3,2
18+
195000,"Multi_Family",2162,4,4
19+
231477,"Residential",1478,3,2
20+
234697,"Residential",1287,3,2
21+
242638,"Residential",2163,3,2
22+
244500,"Residential",1473,3,3
23+
254200,"Residential",1921,4,2
24+
263500,"Residential",1713,4,2
25+
265000,"Condo",1672,3,2
26+
285000,"Residential",2056,4,2
27+
292024,"Residential",1126,2,1
28+
334150,"Residential",1690,2,1
29+
370500,"Residential",2734,4,3
30+
372000,"Residential",2110,3,2
31+
430000,"Residential",3615,5,3
32+
510000,"Residential",3508,5,4
33+
539000,"Residential",2462,4,2
34+
98000,"Residential",1220,2,1
35+
99000,"Residential",1643,3,1
36+
100000,"Condo",722,1,1
37+
111000,"Residential",1039,3,1
38+
123750,"Residential",1110,3,2
39+
126000,"Residential",1080,3,2
40+
135500,"Residential",1264,3,2
41+
145000,"Residential",1448,4,2
42+
146000,"Residential",1183,4,2
43+
150000,"Residential",1364,3,2
44+
161653,"Residential",1156,3,2
45+
175000,"Residential",1671,3,2
46+
180400,"Residential",1716,3,2
47+
205000,"Residential",1953,4,3
48+
230000,"Residential",1567,3,2
49+
236250,"Residential",1291,3,1
50+
256054,"Multi_Family",2085,5,4
51+
261000,"Residential",1567,3,2
52+
270000,"Residential",1531,3,2
53+
280000,"Residential",2494,4,3
54+
330000,"Residential",1258,3,2
55+
350000,"Residential",2295,4,3
56+
460000,"Residential",2129,3,2
57+
504000,"Residential",2791,3,3
58+
613401,"Residential",3838,4,3
59+
614000,"Residential",3059,4,3.5
60+
48000,"Condo",484,1,1
61+
100000,"Condo",625,1,1
62+
101000,"Residential",888,2,1
63+
114750,"Residential",779,2,1
64+
116100,"Residential",1174,3,1
65+
120000,"Multi_Family",1995,4,4
66+
123000,"Residential",1104,3,2
67+
130000,"Residential",1209,3,2
68+
133105,"Residential",1139,2,1
69+
136500,"Residential",1690,2,2
70+
145000,"Residential",1120,3,2
71+
147000,"Residential",1590,4,2
72+
149600,"Residential",1407,3,2
73+
150000,"Condo",1057,2,2
74+
150000,"Residential",1646,3,2
75+
165000,"Residential",1112,2,2
76+
168000,"Residential",1039,3,1
77+
188325,"Residential",1152,3,1
78+
215000,"Residential",1856,4,2
79+
220000,"Residential",950,2,1
80+
232000,"Residential",1375,3,2
81+
232500,"Condo",1250,2,2
82+
233641,"Residential",1058,3,1
83+
236000,"Multi_Family",2382,5,4
84+
240000,"Residential",1816,4,2
85+
252155,"Residential",1574,4,2
86+
254172,"Residential",1830,3,2
87+
261000,"Residential",1904,4,2
88+
270000,"Residential",1457,3,2
89+
285000,"Multi_Family",960,2,2
90+
296000,"Residential",2109,4,2
91+
304000,"Residential",2489,5,3
92+
305000,"Residential",1851,4,3
93+
325000,"Residential",2347,5,3
94+
351000,"Residential",2789,4,2
95+
355000,"Residential",3499,5,3.5
96+
360552,"Residential",1871,4,2
97+
362305,"Residential",1800,3,2
98+
395100,"Residential",3281,5,3
99+
408431,"Residential",2085,4,3
100+
445000,"Residential",2002,4,2
101+
500000,"Residential",1905,3,2
102+
677048,"Residential",2025,3,2
103+
95625,"Residential",1089,3,2
104+
115000,"Residential",911,2,1
105+
115000,"Condo",846,1,1
106+
115620,"Residential",1410,3,2
107+
131750,"Residential",1118,2,2
108+
137760,"Residential",1260,3,2
109+
176095,"Residential",1200,3,2
110+
176250,"Residential",1170,3,2
111+
178000,"Residential",1199,3,2
112+
190000,"Residential",796,2,1
113+
193000,"Residential",1452,3,2
114+
193500,"Residential",1513,3,2
115+
204918,"Residential",2306,4,2
116+
210944,"Condo",984,1,1
117+
212500,"Condo",1462,3,2.5
118+
220000,"Residential",1566,4,2
119+
220000,"Residential",1419,4,2
120+
220000,"Residential",1261,3,2
121+
232500,"Residential",2258,5,3
122+
233000,"Residential",1074,3,2
123+
242000,"Residential",1406,2,2
124+
243500,"Residential",1876,4,2
125+
247000,"Residential",1676,3,2
126+
249000,"Residential",1899,4,3
127+
260000,"Residential",1196,3,2
128+
270000,"Residential",2750,2,2
129+
271000,"Residential",1910,3,2.5
130+
280000,"Residential",1443,3,2
131+
285000,"Residential",1857,3,2
132+
289000,"Residential",2096,4,3
133+
290000,"Residential",1720,3,2
134+
294000,"Residential",1282,3,2
135+
299000,"Residential",1144,2,1
136+
300000,"Residential",1457,3,2
137+
300567,"Residential",1577,3,2
138+
310000,"Residential",1800,4,3
139+
315000,"Residential",3134,5,3
140+
326951,"Residential",1744,3,2
141+
331200,"Residential",2484,4,2
142+
335000,"Residential",1616,3,2
143+
350000,"Residential",2960,3,2
144+
375000,"Residential",2616,5,3
145+
380000,"Residential",1727,3,1
146+
400000,"Residential",3566,5,4
147+
455000,"Residential",2379,4,3
148+
600000,"Residential",3901,5,5
149+
61000,"Residential",876,2,1
150+
70000,"Residential",1011,2,1
151+
80000,"Residential",1158,4,2
152+
85500,"Residential",1092,3,2
153+
92000,"Condo",956,2,1
154+
112500,"Residential",1249,3,2
155+
114800,"Residential",1161,3,2
156+
128687,"Residential",962,3,1
157+
130000,"Residential",1127,3,2
158+
132000,"Residential",970,2,1
159+
145846,"Residential",1543,3,2
160+
150000,"Residential",1392,4,2
161+
170000,"Residential",1232,3,2
162+
171750,"Residential",1177,2,2
163+
172000,"Residential",1582,3,2
164+
176850,"Residential",1477,4,2
165+
189000,"Residential",1039,3,1
166+
191675,"Residential",1638,3,2
167+
209347,"Residential",1262,3,2
168+
216000,"Residential",1416,3,2
169+
216021,"Residential",888,3,1
170+
220000,"Residential",1770,4,2
171+
224252,"Residential",960,3,1
172+
228000,"Residential",1450,3,2
173+
235301,"Residential",1685,4,2

vetiver/model_card.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from importlib_resources import files as _files
2+
import shutil
3+
4+
5+
def model_card(path="."):
6+
"""Create a model card for documentation
7+
8+
Parameters
9+
----------
10+
path : str
11+
Path to save model card
12+
13+
Notes
14+
-----
15+
This model card is generated as a Quarto document. For more info on
16+
Quarto, visit https://quarto.org/
17+
"""
18+
src_path = _files("vetiver") / "templates/model_card.qmd"
19+
20+
return shutil.copy(src=src_path, dst=path)

vetiver/pin_read_write.py

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,17 @@
11
import warnings
2-
32
from .vetiver_model import VetiverModel
4-
from .write_fastapi import _choose_version
3+
4+
5+
class ModelCard(UserWarning):
6+
def __init__(
7+
self,
8+
message="""
9+
Model Cards provide a framework for transparent, responsible reporting.
10+
Use the vetiver `.qmd` Quarto template as a place to start,
11+
with vetiver.model_card()""",
12+
):
13+
self.message = message
14+
super().__init__(self.message)
515

616

717
def vetiver_pin_write(board, model: VetiverModel, versioned: bool = True):
@@ -20,6 +30,9 @@ def vetiver_pin_write(board, model: VetiverModel, versioned: bool = True):
2030
if not board.allow_pickle_read:
2131
raise NotImplementedError # must be pickle-able
2232

33+
warnings.simplefilter("once", ModelCard)
34+
warnings.warn(ModelCard().message)
35+
2336
board.pin_write(
2437
model.model,
2538
name=model.model_name,
@@ -32,15 +45,6 @@ def vetiver_pin_write(board, model: VetiverModel, versioned: bool = True):
3245
versioned=versioned,
3346
)
3447

35-
# to do: Model card
36-
37-
# message = """
38-
# Create a Model Card for your published model.
39-
# Model Cards provide a framework for transparent, responsible reporting.
40-
# Use the vetiver `.Rmd` template as a place to start."""
41-
42-
# warnings.warn(message=message)
43-
4448

4549
def vetiver_pin_read(board, name: str, version: str = None) -> VetiverModel:
4650
"""
@@ -72,10 +76,6 @@ def vetiver_pin_read(board, name: str, version: str = None) -> VetiverModel:
7276
DeprecationWarning,
7377
)
7478

75-
version = (
76-
version if version is not None else _choose_version(board.pin_versions(name))
77-
)
78-
7979
v = VetiverModel.from_pin(board=board, name=name, version=version)
8080

8181
return v

0 commit comments

Comments
 (0)