import numpy as np
from sklearn.linear_model import LinearRegression

f = [LinearRegression() for _ in range(10)]


x = np.random.randn(10000,10)
yt = np.random.randn(10000,1)

for i in range(10):
    f[i].fit(x[i*10:i*10+10], yt[i*10:i*10+10])

y = lambda x: np.stack([f[i].predict(x[i*10:i*10+10]) for i in range(10)]).flatten()

while True:
    idx = np.random.randint(1,10000,100)
    idy = idx - 1
    err =yt[idy].flatten() - y(x[idx])
    c = np.stack([f[i].coef_ for i in range(10)]).flatten()
    c += 0.001 * err
    for i in range(10):
        f[i].coef_ = c.reshape(-1,10)[i]
    print(np.sum(err**2))
