跟着Leo机器学习:sklearn之Nearest Neighbors

一个很有趣的个人博客,不信你来撩 fangzengye.com



1.6. Nearest Neighbors

sklearn框架

在这里插入图片描述

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

输出

>>> 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))

posted @ 2020-02-24 12:07  开源的Boy  阅读(551)  评论(0)    收藏  举报