logistic_regression.server module

Server module for logistic regression

class logistic_regression.server.Server(config)[source]

Bases: object

The Server class. Responsible for aggregating results of the clients.

__init__(config)[source]

Initializes the server by setting the config and initializing the communication pool.

Parameters:

config (Config) – The configuration for the experiment

async static aggregate(gradient_per_client, weights_per_client)[source]

Aggregate gradients by taking weighted average. Works for gradients of any order. First sorts the gradients and weights in order, then averages the gradients based on their weights.

Parameters:
  • gradient_per_client (dict[str, ndarray[Any, dtype[float64]]]) – Dictionary containing clients as keys and their gradient as values.

  • weights_per_client (dict[str, int]) – Dictionary containing clients as keys and their weights as values.

Return type:

ndarray[Any, dtype[float64]]

Returns:

A weighted average of the gradients.

create_communication_pool()[source]

Create a communication pool with all the clients.

Return type:

Pool

Returns:

The communication pool

async get_gradients_from_clients(msg_id)[source]

Receive gradients from the clients and put them in a dictionary.

Parameters:

msg_id (str) – The message id for receiving the gradients.

Return type:

dict[str, ndarray[Any, dtype[float64]]]

Returns:

A dictionary containing the gradients. Each key is a client id and its value is the corresponding gradient from that client.

async get_weights_from_clients()[source]

Receive the weights from all clients.

Return type:

dict[str, int]

Returns:

A dictionary containing the weights. Each key is a client id and its value is the corresponding weight.

initial_model()[source]

Returns an initialized model.

Return type:

ndarray[Any, dtype[float64]]

Returns:

An initialized model (all zeros).

async preprocessing()[source]

Server’s role in data preprocessing. No action required in default implementation.

Return type:

None

async run()[source]

Runs the entire learning process.

Return type:

ndarray[Any, dtype[float64]]

Returns:

The outcome model.

Raises:

ValueError – if the learning rate is not set.