Oto przykład, dlaczego chcesz to zrobić (i w przybliżeniu jak).
Mam 3 modele prognostyczne cen mieszkań: liniowy, zwiększanie gradientu, sieć neuronowa.
Chcę połączyć je w średnią ważoną i znaleźć najlepsze wagi.
Prowadzę regresję liniową i otrzymuję rozwiązanie z wagami takimi jak -3,1, 2,5, 1,5 i niektórymi punktami przechwytywania.
Więc zamiast tego używam sklearn
blendlasso = LassoCV(alphas=np.logspace(-6, -3, 7),
max_iter=100000,
cv=5,
fit_intercept=False,
positive=True)
I otrzymuję dodatnie wagi, które sumują się (bardzo blisko) do 1. W moim przykładzie chcę, aby alfa działało najlepiej poza próbką, więc używam LassoCV z walidacją krzyżową.
Dokumenty sklearn stwierdzają, że nie powinieneś ustawiać alfa na 0 z powodów numerycznych, jednak możesz również użyć prostej Lasso () i ustawić parametr alfa tak niski, jak to tylko możliwe, aby uzyskać rozsądną odpowiedź.