VertiBench: Vertical Federated Learning Benchmark
Introduction
VertiBench is a benchmark for federated learning, split learning, and assisted learning on vertical partitioned data. It provides tools to synthetic vertical partitioned data from a given global dataset. VertiBench supports partition under various imbalance and correlation level, effectively simulating a wide-range of real-world vertical federated learning scenarios.
Installation
VertiBench has already been published on PyPI. The installation requires the installation of python>=3.9. To further install VertiBench, run the following command:
pip install vertibench
Getting Started
This examples includes the pipeline of split and evaluate. First, load your datasets or generate synthetic datasets.
from sklearn.datasets import make_classification
# Generate a large dataset
X, y = make_classification(n_samples=10000, n_features=10)
To split the dataset by importance,
from vertibench.Splitter import ImportanceSplitter
imp_splitter = ImportanceSplitter(num_parties=4, weights=[1, 1, 1, 3])
Xs = imp_splitter.split(X)
To split the dataset by correlation,
from vertibench.Splitter import CorrelationSplitter
corr_splitter = CorrelationSplitter(num_parties=4)
Xs = corr_splitter.fit_split(X)
To evaluate a feature split Xs in terms of party importance,
from vertibench.Evaluator import ImportanceEvaluator
from sklearn.linear_model import LogisticRegression
import numpy as np
model = LogisticRegression()
X = np.concatenate(Xs, axis=1)
model.fit(X, y)
imp_evaluator = ImportanceEvaluator()
imp_scores = imp_evaluator.evaluate(Xs, model.predict)
alpha = imp_evaluator.evaluate_alpha(scores=imp_scores)
print(f"Importance scores: {imp_scores}, alpha: {alpha}")
To evaluate a feature split in terms of correlation,
from vertibench.Evaluator import CorrelationEvaluator
corr_evaluator = CorrelationEvaluator()
corr_scores = corr_evaluator.fit_evaluate(Xs)
beta = corr_evaluator.evaluate_beta()
print(f"Correlation scores: {corr_scores}, beta: {beta}")
Metadata
Release files for vertibench 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| vertibench-0.1.2.tar.gz | 28.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| vertibench-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 50.9 kB
Release files / vertibench-0.1.2.tar.gz
| Download URL | vertibench-0.1.2.tar.gz |
|---|---|
| Size | 28.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a5d36020ad9149a550ddce84cd7b388aa4c34a4065fe799287f526316780f133
|
|
BLAKE2b-256 checksum How to use checksums |
0f2f36b0ff0c10810534e2134b038b700c552440a8f49f775f34fc3095363f68
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|
Release files / vertibench-0.1.2-py3-none-any.whl
| Download URL | vertibench-0.1.2-py3-none-any.whl |
|---|---|
| Size | 22.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b7b103df3ab738124eedbfa4b49442f46cd955521983101bd4907c953093d2cb
|
|
BLAKE2b-256 checksum How to use checksums |
057173890b2db1e1d242bd71f92b4e3f522dfbf47879210fb298e792c5234c53
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.2.0 CPython/3.9.25
|