In [12]:
from numpy import *
from scipy import *
from sklearn import *
In [13]:
T0 = 10000
T1 = 30000
In [141]:
N = 50
alpha = 0.1
maxSVD = 0.9
In [44]:
def legendre(n, x):
if n==0:
return 1
elif n==1:
return x * (2*n+1)/2
elif n==2:
return (1.5*x*x-0.5) * (2*n+1)/2
elif n==3:
return (2.5*x*x*x-1.5*x) * (2*n+1)/2
In [207]:
a = loadtxt("input.txt")
#b2 = loadtxt("output_lin.txt")
b1 = loadtxt("output_ml_0.txt")
b2 = loadtxt("output_ml_1.txt")
In [208]:
figure()
clf()
plot(b1[1000:1400,0])
plot(b1[1000:1400,1])
plot(b1[1000:1400,2])
plot(b1[1000:1400,3])
#ylim(-1.0, 1.0)
Out[208]:
In [209]:
def calc_cap(ds):
y = zeros(T1, dtype=float)
for i in range(T1):
tmp = 1.0
for j in range(len(ds)):
tmp *= legendre(ds[j], a[T0+i-j])
y[i] = tmp
lin = linear_model.LinearRegression()
lin.fit(b2[T0:T0+T1,:], y[:T1])
z = lin.predict(b2[T0:,:])
mse = 0
yy = 0
for i in range(T1):
mse += (y[i] - z[i])**2
yy += y[i]**2
return 1.0 - mse/yy
In [210]:
memo = zeros(50, dtype=float)
for i in range(50):
ds = zeros(i+1)
ds[i] = 1
memo[i] = calc_cap(ds)
print i, memo[i]
In [211]:
#clf()
figure(10)
plot(memo)
Out[211]:
In [19]:
memo2 = zeros(1000, dtype=float)
cnt = 0
for i in range(1, 10):}
for j in range(i, 10):
ds = zeros(10)
ds[i] += 1
ds[j] += 1
memo2[cnt] = calc_cap(ds)
print i, j, memo2[cnt], ds
cnt+=1
In [160]:
memo3 = zeros(1000, dtype=float)
cnt = 0
for i in range(0, 10):
for j in range(i, 10):
for k in range(j, 10):
ds = zeros(10)
ds[i] += 1
ds[j] += 1
ds[k] += 1
memo3[cnt] = calc_cap(ds)
print memo3[cnt], ds
cnt+=1
In [ ]:
print sum(memo[memo>0])
#print sum(memo2[memo2>0])
print sum(memo3[memo3>0])
In [42]:
Out[42]:
In [111]:
figure(10)
Out[111]:
In [112]:
yscale("log")
In [115]:
ylim(0.05, 1)
Out[115]:
In [116]:
xscale("log")
In [117]:
xlim(10, 100)
Out[117]:
In [ ]: