KNN Algoritmus v Pythone bez použitia knižnice sklearn

KNN Algoritmus v Pythone bez použitia knižnice sklearn: Kompletný sprievodca

Úvod Predstavte si, že máte dáta a chcete predpovedať, k akej triede patrí nový údaj. KNN (k najbližších susedov) je jednoduchý, ale mocný algoritmus, ktorý vám môže pomôcť s týmto problémom. Čo však robiť, keď nemáte prístup k bežným knižniciam, ako je sklearn? Ako môžeme implementovať KNN od nuly v Pythone? Poďme sa na to pozrieť.

Krok 1: Definovanie vzdialenosti Kľúčovým aspektom KNN je výpočet vzdialenosti medzi bodmi. Najbežnejšie používané metódy sú Euklidovská vzdialenosť a Manhattan vzdialenosť. Euklidovská vzdialenosť medzi dvoma bodmi (x1,y1)(x_1, y_1)(x1,y1) a (x2,y2)(x_2, y_2)(x2,y2) je definovaná ako:

d=(x2x1)2+(y2y1)2d = \sqrt{(x_2 - x_1)^2 + (y_2 - y_1)^2}d=(x2x1)2+(y2y1)2

Krok 2: Implementácia KNN v Pythone Pre implementáciu KNN bez použitia knižnice sklearn môžeme vytvoriť vlastné funkcie na výpočet vzdialenosti a klasifikáciu.

python
import numpy as np def euklidovska_vzdialenost(x1, x2): return np.sqrt(np.sum((x1 - x2) ** 2)) class KNN: def __init__(self, k=3): self.k = k def fit(self, X_train, y_train): self.X_train = X_train self.y_train = y_train def predict(self, X_test): y_pred = [self._predict(x) for x in X_test] return np.array(y_pred) def _predict(self, x): # Vypočítať vzdialenosti distances = [euklidovska_vzdialenost(x, x_train) for x_train in self.X_train] # Získať najbližších k susedov k_indices = np.argsort(distances)[:self.k] k_nearest_labels = [self.y_train[i] for i in k_indices] # Vrátiť najčastejšiu triedu return np.bincount(k_nearest_labels).argmax()

Krok 3: Testovanie modelu Testovanie je neoddeliteľnou súčasťou každého modelu strojového učenia. Tu ukážeme, ako testovať náš model KNN:

python
from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split # Načítanie dát data = load_iris() X = data.data y = data.target # Rozdelenie dát na tréningovú a testovaciu množinu X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # Vytvorenie a tréning KNN modelu knn = KNN(k=5) knn.fit(X_train, y_train) # Predpovedanie testovacích dát predictions = knn.predict(X_test) # Vyhodnotenie presnosti accuracy = np.mean(predictions == y_test) print(f'Presnosť: {accuracy * 100:.2f}%')

Záver Tento prístup k implementácii KNN bez použitia sklearn vám poskytuje hlbší pohľad na to, ako tento algoritmus funguje. Naučili sme sa, ako vypočítať vzdialenosti, klasifikovať nové vzorky a hodnotiť výkon nášho modelu. Aj keď sklearn poskytuje pohodlné nástroje, pochopenie základných princípov vám môže pomôcť lepšie sa orientovať v strojovom učení.

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

0