Untitled
user_3298650655
python
4 years ago
809 B
6
Indexable
def euclid(a, b):
return np.sqrt(np.sum((a - b) ** 2))
class metric_algorithm:
def __init__(self, h):
self.h = h
def fit(self, X, y):
self.X = X
self.y = y
self.uniq_y = np.unique(y)
def predict(self, X):
y_pred = []
for i in X:
lab = []
w = []
for z in range(len(self.X)):
d = euclid(i, self.X[z])
if d < self.h:
lab.append(self.y[z])
w.append(1 - abs(d / self.h))
ind = 0
for a in self.uniq_y:
max_s = 0
for k in range(len(self.uniq_y)):
s = 0
for i in range(len(lab)):
if lab[i] == self.uniq_y[k]:
s += w[i]
if s > max_s:
max_s = s
ind = k
y_pred.append(self.uniq_y[ind])
return y_predEditor is loading...