sklearn scikit neighbors neighbor nearest learn example classifier python machine-learning scikit-learn nearest-neighbor classification

scikit - python k nearest neighbor classifier



Implementa el clasificador K Neighbors en scikit-learn con 3 funciones por objeto (1)

Su primer segmento de código define un clasificador en datos 1d .

X representa los vectores de características.

[0] is the feature vector of the first data example [1] is the feature vector of the second data example .... [[0],[1],[2],[3]] is a list of all data examples, each example has only 1 feature.

y representa las etiquetas.

Debajo del gráfico se muestra la idea:

  • Los nodos verdes son datos con la etiqueta 0
  • Los nodos rojos son datos con la etiqueta 1
  • Los nodos grises son datos con etiquetas desconocidas.

print(neigh.predict([[1.1]]))

Esto le pide al clasificador que prediga una etiqueta para x=1.1 .

print(neigh.predict_proba([[0.9]]))

Esto le pide al clasificador que proporcione una estimación de probabilidad de membresía para cada etiqueta.

Debido a que ambos nodos grises se encuentran más cerca del verde, los resultados debajo de la salida tienen sentido.

[0] # green label [[ 0.66666667 0.33333333]] # green label has greater probability

El segundo segmento de código tiene buenas instrucciones en scikit-learn :

En el siguiente ejemplo, construimos una clase NeighborsClassifier a partir de una matriz que representa nuestro conjunto de datos y preguntamos quién es el punto más cercano a [1,1,1]

>>> samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]] >>> from sklearn.neighbors import NearestNeighbors >>> neigh = NearestNeighbors(n_neighbors=1) >>> neigh.fit(samples) NearestNeighbors(algorithm=''auto'', leaf_size=30, ...) >>> print(neigh.kneighbors([1., 1., 1.])) (array([[ 0.5]]), array([[2]]...))

No hay un valor objetivo aquí porque esta es solo una clase NearestNeighbors , no es un clasificador, por lo tanto, no se necesitan etiquetas.

Para su propio problema:

Como necesita un clasificador, debe recurrir a KNeighborsClassifier si desea utilizar el enfoque KNN . Es posible que desee construir su vector de características X y la etiqueta y siguiente manera:

X = [ [h1, e1, s1], [h2, e2, s2], ... ] y = [label1, label2, ..., ]

Me gustaría implementar un KNeighborsClassifier con el módulo scikit-learn ( http://scikit-learn.org/dev/modules/generated/sklearn.neighbors.KNeighborsClassifier.html )

Recupero de mi imagen las características de solidez, elongación y Humoments. ¿Cómo puedo preparar estos datos para entrenamiento y validación? Debo crear una lista con las 3 funciones [Hm, e, s] para cada objeto que recuperé de mis imágenes (de 1 imagen tienen más objetos)?

Leí este ejemplo ( http://scikit-learn.org/dev/modules/generated/sklearn.neighbors.KNeighborsClassifier.html ):

X = [[0], [1], [2], [3]] y = [0, 0, 1, 1] from sklearn.neighbors import KNeighborsClassifier neigh = KNeighborsClassifier(n_neighbors=3) neigh.fit(X, y) print(neigh.predict([[1.1]])) print(neigh.predict_proba([[0.9]]))

X e y son 2 características?

samples = [[0., 0., 0.], [0., .5, 0.], [1., 1., .5]] from sklearn.neighbors import NearestNeighbors neigh = NearestNeighbors(n_neighbors=1) neigh.fit(samples) print(neigh.kneighbors([1., 1., 1.]))

¿Por qué en el primer ejemplo usa X e y y muestra?