elif i == 1: return 0 elif i == 2: return 5 elif 2 * T / 3 < t: if i == 0: return 1 elif i == 1: return 0 elif i == 2: return -1 # construct forecaster eta = np.sqrt(2 * np.log(N) / T) F = EWAForecaster(N, eta) # we use the L2 loss def loss(p, y): return np.sqrt((p - y)**2) # run experiment e_losses = np.zeros((T, N)) F_losses = np.zeros(T, ) for t in xrange(T): e_losses[t, :] = np.array([expert(i, t) for i in xrange(N)]) F_losses[t] = F.predict(e_losses[t, :]) F.observe(e_losses[t, :])