Menu
CoddyTech

Reguła Z-score

Część sekcji Statystyka w uczeniu maszynowym ścieżki Machine Learning w Coddy. Lekcja 26 z 64.

Na farmie zważono 300 jaj, a następnie ręcznie wpisano dwa wyniki: 6.2 g i 94.6 g — oba błędne. Ich wyniki z (odległości od średniej, w odchyleniach standardowych) zdradzają pomyłki:

Histogram masy 300 jaj przedstawionej jako wyniki z; wszystkie mieszczą się między -3 a 3 w zacienionym pasie oznaczonym jako zakres do 3 odchyleń standardowych. Dwa czerwone punkty leżą daleko poza nim: 6.2 g przy z = -9.9 i 94.6 g przy z = 6.3

np.abs usuwa znaki minus, więc jedno porównanie wykrywa obie strony:

rng = np.random.default_rng(3)
eggs = np.concatenate([rng.normal(60, 4, size=300), np.array([6.2, 94.6])])
z = (eggs - eggs.mean()) / eggs.std()
print(np.abs(np.array([-4, 2, -1])))
print(eggs[np.abs(z) > 3])

To wypisuje:

[4 2 1]
[ 6.2 94.6]

W danych o rozkładzie dzwonowym 99.7% wartości mieści się w zakresie 3 odchyleń standardowych, więc np.abs(z) > 3 wskazuje rzadkie wartości, które należy sprawdzić przed trenowaniem.

Jednak wartość odstająca zawyża odchylenie standardowe, względem którego jest mierzona, więc w małych próbach pozostaje ukryta: w takich przypadkach zastosuj regułę IQR.

challenge icon

Wyzwanie

Średni

Waga w piekarni zważyła 250 bochenków i zapisała je w loaves, a 3 kolejne wpisano ręcznie. Program odczytuje próg.

  1. Oblicz wynik z dla każdego bochenka, używając metod tablicy .mean() i .std().
  2. W kolejności pozycji wypisz każdy bochenek, którego wynik z jest oddalony od 0 o więcej niż próg: jego pozycję, wagę (z 1 miejscem po przecinku) i wynik z (z 2 miejscami po przecinku).
  3. Wypisz, ile bochenków wymieniono.

Dla innego dnia i progu 3:

Loaf 200: 702.5 g, z = -5.38
Loaf 201: 889.3 g, z = 4.91
Loaves to re-weigh: 2

Spróbuj swoich sił

import numpy as np

# Nie zmieniaj poniższych wierszy: 250 bochenków zważonych na wadze, a następnie 3 masy wpisane ręcznie
rng = np.random.default_rng(25)
loaves = np.concatenate([rng.normal(800, 15, size=250), np.array([731.4, 868.9, 912.3])])
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 Statystyka w uczeniu maszynowym

Poćwicz samodzielnie: Kompilator Python online