@@ -63,7 +63,7 @@ class LMNN(MahalanobisMixin, TransformerMixin):
63
63
:meth:`fit` and n_features_a must be less than or equal to that.
64
64
If ``n_components`` is not None, n_features_a must match it.
65
65
66
- k : int, optional (default=3)
66
+ n_neighbors : int, optional (default=3)
67
67
Number of neighbors to consider, not including self-edges.
68
68
69
69
min_iter : int, optional (default=50)
@@ -128,12 +128,12 @@ class LMNN(MahalanobisMixin, TransformerMixin):
128
128
2005.
129
129
"""
130
130
131
- def __init__ (self , init = 'auto' , k = 3 , min_iter = 50 , max_iter = 1000 ,
131
+ def __init__ (self , init = 'auto' , n_neighbors = 3 , min_iter = 50 , max_iter = 1000 ,
132
132
learn_rate = 1e-7 , regularization = 0.5 , convergence_tol = 0.001 ,
133
133
verbose = False , preprocessor = None ,
134
134
n_components = None , random_state = None ):
135
135
self .init = init
136
- self .k = k
136
+ self .n_neighbors = n_neighbors
137
137
self .min_iter = min_iter
138
138
self .max_iter = max_iter
139
139
self .learn_rate = learn_rate
@@ -145,7 +145,7 @@ def __init__(self, init='auto', k=3, min_iter=50, max_iter=1000,
145
145
super (LMNN , self ).__init__ (preprocessor )
146
146
147
147
def fit (self , X , y ):
148
- k = self .k
148
+ k = self .n_neighbors
149
149
reg = self .regularization
150
150
learn_rate = self .learn_rate
151
151
@@ -162,7 +162,7 @@ def fit(self, X, y):
162
162
self .verbose ,
163
163
random_state = self .random_state )
164
164
required_k = np .bincount (label_inds ).min ()
165
- if self .k > required_k :
165
+ if self .n_neighbors > required_k :
166
166
raise ValueError ('not enough class labels for specified k'
167
167
' (smallest class has %d)' % required_k )
168
168
@@ -275,12 +275,12 @@ def _loss_grad(self, X, L, dfG, k, reg, target_neighbors, label_inds):
275
275
return 2 * G , objective , total_active
276
276
277
277
def _select_targets (self , X , label_inds ):
278
- target_neighbors = np .empty ((X .shape [0 ], self .k ), dtype = int )
278
+ target_neighbors = np .empty ((X .shape [0 ], self .n_neighbors ), dtype = int )
279
279
for label in self .labels_ :
280
280
inds , = np .nonzero (label_inds == label )
281
281
dd = euclidean_distances (X [inds ], squared = True )
282
282
np .fill_diagonal (dd , np .inf )
283
- nn = np .argsort (dd )[..., :self .k ]
283
+ nn = np .argsort (dd )[..., :self .n_neighbors ]
284
284
target_neighbors [inds ] = inds [nn ]
285
285
return target_neighbors
286
286
0 commit comments