# Frameworks, fusion methods, and Python versions #

These are the available machine learning model frameworks and model fusion methods for the Federated Learning model\. The software spec and frameworks are also compatible with specific Python versions\.

## Frameworks and fusion methods ##

This table lists supported software frameworks for building Federated Learning models\. For each framework you can see the supported model types, fusion methods, and hyperparameter options\.

<!-- <table> -->

Table 1\. Frameworks and fusion methods

| Frameworks                                                                                                                         | Model Type      | Fusion Method                                  | Description                                                                                                                       | Hyperparameters                                                                                                             |
| ---------------------------------------------------------------------------------------------------------------------------------- | --------------- | ---------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------- |
| **TensorFlow**  <br>Used to build neural networks\.  <br>See [Save the Tensorflow model](https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fl-models.html#tf-config)\.                                       | Any             | Simple Avg                                     | Simplest aggregation that is used as a baseline where all parties' model updates are equally weighted\.                           | \- Rounds  <br>\- Termination predicate *(Optional)*  <br>\- Quorum *(Optional)*  <br>\- Max Timeout *(Optional)*           |
|                                                                                                                                    |                 | Weighted Avg                                   | Weights the average of updates based on the number of each party sample\. Use with training data sets of widely differing sizes\. | \- Rounds  <br>\- Termination predicate *(Optional)*  <br>\- Quorum *(Optional)*  <br>\- Max Timeout *(Optional)*           |
| **Scikit\-learn**  <br>Used for predictive data analysis\.  <br>See [Save the Scikit\-learn model](https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fl-models.html#sklearn-config)\. | Classification  | Simple Avg                                     | Simplest aggregation that is used as a baseline where all parties' model updates are equally weighted\.                           | \- Rounds  <br>\- Termination predicate *(Optional)*                                                                        |
|                                                                                                                                    |                 | Weighted Avg                                   | Weights the average of updates based on the number of each party sample\. Use with training data sets of widely differing sizes\. | \- Rounds  <br>\- Termination predicate *(Optional)*                                                                        |
|                                                                                                                                    | Regression      | Simple Avg                                     | Simplest aggregation that is used as a baseline where all parties' model updates are equally weighted\.                           | \- Rounds                                                                                                                   |
|                                                                                                                                    |                 | Weighted Avg                                   | Weights the average of updates based on the number of each party sample\. Use with training data sets of widely differing sizes\. | \- Rounds                                                                                                                   |
|                                                                                                                                    | XGBoost         | XGBoost Classification                         | Use to build classification models that use XGBoost\.                                                                             | \- Learning rate  <br>\- Loss  <br>\- Rounds  <br>\- Number of classes                                                      |
|                                                                                                                                    |                 | XGBoost Regression                             | Use to build regression models that use XGBoost\.                                                                                 | \- Learning rate  <br>\- Rounds  <br>\- Loss                                                                                |
|                                                                                                                                    |                 | K\-Means/SPAHM                                 | Used to train KMeans (unsupervised learning) models when parties have heterogeneous data sets\.                                   | \- Max Iter  <br>\- N cluster                                                                                               |
| **Pytorch**  <br>Used for training neural network models\.  <br>See [Save the Pytorch model](https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fl-models.html#pytorch)\.                                   | Any             | Simple Avg                                     | Simplest aggregation that is used as a baseline where all parties' model updates are equally weighted\.                           | \- Rounds  <br>\- Epochs  <br>\- Quorum *(Optional)*  <br>\- Max Timeout *(Optional)*                                       |
|                                                                                                                                    | Neural Networks | Probabilistic Federated Neural Matching (PFNM) | Communication\-efficient method for fully connected neural networks when parties have heterogeneous data sets\.                   | \- Rounds  <br>\- Termination accuracy *(Optional)*  <br>\- Epochs  <br>\- sigma  <br>\- sigma0  <br>\- gamma  <br>\- iters |

<!-- </table ""> -->

## Software specifications and Python version by framework ##

This table lists the software spec and Python versions available for each framework\.

<!-- <table> -->

Software specifications and Python version by framework

| Watson Studio frameworks | Python version | Software Spec           | Python Client Extras | Framework package     |
| ------------------------ | -------------- | ----------------------- | -------------------- | --------------------- |
| scikit\-learn            | 3\.10          | runtime\-22\.2\-py3\.10 | fl\-rt22\.2\-py3\.10 | scikit\-learn 1\.1\.1 |
| Tensorflow               | 3\.10          | runtime\-22\.2\-py3\.10 | fl\-rt22\.2\-py3\.10 | tensorflow 2\.9\.2    |
| PyTorch                  | 3\.10          | runtime\-22\.2\-py3\.10 | fl\-rt22\.2\-py3\.10 | torch 1\.12\.1        |

<!-- </table ""> -->

## Learn more ##

[Hyperparameter definitions](https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fl-param.html)

**Parent topic:**[IBM Federated Learning](https://dataplatform.cloud.ibm.com/docs/content/wsj/analyze-data/fed-lea.html)

<!-- </article "role="article" "> -->