-
Notifications
You must be signed in to change notification settings - Fork 0
/
chooseSample.py
33 lines (27 loc) · 917 Bytes
/
chooseSample.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#!/usr/bin/python
from sklearn.neighbors import KNeighborsRegressor
import pandas as pd
import numpy as np
#return xs
def chooseSample(S, c, k2, k1):
xs = S[S['Class'] == c]
#iterate over each sample of class c1
for row in xs.iterrows():
d1 = row[1]
d1 = d1.drop('Class')
y = S['Class']
X = S.drop('Class', axis=1)
#get k2 nearest neighbour using mahalanobis distance metric
cov = np.cov(X, rowvar=False)
knn = KNeighborsRegressor(n_neighbors=k2, metric="mahalanobis",metric_params=dict(V=cov))
knn.fit(X, y)
d = []
d.append(d1)
d1 = d
#print(str(d1))
neigbour = knn.kneighbors(d1)
#print("length:"+ str(len(neigbour)))
neighbour_length = len(neigbour)
if(neighbour_length >= k1):
S['wieght'] = neighbour_length/k2
return S