Leo followed Machine Learning: Nearest Neighbors sklearn of

1.6. Nearest Neighbors

sklearn framework

Here Insert Picture Description

1.6.1. Unsupervised Nearest Neighbors

1.6.1.1. Finding the Nearest Neighbors

from sklearn.neighbors import NearestNeighbors
import numpy as np
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
nbrs = NearestNeighbors(n_neighbors=2, algorithm='ball_tree').fit(X)
distances, indices = nbrs.kneighbors(X)

indices
distances

Export

>>> indices
array([[0, 1],
       [1, 0],
       [2, 1],
       [3, 4],
       [4, 3],
       [5, 4]]...)
       
>>> distances
array([[0.        , 1.        ],
       [0.        , 1.        ],
       [0.        , 1.41421356],
       [0.        , 1.        ],
       [0.        , 1.        ],
       [0.        , 1.41421356]])

  >>> nbrs.kneighbors_graph(X).toarray()
array([[1., 1., 0., 0., 0., 0.],
       [1., 1., 0., 0., 0., 0.],
       [0., 1., 1., 0., 0., 0.],
       [0., 0., 0., 1., 1., 0.],
       [0., 0., 0., 1., 1., 0.],
  

1.6.1.2. KDTree and BallTree Classes

clf = neighbors.KNeighborsClassifier(n_neighbors, weights=weights)

1.6.3. Nearest Neighbors Regression

knn = neighbors.KNeighborsRegressor(n_neighbors, weights=weights)

1.6.5. Nearest Centroid Classifier

from sklearn.neighbors import NearestCentroid
import numpy as np
X = np.array([[-1, -1], [-2, -1], [-3, -2], [1, 1], [2, 1], [3, 2]])
y = np.array([1, 1, 1, 2, 2, 2])
clf = NearestCentroid()
clf.fit(X, y)

print(clf.predict([[-0.8, -1]]))

1.6.6. Nearest Neighbors Transformer


from sklearn.manifold import Isomap
from sklearn.neighbors import KNeighborsTransformer
from sklearn.pipeline import make_pipeline
estimator = make_pipeline(
    KNeighborsTransformer(n_neighbors=5, mode='distance'),
    Isomap(neighbors_algorithm='precomputed'),
    memory='/path/to/cache')

1.6.7. Neighborhood Components Analysis

1.6.7.1. Classification

from sklearn.neighbors import (NeighborhoodComponentsAnalysis,
KNeighborsClassifier)
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.pipeline import Pipeline
X, y = load_iris(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y,
stratify=y, test_size=0.7, random_state=42)
nca = NeighborhoodComponentsAnalysis(random_state=42)
knn = KNeighborsClassifier(n_neighbors=3)
nca_pipe = Pipeline([('nca', nca), ('knn', knn)])
nca_pipe.fit(X_train, y_train)

print(nca_pipe.score(X_test, y_test))
Published 17 original articles · won praise 0 · Views 138

Guess you like

Origin blog.csdn.net/weixin_39025679/article/details/104474615