In [45]:
class LHS(object):
def __init__(self,num,boundary,function=LHS.func):
if function in [None,'']:
self._function=func
else:
self._function=function
self.num=num
self.boundary=boundary
@staticmethod
def func(x):
'''
默认方法
'''
return x**2
@property
def boundary(self):
return self._boundary
@boundary.setter
def boundary(self,b):
if not b or type(b) !=list:
raise ValueError('boundary must be a list')
print 'aaa'
self._boundary=b
@property
def num(self):
return self._num
@num.setter
def num(self,num):
if not isinstance(num, int):
raise ValueError('number must be an integer!')
if num<0 or num >1000:
raise ValueError('score must between 0 ~ 1000!')
self._num=num
In [3]:
import numpy as np
In [80]:
a=-10;b=10
x=(b - a) * np.random.random_sample((1,100)) + a
x.sort()
In [81]:
x=map(np.random.permutation,x)
x=np.array(x)
In [82]:
x=x[:,:10]
x.sort()
In [45]:
=x.shape
In [39]:
len(x)
Out[39]:
In [41]:
x[:,1]
Out[41]:
In [99]:
import math
def distance(theta,p,xi,xj):
s=0
dim=len(xi)
for d in range(dim):
s+=theta[d]*pow(abs(xi[d]-xj[d]),p[d])
return s
def corr(theta,p,xi,xj):
return math.exp(-distance(theta,p,xi,xj))
def corrMartrix(x,theta,p):
j=x.shape[1]
CM=np.empty([j,j],dtype=np.float32)
for m in range(j):
for n in range(j):
CM[m][n]=corr(theta,p,x[:,m],x[:,n])
return np.asmatrix(CM)
In [75]:
a=corrMartrix(x,[1],[2])
In [52]:
CM=np.empty([j,j],dtype=float)
In [74]:
from numpy import linalg as LA
In [77]:
a=np.asmatrix(a)
In [78]:
a.I
Out[78]:
In [89]:
sum(X*2)
Out[89]:
In [87]:
X=np.asmatrix(x)
In [91]:
One=np.matrix([1]*len(x))
One.T
Out[91]:
In [127]:
def func(X):
return sum(X**2)
def likelihood(x,theta,p):
n=x.shape[1]
y=func(x)
Y=np.asmatrix(y).T
X=np.asmatrix(x)
OneT=np.matrix([1]*n)
One=OneT.T
C=corrMartrix(x,[1],[1])
CI=C.I
mu=OneT*CI*Y/(OneT*CI*One)
sigma_2=((Y-One*mu).T*CI*(Y-One*mu))/n
return mu,sigma_2
In [128]:
likelihood(x,[1],[1])
Out[128]:
In [126]:
n=x.shape[1]
y=func(x)
Y=np.asmatrix(y).T
X=np.asmatrix(x)
OneT=np.matrix([1]*n)
One=OneT.T
C=corrMartrix(x,[1],[1])
CI=C.I
mu=OneT*CI*Y/(OneT*CI*One)
In [130]:
math.sqrt(2)
Out[130]:
In [133]:
PI=math.pi
In [198]:
n=X.shape[1]
y=func(X)
Y=np.asmatrix(y).T
OneT=np.matrix([1]*n)
One=OneT.T
C=corrMartrix(X,[1],[1])
CI=C.I
mu=OneT*CI*Y/(OneT*CI*One)
sigma_2=((Y-One*mu).T*CI*(Y-One*mu))/n
print 1.0/math.sqrt((2*PI*sigma_2)**n*LA.det(C))*math.exp(((Y-One*mu).T*CI*(Y-One*mu))/(-2*sigma_2))
In [199]:
LA.det(C)
Out[199]:
In [201]:
(2*PI*sigma_2)**n
Out[201]:
In [202]:
((Y-One*mu).T*CI*(Y-One*mu))/(-2*sigma_2)
Out[202]:
In [143]:
math.exp(((Y-One*mu).T*CI*(Y-One*mu))/-2*sigma_2)
Out[143]:
In [185]:
mu
Out[185]:
In [182]:
sigma_2
Out[182]:
In [181]:
y.mean()
Out[181]:
In [196]:
C.I
Out[196]:
In [205]:
import pickle
def loadData(size,filename):
with open(filename,'r') as f:
x=pickle.load(f)
map(np.random.permutation,x)
sample=np.array(np.random.permutation(x)[:size])
sample=sample[:,:size]
sample.sort()
return sample
def likelihood(x,theta,p):
n=x.shape[1]
y=func(x)
Y=np.asmatrix(y).T
OneT=np.matrix([1]*n)
One=OneT.T
C=corrMartrix(x,theta,p)
CI=C.I
mu=OneT*CI*Y/(OneT*CI*One)
sigma_2=((Y-One*mu).T*CI*(Y-One*mu))/n
return -1.0/math.sqrt((2*PI*sigma_2)**n*LA.det(C))*math.exp(((Y-One*mu).T*CI*(Y-One*mu))/(-2*sigma_2))
In [206]:
X=loadData(10,'haha.tl')
In [207]:
likelihood(X,[1],[1])
Out[207]:
In [208]:
2**0.5
Out[208]:
In [ ]: