Menu
CoddyTech

Znajdowanie nietypowych elementów

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

Ten rozdział pomaga wyszukiwać nietypowe wiersze. Pod koniec zaznaczysz dziwne minuty na serwerze:

Nocne minuty pracy serwera WWW, liczba żądań na sekundę rośnie, a opóźnienie wzrasta: zwarta, wznosząca się chmura punktów i cztery samotne minuty zakreślone na czerwono, w których dwa detektory są zgodne

Anomalia to rzadki wiersz, który różni się od pozostałych: usterka, oszustwo, literówka. Każda nowa anomalia jest inna, więc nikt nie może jej wcześniej oznaczyć.

Zacznij od wyników z. StandardScaler przekształca każdą kolumnę w wyniki z, więc jeden wiersz kodu oznacza wiersze, w których dowolna wartość przekracza 3:

z = StandardScaler().fit_transform(X)
odd = (np.abs(z) > 3).sum(axis=1) > 0

Odkształcenie czujnika mostu rośnie wraz z temperaturą. Jeden odczyt znacznie przewyższający pozostałe jest zakreślony na czerwono i oznaczony jako odczyt, w którym wynik z odkształcenia przekracza 3. Jeden odczyt poniżej trendu przy 27 stopniach jest zakreślony na pomarańczowo: pominięty

Ale wiersz może być zwyczajny w każdej kolumnie, a odstający tylko ze względu na ich kombinację. Z-score’y kolumn tego nie wychwytują.

challenge icon

Wyzwanie

Średni

Supermarket zapisał średnie z jednego dnia dla 80 zamrażarek. Które wymagają sprawdzenia przez technika? Program odczytuje próg.

  1. Zamień każdą kolumnę X na wyniki z-score.
  2. Dla każdej kolumny wypisz, ile zamrażarek zostało przez nią oznaczonych: wynik z-score jest dalej od 0 niż wynosi próg.
  3. Wypisz każdą zamrażarkę oznaczoną przez dowolną kolumnę, w kolejności z tabeli.

Dla innego sklepu i wartości 3:

temp_c: 1 flagged
power_kw: 2 flagged
door_openings: 0 flagged
defrost_min: 0 flagged
Freezers to check:
  F05
  F13
  F51

Spróbuj swoich sił

import numpy as np
import pandas as pd
from sklearn.preprocessing import StandardScaler

# Jeden wiersz na każdą szafę mroźniczą: średnie wartości z jednego dnia
freezers = pd.read_csv("freezers.csv")
columns = ["temp_c", "power_kw", "door_openings", "defrost_min"]
X = freezers[columns]
cutoff = float(input())

# 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