K-legközelebbi szomszédok (KNN) Pythonban

A K-legközelebbi szomszédok (KNN) algoritmus Pythonban

Bevezetés

A K-legközelebbi szomszédok (KNN) egy felügyelt gépi tanulási algoritmus, amely a minták osztályozására és regressziójára egyaránt használható. A KNN az edzési adatokat használja új adatok előrejelzésére azzal, hogy megtalálja a legközelebbi k szomszédot az új adatponthoz, majd az osztályt vagy értéket a szomszédok többségi szavazatával vagy átlagával rendeli hozzá.

A KNN algoritmus egyszerűségéről és hatékonyságáról ismert, így népszerű választás a gépi tanulási feladatokhoz. Különösen jól teljesít, ha a jellemzők közötti kapcsolatok nem lineárisak, és zajos vagy hiányzó adatokkal rendelkezik.

A KNN algoritmus működése

A KNN algoritmus a következő lépéseket követi:

1. Normáljuk az adatokat: Az adatok normalizálása biztosítja, hogy az összes jellemző azonos skálán legyen, így megakadályozva, hogy bármelyik jellemző túlságosan befolyásolja az eredményeket.
2. Válassza ki a k értéket: A k érték meghatározza, hogy hány szomszédot kell figyelembe venni az előrejelzés során. Nincs egyetlen „legjobb” k érték, de általában jó kiindulópont az 5 vagy 7.
3. Keresse meg a legközelebbi k szomszédott: Ez a lépés az euklideszi távolság vagy a Manhattan-távolság segítségével történik, amely méri a távolságot az új adatpont és az edzési adatok egyes adatpontjai között.
4. Rendezze hozzá az osztályt vagy értéket: Az új adatpont osztályát vagy értékét a k legközelebbi szomszéd többségi szavazatával vagy átlagával rendeli hozzá.

  Mi az Area 51 IPTV, és biztonságos a használata?

A KNN algoritmus Pythonban

A KNN algoritmus Pythonban implementálható a sklearn.neighbors modul használatával. A következő kód egy KNN osztályozót hoz létre a KNeighborsClassifier osztály használatával:

python
from sklearn.neighbors import KNeighborsClassifier

Hozza létre az edzési adatokat

X_train = [[0, 0], [1, 1], [2, 2], [3, 3]]
y_train = [0, 1, 2, 3]

Hozza létre a KNN osztályozót

knn = KNeighborsClassifier(n_neighbors=3)

Illessze az edzési adatokat

knn.fit(X_train, y_train)

Új adatok előrejelzése

X_new = [[0.5, 0.5]]
y_pred = knn.predict(X_new)

Nyomtassa ki az előrejelzett osztályt

print(y_pred)

A KNN algoritmus paraméterei

A KNN algoritmusnak több paramétere van, amelyek befolyásolhatják a teljesítményét. Ezek a paraméterek a következők:

k: A figyelembe veendő szomszédok száma.
weights: A szomszédok súlyozásának módja az előrejelzés során. Az alapértelmezett „egyenlő súlyozás”, ahol minden szomszédnak azonos súlya van.
algorithm: A szomszédok keresésére használt algoritmus. Az alapértelmezett „auto”, amely automatikusan kiválasztja a leggyorsabb algoritmust az adott adatokhoz.
leaf_size: A fa mérete a szomszédok gyorsabb kereséséhez használt BallTree algoritmusban.
p: A távolság kiszámításához használt távolsági metrika. Az alapértelmezett „2”, amely az euklideszi távolságot használja.

A KNN algoritmus előnyei és hátrányai

Előnyök:

– Egyszerű és hatékony
– Nem igényel bonyolult funkciókivonást
– Jól teljesít zajos vagy hiányzó adatokkal
– Robusztus az outliers-ekkel szemben

Hátrányok:

– Számításilag drága lehet nagy adatkészletekkel
– A teljesítmény érzékeny lehet a k érték kiválasztására
– Önelőítéles lehet, ha a jellemzők méretezése nem megfelelő

A KNN algoritmus alkalmazásai

A KNN algoritmust széles körben használják különböző gépi tanulási feladatokhoz, többek között:

Osztályozás: Az új adatok hozzárendelése egy előre definiált osztályhoz
Regresszió: Új adatok értékének előrejelzése
Anomáliaérzékelés: Különc vagy szokatlan minták azonosítása
Klaszterezés: Az adatok hasonló csoportokba való csoportosítása

Következtetés

A KNN egy sokoldalú és könnyen használható algoritmus, amely különféle gépi tanulási feladatokhoz használható. Megérti az algoritmus működését, paramétereit és alkalmazásait, lehetővé teszi, hogy hatékonyan alkalmazza a saját gépi tanulási projektjeiben.

GYIK

1. Mi a k érték a KNN-ben?
A k érték meghatározza, hogy hány szomszédot kell figyelembe venni az előrejelzés során.

2. Hogyan normalizálhatom az adatokat a KNN használatához?
A StandardScaler osztály használható az adatok normalizálásához Pythonban.

3. Milyen távolsági metrikákat használhatok a KNN-ben?
Az euklideszi távolság és a Manhattan-távolság a KNN-ben leggyakrabban használt távolsági metrikák.

4. Hogyan tudom kihangsúlyozni a szomszédokat a KNN-ben?
A weights paraméter használható a szomszédok súlyozásának módjának meghatározására.

5. Mi a „k-fold keresztvalidáció”?
A k-fold keresztvalidáció egy módszer az algoritmus teljesítményének értékelésére az edzési adatok különböző részhalmazaival.

6. Hogyan puedo automatizar la afinación de hiperparámetros en KNN?
Una herramienta como GridSearchCV se puede utilizar para automatizar la afinación de hiperparámetros en KNN, como el valor de k.

7. ¿Existen bibliotecas de Python alternativas para implementar KNN?
Sí, existen otras bibliotecas de Python para implementar KNN, como NumPy y scipy.

8. ¿Cómo puedo utilizar KNN para la detección de anomalías?
KNN se puede utilizar para la detección de anomalías identificando puntos de datos que son significativamente diferentes de sus vecinos más cercanos.

9. ¿Qué recursos adicionales puedo consultar para obtener más información sobre KNN?
Documentación de sklearn KNeighborsClassifier
Tutorial de KNN de Google Developers
Artículo sobre KNN en Towards Data Science