W tej lekcji zanurzamy się w świat klasyfikacji, podstawowego zadania w uczeniu maszynowym. Skupimy się na jednym z najprostszych i najłatwiejszych do zrozumienia algorytmów – k-NN (k-Najbliższych Sąsiadów), poznając jego działanie i zastosowania.
Klasyfikacja to proces przypisywania danych do zdefiniowanych kategorii. Wyobraźmy sobie, że chcemy przewidzieć, czy klient kupi produkt na podstawie jego danych demograficznych. Klasyfikacja pozwala nam na przypisywanie klientów do kategorii: 'kupujący' lub 'niekupujący'. Algorytmy klasyfikacyjne uczą się wzorców z danych treningowych, aby móc przewidywać kategorie dla nowych, niewidzianych danych. Przykłady zastosowań: rozpoznawanie spamu, diagnozowanie chorób na podstawie objawów, identyfikacja gatunków roślin na podstawie zdjęć.
Algorytm k-NN (k-Nearest Neighbors) jest prostym, ale skutecznym algorytmem klasyfikacji. Działa na zasadzie 'podobne rzeczy są blisko siebie'. Dla nowego punktu danych, algorytm znajduje k najbliższych punktów danych (sąsiadów) w przestrzeni cech (features). Następnie przypisuje nowy punkt do klasy, która jest najczęściej reprezentowana wśród jego k najbliższych sąsiadów. Kluczowe elementy:
Przykład: Załóżmy, że mamy dane o wysokości i wadze osób oraz ich przynależności do klasy 'wysoki' lub 'niski'. Jeśli dla nowego punktu danych (nowa osoba) znajdziemy 3 najbliższych sąsiadów i 2 z nich są wysocy, a 1 niski, to klasyfikujemy nową osobę jako wysoką.
W Pythonie możemy łatwo użyć biblioteki scikit-learn do implementacji k-NN.
Kroki:
1. Import: from sklearn.neighbors import KNeighborsClassifier
2. Inicjalizacja: knn = KNeighborsClassifier(n_neighbors=3)
(ustawiamy wartość k=3)
3. Trening: knn.fit(X_train, y_train)
(X_train to dane treningowe, y_train to etykiety klas)
4. Predykcja: y_pred = knn.predict(X_test)
(X_test to dane testowe, y_pred to przewidziane etykiety)
Przykład kodu (uproszczony):
from sklearn.neighbors import KNeighborsClassifier
import numpy as np
# Dane treningowe (wysokość i waga)
X_train = np.array([[160, 60], [170, 75], [180, 80], [165, 65]])
# Etykiety (0 - niski, 1 - wysoki)
y_train = np.array([0, 0, 1, 0])
# Inicjalizacja modelu
knn = KNeighborsClassifier(n_neighbors=3)
# Trening modelu
knn.fit(X_train, y_train)
# Dane testowe (wysokość i waga nowej osoby)
X_test = np.array([[175, 78]])
# Predykcja
y_pred = knn.predict(X_test)
print(y_pred) # Otrzymamy przewidzianą klasę (0 lub 1)
Zalety:
* Prosty i łatwy do zrozumienia.
* Nie wymaga fazy treningu (model jest tworzony w czasie predykcji, tzw. leniwe uczenie).
* Może być skuteczny dla danych z wieloma klasami.
Wady:
* Obliczeniowo kosztowny podczas predykcji (musi obliczyć odległości do wszystkich punktów treningowych).
* Wrażliwy na skalę cech (wymaga normalizacji danych).
* Wybór wartości k może być trudny i wpływa na dokładność.
* Może być podatny na problem przekleństwa wymiaru (performance spada dla danych z dużą liczbą cech).
Explore advanced insights, examples, and bonus exercises to deepen understanding.
Dzień dobry! Wspaniale, że jesteście z nami w dalszej podróży po fascynującym świecie uczenia maszynowego. Wczoraj zgłębiliśmy podstawy klasyfikacji i algorytmu k-NN. Dzisiaj zanurzymy się głębiej, poszerzając waszą wiedzę i umiejętności.
W poprzednich rozważaniach skupiliśmy się na teorii. Teraz przyjrzymy się bliżej aspektom implementacyjnym i różnym metrykom odległości, które wpływają na skuteczność k-NN. Pamiętajmy, że wybór odpowiedniej metryki jest kluczowy dla osiągnięcia dobrych wyników.
Sprawdźmy Waszą wiedzę! Spróbujcie rozwiązać poniższe zadania:
Algorytm k-NN, mimo swojej prostoty, znajduje zastosowanie w wielu realnych sytuacjach:
Gotowi na wyzwanie? Spróbujcie:
Chcecie dowiedzieć się więcej? Oto kilka kierunków dalszej eksploracji:
Powodzenia w dalszej nauce! Pamiętajcie, praktyka czyni mistrza!
Masz dane treningowe: [wysokość: 160cm, waga: 60kg, klasa: niski], [170cm, 75kg, niski], [180cm, 80kg, wysoki], [165cm, 65kg, niski]. Nowa osoba: 175cm, 70kg. Użyj k=1 i odległości Euklidesa. Którą klasę otrzyma nowa osoba?
Dla tego samego zestawu danych, co w ćwiczeniu 1, przetestuj k-NN z k=1, k=3, i k=5. Jak zmienia się wynik?
Użyj przykładu kodu z sekcji 'Implementacja k-NN w Praktyce' i zmodyfikuj go. Zmień dane treningowe i przetestuj model na nowych danych testowych. Wykorzystaj dane o produktach (np. cena i ocena) i klasyfikuj je do kategorii 'dobry' lub 'zły'.
Wyobraź sobie, że pracujesz dla firmy sprzedającej owoce. Na podstawie danych historycznych (np. wielkość, kształt, kolor) chcesz sklasyfikować nowe owoce do kategorii 'dojrzałe' lub 'niedojrzałe', aby pomóc w procesie sortowania i pakowania.
Zapoznaj się z pojęciem normalizacji danych i przygotuj się na następną lekcję, w której będziemy omawiać bardziej zaawansowane algorytmy klasyfikacyjne.
We're automatically tracking your progress. Sign up for free to keep your learning paths forever and unlock advanced features like detailed analytics and personalized recommendations.