Я только что реализовал это самостоятельно, потому что кажется, что в scikit-learn нет ничего подобного:
class MultiModelRegressor(RegressorMixin):
def __init__(self,models):
self.models = models
def fit(self, X, y):
X_ = X.copy().reshape(X.shape[1], X.shape[0])
y_ = y.copy().reshape(-1, y.shape[0])
for features, labels, model in [(a,b,c) for a in X_ for b in y_ for c in self.models]:
if not model == None:
model.fit(features.reshape(-1,1), labels.reshape(-1,1))
def predict(self, X):
X_ = X.copy().reshape(X.shape[1], X.shape[0])
prediction = np.empty(X.shape[0])
for features, model in [(a,b) for a in X_ for b in self.models]:
if not model == None:
prediction = (np.array([a+b for a in prediction for b in model.predict(features.reshape(-1,1))] ) / 2)
return prediction.reshape(X.shape[0])
это не идеально, но я не могу понять, почему что-то подобное еще не изучено в scikit, я имею в виду, что это довольно полезно, не так ли?