def M_fed_style(purpose,design,kernel,p,h,flag,fed_w): ''' flag shows if design odd(1) or it isnt(0) fed_w is array with weights of norming design (sum eq 1) ''' n=len(design) u=[[(point-purpose)**(2*j) for j in range(p*2)]for point in design] w1=[K((point-purpose)/h,mode=kernel)/h for point in design] for i in range(len(w1)): w1[i]*=fed_w[i] def c_s(k): sum=0 for b in range(n): sum+=u[b][k]*w1[b] sum*=2 return sum S=[c_s(k)for k in range(p*2)] M=np.empty((p+1,p+1),dtype=np.float64) from math import trunc for i in range(p+1): for j in range(p+1): if trunc((i+j)%2)==0: M[i,j]=S[int((i+j)/2)] else: M[i,j]=0 '''contrib. of nonsymmetric point''' if flag==1: M[0,0]+=K(0.,mode=kernel)/h return M
def M_symm(purpose, design, kernel, p, h, odd): n = len(design) Fish = np.zeros((p + 1, p + 1)) Kui = [K((design[i] - purpose) / h, mode=kernel) / h for i in range(n)] if odd == 0: #число точек - четное for i in range(p + 1): for j in range(p + 1): s = i + j if s % 2 == 1: Fish[i, j] += 0 else: Fish[i, j] += 2 * sum([(design[a] - purpose)**s * Kui[a] for a in range(n)]) else: #число точек - нечетное, и последняя в плане - не имеет парную for i in range(p + 1): for j in range(p + 1): s = i + j if s % 2 == 0: Fish[i, j] += 2 * sum([(design[a] - purpose)**s * Kui[a] for a in range(n - odd)]) Fish[i, j] += Kui[n - 1] * (design[n - 1] - purpose)**s return Fish
def M(purpose, design, kernel, p, h): n = len(design) M = np.zeros((p + 1, p + 1)) Kui = [K((design[i] - purpose) / h, mode=kernel) / h for i in range(n)] for i in range(n): f_x = get_f(purpose, design[i], p) M += Kui[i] * np.dot(f_x, f_x.T) return M
res1=[len(design)*check_one(purpose,design,dot,p,h,kernel)[1]for dot in design] return res #cond2=check_all(purpose=0,design=[-1, 0, 1],p=2,h=1,kernel='gauss') #print(cond2) ''' def d_x(purpose, design, dot, p, h, kernel): m = M(purpose, design, kernel, p, h) D = np.linalg.inv(m) f_x = np.matrix([(dot - purpose)**(j) for j in range(p + 1)]).T d_x = np.dot(f_x.T, D) d_x = np.dot(d_x, f_x) d_x *= len(design) return float(d_x) h = 1 kernl = 'unif' x_axe = np.linspace(-1, 1, 500) y_axe=[K(x_axe[i]/h,mode=kernl)/h*d_x(purpose=0,design=[-0.999,0.8356540663993193, 0.5641572515850596,-0.564263395062234, 0.7821410588028485,0.2955600789475211,-0.29399672797215587,0.0005596857669483513,0.9376458913026472,-0.93614466888028,-0.7889649466036868,0.9999999983452569],\ dot=x_axe[i],p=10,h=h,kernel=kernl)for i in range(len(x_axe))] y_axe = list(map(lambda y: float(y), y_axe))
import sys from kernel import K data_info = [] data_cluster = 0 #data_matrix = [] for datum in sys.stdin: datum = datum.strip().split() if int(datum[2]) == 0: data_info = [float(num) for num in datum[3:-1]] data_cluster = datum[-1] #data_matrix = [int(num) for num in datum[0:2]] elif int(datum[2]) == 1: info = [float(num) for num in datum[3:-1]] cluster = datum[-1] kernel = K(data_info, info) #matrix = [int(num) for num in datum[0:2]] print ''.join(str(f) + ' ' for f in data_info) + cluster, kernel """ cluster = 1 cluster_count = 0 sum_number = 0 feature = [] for datum in sys.stdin: datum = datum.strip().split() xi_cluster = datum[-2] xi_K = datum[-1] xi_feature = datum[0:-2] if int(xi_cluster) != cluster: try:
def minimax(dot): dot = float(dot) d = dx(dot) w = K((dot - purpose) / h, mode=kernel) / h return float(-w * d)
#!/usr/bin/python import sys # get kernel from kernel import K # read data for datum in sys.stdin: datum = datum.strip().split() #split data cluster and features features = datum[0:-1] cluster = datum[-1] #K(xi, xi) kernel = K(features, features) #MAP <features, (cluster (0), A, K(xi,xi))> print ''.join(f+' ' for f in features)+ str(0) , str(kernel)
def minimax(dot): dot = float(dot) d = dx(purpose, design, dot, p, h, kernel) w = K((dot - purpose) / h, mode=kernel) / h return float(-w * d)