def fit(self, X, y):
"""Fit the model using X as training data
Parameters
----------
X : {array-like, sparse matrix, BallTree, KDTree}
Training data, shape [n_samples, n_features],
"""
X = check_array(X, accept_sparse='csr')
y = np.asarray(y, dtype='int')
y_unique = np.unique(y)
index = np.arange(len(y), dtype='int')
if len(y_unique) == 0:
raise ValueError('The training set must have at least '
'one document category!')
# define nearest neighbors search objects for each category
self._mod = [NearestNeighbors(n_neighbors=1,
leaf_size=self.leaf_size,
algorithm=self.algorithm,
n_jobs=self.n_jobs,
# euclidean metric by default
metric='cosine',
) for el in range(len(y_unique))]
index_mapping = []
for imod, y_val in enumerate(y_unique):
mask = (y == y_val)
index_mapping.append(index[mask])
self._mod[imod].fit(X[mask])
self.index_mapping = index_mapping
评论列表
文章目录