KNN v Pythone so Sklearn: Kompletný sprievodca
Ú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?
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.
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ť.
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
pythonfrom 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:
pythonimport 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:
- Škálovanie dát: Použitie normalizácie alebo štandardizácie môže pomôcť zlepšiť výsledky.
- Výber najvhodnejšej vzdialenostnej metódy: Testovanie rôznych vzdialenostných metód môže ovplyvniť presnosť modelu.
- 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