KNN v Pythone so Sklearn: Kompletný sprievodca

KNN (K-Nearest Neighbors) je jedným z najjednoduchších a najviac intuitívnych algoritmov strojového učenia. V tomto článku sa ponoríme do používania KNN v Pythone pomocou knižnice Scikit-Learn (sklearn). Ak ste začiatočník alebo sa snažíte osviežiť svoje znalosti, tento sprievodca je pre vás ideálny. Vysvetlíme si, čo je KNN, ako funguje a ako ho implementovať pomocou sklearn.

Úvod do KNN

KNN je algoritmus, ktorý sa používa na klasifikáciu a regresiu. Jeho hlavným princípom je, že podobné objekty sú si blízke. Pri klasifikácii KNN priraďuje nové vzorky do triedy, ktorá je najčastejšia medzi jej najbližšími susedmi. Pri regresii KNN predpovedá hodnotu na základe priemerných hodnôt jej najbližších susedov.

Ako funguje KNN?

  1. Výber hodnoty K: K určuje počet najbližších susedov, ktorí sa používajú pri rozhodovaní o klasifikácii alebo regresii. Napríklad, ak je K = 5, algoritmus sa pozrie na 5 najbližších susedov.

  2. Výpočet vzdialenosti: KNN používa rôzne metódy na výpočet vzdialenosti medzi bodmi. Najbežnejšou metódou je Euklidovská vzdialenosť, ale môžu sa použiť aj iné metódy ako Manhattanova alebo Minkowského vzdialenosť.

  3. Klasifikácia alebo regresia: Na základe vzdialenosti medzi bodmi a hodnoty K, KNN priraďuje novú vzorku do najčastejšieho alebo priemerného umiestnenia svojich susedov.

Príklad: KNN v Pythone so Scikit-Learn

Pre ukážku použijeme dátový súbor o kvietkoch Iris. Tento dataset obsahuje rôzne charakteristiky kvetov a ich príslušné druhy. Naša úloha bude klasifikovať nový vzor podľa najbližších kvetov v trénovacom súbore.

1. Import potrebných knižníc

python
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neighbors import KNeighborsClassifier from sklearn.metrics import accuracy_score

2. Načítanie a rozdelenie dát

python
# Načítanie dát iris = load_iris() X = iris.data y = iris.target # Rozdelenie dát na tréningové a testovacie množiny X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=0)

3. Inicializácia a tréning KNN modelu

python
# Inicializácia KNN s K = 5 knn = KNeighborsClassifier(n_neighbors=5) # Tréning modelu knn.fit(X_train, y_train)

4. Predpovedanie a vyhodnotenie

python
# Predpovedanie y_pred = knn.predict(X_test) # Vyhodnotenie presnosti accuracy = accuracy_score(y_test, y_pred) print(f"Presnosť modelu: {accuracy:.2f}")

Výber optimálneho K

Výber správnej hodnoty K je kľúčový pre úspešnosť modelu KNN. Príliš malé K môže viesť k nadmernému prispôsobeniu, zatiaľ čo príliš veľké K môže spôsobiť, že model bude menej citlivý na špecifické vzory v dátach. Je bežné vykonať krížovú validáciu na nájdenie optimálneho K.

Príklad výberu K:

python
import matplotlib.pyplot as plt import numpy as np # Testovanie rôznych hodnôt K k_values = range(1, 21) accuracies = [] for k in k_values: knn = KNeighborsClassifier(n_neighbors=k) knn.fit(X_train, y_train) y_pred = knn.predict(X_test) accuracies.append(accuracy_score(y_test, y_pred)) # Vykreslenie grafu plt.plot(k_values, accuracies, marker='o') plt.xlabel('Hodnota K') plt.ylabel('Presnosť') plt.title('Výber optimálneho K') plt.show()

Výhody a nevýhody KNN

Výhody:

  • Jednoduché na pochopenie a implementáciu: KNN je jednoduchý a efektívny, pokiaľ ide o klasifikáciu a regresiu.
  • Flexibilita: Môže sa použiť na rôzne úlohy vrátane klasifikácie a regresie.

Nevýhody:

  • Výkon pri veľkých dátach: KNN môže byť veľmi pomalý pri veľkých množstvách dát, pretože musí porovnať každý testovací bod s každým tréningovým bodom.
  • Citlivosť na škálovanie: Výsledky môžu byť veľmi závislé od škálovania vstupných premenných, preto je dôležité normalizovať alebo štandardizovať dáta.

Optimalizácia KNN

Pre zlepšenie výkonu KNN môžeme vykonať nasledujúce kroky:

  1. Škálovanie dát: Použitie normalizácie alebo štandardizácie môže pomôcť zlepšiť výsledky.
  2. Výber najvhodnejšej vzdialenostnej metódy: Testovanie rôznych vzdialenostných metód môže ovplyvniť presnosť modelu.
  3. Optimalizácia K: Použitie krížovej validácie na nájdenie optimálnej hodnoty K.

Záver

KNN je výkonný a jednoduchý algoritmus, ktorý môže byť veľmi účinný pre rôzne úlohy strojového učenia. Jeho jednoduchosť a intuitívnosť robia z neho ideálny nástroj pre začiatočníkov a tých, ktorí sa chcú dozvedieť viac o princípoch strojového učenia. Tento sprievodca by mal poskytnúť solídny základ pre používanie KNN v Pythone so Scikit-Learn, a dúfame, že vám pomôže pri vašich budúcich projektoch strojového učenia.

Populárne komentáre
    Momentálne žiadne komentáre
Komentár

1