Get startedFind research data and make a first prediction
Static notebook preview · outputs are cleared. Open in Colab or download the notebook to run the cells. Colab setup
!pip install "welt-client[parquet]"
Find research data and make a first prediction
Run the installation cell first, connect your workspace, then run the remaining cells in order. These are real hosted requests: fitting retains a private training dataset and predictor. No extra helper file is needed. Outputs are deliberately not saved in this source.
from welt import Client
with Client() as client:
client.connect()
from welt import Client
with Client() as client:
page = client.research_datasets(q="iris", availability="available", limit=10)
print([(item["id"], item["name"]) for item in page["items"]])
Search results may change. We select the Iris asset below, then download its current content. The SDK verifies the download. Its outcome column is target. Follow the same six modelling steps.
from pathlib import Path
from tempfile import mkdtemp
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score, classification_report
from welt import Client, Classifier
# 1. Get a real table from Welt's research inventory.
dataset_id = "asset-d839644b6de36fc5cafdda18c5daeca3"
path = Path(mkdtemp(prefix="welt-iris-")) / "iris.parquet"
with Client() as client:
info = client.research_dataset(dataset_id)
print("Dataset:", info["name"])
client.download_research_dataset(dataset_id, path)
data = pd.read_parquet(path)
target = "target" # The outcome column in this table.
# 2. Look at the rows before modelling.
print(data.head())
print("Rows and columns:", data.shape)
data.info()
print(data[target].value_counts())
# 3. Set aside test rows before fitting; never train on their answers.
train, test = train_test_split(
data, test_size=0.2, random_state=9, stratify=data[target])
query = test.drop(columns=target)
y_test = test[target]
print("Training rows:", len(train), "— Test rows:", len(test))
# 4. Create a model and train it on the training table.
model = Classifier(model="tabicl-v2", random_state=9)
model.fit(train, target=target)
# 5. Predict the held-out rows, without passing their target column.
predictions = model.predict(query)
print(pd.DataFrame({"actual": y_test.to_numpy(), "predicted": predictions}).head())
# 6. Compare predictions with the answers we kept aside.
print("Test accuracy:", accuracy_score(y_test, predictions))
print(classification_report(y_test, predictions, zero_division=0))
print("Keep this predictor ID:", model.predictor_id_)
Optional: load the table directly into a DataFrame with its column descriptions. load_research_dataset(..., metadata=True) returns the data and its catalogue metadata. No local file path is needed.
with Client() as client:
loaded, meta = client.load_research_dataset(dataset_id, metadata=True)
print(meta.name)
print(meta.column_descriptions)
print("Same table as the download:", loaded.equals(data))