KNN Algoritmus v Pythone bez použitia knižnice sklearn
Ú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) a (x2,y2) je definovaná ako:
d=(x2−x1)2+(y2−y1)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.
pythonimport 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:
pythonfrom 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