“L'algoritmo KNN è presupposto che i nuovi dati e i dati esistenti sono comparabili. Fa uso delle metriche dei vicini più vicini per questo. Questo articolo discuterà dell'algoritmo KNN e dell'implementazione di Sklearn."
Cos'è KNN?
Questo algoritmo utilizza dati etichettati perché è un modello di apprendimento automatico supervisionato. La posizione del numero "k" più vicino al nuovo punto dati del nuovo punto di vicinato determina come l'algoritmo KNN lo classifica. La distanza euclidea è usata per raggiungere questo obiettivo. La formula per la distanza euclidea tra due punti (a, b) e (x, y) è √ (a-x)2 + (di)2.
Dove viene usato knn?
KNN può essere usato per affrontare una varietà di problemi. Ad esempio, nella classificazione, un nuovo punto può essere classificato semplicemente guardando la classe dei suoi vicini più vicini. I documenti più comparabili a un determinato documento sono disponibili utilizzando KNN per verificare il plagio, scoprire specchi, ecc. KNN può essere utilizzato nei sistemi di raccomandazione per identificare i prodotti che sono più simili a un prodotto che un utente non ha valutato e quindi determinare se l'utente lo piacerà o meno. Esistono numerose altre applicazioni, tra cui metodi di clustering, in cui è possibile applicarli.
Pro e contro di KNN?
Professionisti
Contro
Implementazione di KNN in Sklearn
Importazione dei metodi e delle classi richiesti
da Sklearn.INSEMBLE Import RandomForestClassifier
da Sklearn.set di dati Importa make_classification
da Sklearn.I vicini importano Kneighborsclassifier
Creazione del set di dati
X, y = make_classification (n_samples = 500, n_features = 4, n_informative = 2, n_redundant = 0, random_state = 0, shuffle = false)
print ("Funzionalità sono")
Stampa (x)
print ("etichette sono")
stampa (y)
Produzione
Le caratteristiche sono
array ([[0.44229321, 0.08089276, 0.54077359, -1.81807763],
[1.34699113, 1.48361993, -0.04932407, 0.2390336],
[-0.54639809, -1.1629494, -1.00033035, 1.67398571],
.. ,
[0.8903941, 1.08980087, -1.53292105, -1.71197016],
[0.73135482, 1.25041511, 0.04613506, -0.95837448],
[0.26852399, 1.70213738, -0.08081161, -0.70385904]])
Le etichette sono
Array ([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
Creare il modello e fare previsioni
Model = KneighborsClassifier (N_NEIGHBORS = 5)
modello.Fit (x, y)
Stampa (modello.prevedere ([0 0.5, 0.3, 0.2, 0.1]]))
Stampa (modello.predict_proba ([[0 0.5, 0.3, 0.2, 0.1]]))
Produzione
[0]
[[0.8 0.2]]
Conclusione
Abbiamo discusso dell'algoritmo KNN, che è un algoritmo di apprendimento automatico supervisionato. Abbiamo visto dove potrebbe essere utile o potrebbe fallire. Più tardi, abbiamo anche discusso della sua implementazione in Sklearn Python.