# Combining several Multi-Output-Models into a single Multi-Output-Model

I'm trying to create a k-Nearest-Neighbor based model of 76-dimensional input data $$I$$ and 44-dimensional output data $$O$$. Through domain knowledge I know that only certain input dimensions are related to certain output dimensions.

Let the mapping be as follows:

I[0:35]  -> O[0:20]
I[35:37] -> O[20:23]
I[37:76] -> O[23:43]


Is there a possibility to combine three separate k-Nearest-Neighbors models (all with their own hyperparameter settings) to achieve the desired setup?

End result should be fast computation of:

I -> [combined model] -> O


sklearn's MultiOutputRegressor only takes single output models, which is not what I'm looking for.

• If that is the case why not split the features? MultiOutputRegressor can handle each of your cases above. You can just concatenate to get the full prediction. – Yohanes Alfredo Nov 21 '19 at 10:14
• In a standalone case that's what I would do. However, the model is supposed to be used as a surrogate for a simulation model in a co-simulation framework that only supports a single model being used. While I could combine 44 kNN-models trained on the correct features, that output one value each, this would effectively result in searching for the nearest neighbors 44 times. Since the goal is to provide a somewhat fast model to the co-simulation, this would not lead to the desired results. – twes3 Nov 21 '19 at 10:23