datagoat
Ask typed questions about cases: yesno, score, choice and rank. Datagoat answers from what
happened to cases like them. Every answered case comes back with a chance, the columns that moved
it, and a signed Verdict. When the record can't support an answer, Datagoat refuses rather than
guess.
pip install datagoat
datagoat signup # a free test key for the sample records
datagoat sample # ask about sample:saas_churn and verify the answer
Every call sends a record (past cases and their outcomes), questions, and the cases to answer:
from datagoat import Client, yesno, score
dg = Client() # DATAGOAT_API_KEY, or the key `datagoat signup` saved
out = dg.ask(
{"churn": yesno("churned", outcome_is_desirable=False),
"risk": score("churned", outcome_is_desirable=False)},
dataset_id="sample:saas_churn", entity_column="customer_id", subject_kind="org",
cases={"ids": ["cust_0001"]},
)
a = out["answers"]["churn"]
a["state"] # "answered" | "refused" | "not_yet": read it first
a["cases"][0]["p"] # 0.7005: the chance cust_0001 churns
a["cases"][0]["reasons"] # the columns that moved it, which way, and each value's band ("tenure_months 17 to under 26")
a["pattern"] # where churn is most common ("support_tickets over 3", …)
a["cases"][0]["pattern_match"] # {"matched": 3, "of": 4, "met": [...]}
dg.verify_all(out) # True: every Verdict is genuine
Records that aren't one row per case take a shape: events, series, panel, signals,
traces or snapshots.
Building a product for your own customers:
dg.suggest("customer_id", dataset_id="ds_…") # which questions the table can answer
fit = dg.ask({"churn": yesno("churned", outcome_is_desirable=False)}, dataset_id="ds_…",
entity_column="customer_id", subject_kind="org", cases={"ids": ["c1"]},
namespace="acme", model_ttl_days=180) # one namespace per customer
ref = fit["answers"]["churn"]["model_ref"]
dg.ask({"churn": from_model(ref)}, entity_column="customer_id", subject_kind="org",
cases={"rows": new_rows}) # no record, no fit
dg.extend_model(ref, 365); dg.delete_model(ref)
Guide: https://datagoat.io/docs/build
At volume: dg.ask_many(questions, cases={"ids": ids}, ...) asks about more than 10,000 cases in
chunks on one fit and joins them in order; export="csv" on ask adds a CSV of every case
(dg.download(out["export"]["results_url"], "results.csv")). The client retries rate limits and
safe calls on its own.
- Docs: https://datagoat.io/docs
- SDK reference: https://datagoat.io/docs/sdks
- Quick start: https://datagoat.io/docs/quickstart
Release files for datagoat 1.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| datagoat-1.4.0.tar.gz | 23.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| datagoat-1.4.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.6 kB
Release files / datagoat-1.4.0.tar.gz
| Download URL | datagoat-1.4.0.tar.gz |
|---|---|
| Size | 23.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
031db154bd441d9316ecea3c369f51cab39bfa05bc99c86e760fda2deb99c6bc
|
|
BLAKE2b-256 checksum How to use checksums |
abb7e1e9953d641813794219c6ac4d6adfbe807d457413e9357f51fedec9c6e8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|
Release files / datagoat-1.4.0-py3-none-any.whl
| Download URL | datagoat-1.4.0-py3-none-any.whl |
|---|---|
| Size | 18.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
19be6045009228ac16507524074d06426c22ea41d5c9668e4688f4b6e74d2169
|
|
BLAKE2b-256 checksum How to use checksums |
f0c6637cfa448fb328c30b2a74c04e5dc7914d75d8bec1ff7335449652dab417
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.10
|