Menu
CoddyTech

Wybór eps

Część sekcji Uczenie nienadzorowane ścieżki Machine Learning w Coddy. Lekcja 22 z 51.

eps to przypuszczenie, dopóki tego nie sprawdzisz. W przypadku parku z lekcji Noise Points zmierz odległość każdego punktu od jego 4. najbliższego sąsiada, wliczając sam punkt, tak jak w min_samples=4. Posortuj i narysuj wykres:

Rosnąca krzywa 71 posortowanych odległości: niskie i płaskie wartości w okolicach 1 m dla punktów piknikowych, a następnie ostry zakręt w okolicach 3 m, gdzie przerywana linia oznacza eps, i stromy wzrost dla osób przebywających samotnie

Punkty z tłumu leżą nisko i płasko; pojedyncze punkty gwałtownie idą w górę. Kolano, w którym krzywa zaczyna piąć się w górę, wyznacza dobrą wartość eps:

from sklearn.neighbors import NearestNeighbors
nn = NearestNeighbors(n_neighbors=4).fit(X)
distances, rows = nn.kneighbors(X)
ax.plot(np.sort(distances[:, -1]))

kneighbors podaje odległości każdego punktu od 4 najbliższych sąsiadów, od najbliższego, więc kolumna -1 zawiera odległość do 4. sąsiada. np.sort porządkuje je.

challenge icon

Wyzwanie

Średni

Sejsmolodzy chcą, aby DBSCAN znalazł linie uskoków pod obszarem, na którym występowały trzęsienia ziemi przez rok, przy min_samples=5. Wybierz wartość eps.

  1. Dopasuj NearestNeighbors(n_neighbors=5) do X i uzyskaj odległości każdego trzęsienia ziemi.
  2. Narysuj posortowane odległości do 5. najbliższego sąsiada.
  3. Uruchom kod i odczytaj położenie kolana. Zapisz tę wartość w eps, narysuj ją jako przerywaną szarą linię za pomocą ax.axhline i wyświetl wykres.

Dla innego regionu kolano znajdowało się w pobliżu 4 km:

Wykres zatytułowany „Odległość do 5. najbliższego trzęsienia ziemi”: krzywa płaska w pobliżu 2 km dla około 145 trzęsień ziemi, a następnie gwałtownie rosnąca powyżej 50 km, z przerywaną szarą linią na wysokości 4 km, w miejscu kolana

Coddy opisze Twój wykres, a następnie uruchomi DBSCAN z podaną przez Ciebie wartością eps.

Spróbuj swoich sił

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn.neighbors import NearestNeighbors

# Rok trzęsień ziemi w jednym regionie: położenie każdego epicentrum w km
quakes = pd.read_csv("quakes.csv")
X = np.column_stack([quakes["east_km"], quakes["north_km"]])

fig, ax = plt.subplots()
ax.set_title("Distance to the 5th Nearest Quake")
ax.set_xlabel("Quakes, sorted")
ax.set_ylabel("Distance (km)")

# Napisz swój kod poniżej
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Uczenie nienadzorowane

Poćwicz samodzielnie: Kompilator Python online