Menu
CoddyTech

Gestire i valori anomali

Fa parte della sezione Statistica per il machine learning del percorso Machine Learning di Coddy. Lezione 27 di 64.

Dieci appartamenti hanno usato circa 10 m³ d’acqua ciascuno, ma una perdita ha portato uno di loro a 64. Puoi eliminarlo oppure limitarlo al limite più vicino:

Il consumo d’acqua di 10 appartamenti in tre righe. Mantieni: nove punti vicino a 10 e la perdita a 64, media 15.2. Elimina: la perdita rimossa, media 9.8. Limita: la perdita riportata al limite a 14, media 10.2

np.clip(a, low, high) limita un intero array:

water = np.array([8, 11, 9, 10, 12, 9, 64, 10, 11, 8])
low, high = 6.0, 14.0  # i limiti dell'IQR
dropped = water[(water >= low) & (water <= high)]
capped = np.clip(water, low, high)
print(len(dropped), len(capped))
print(capped)

Questo stampa:

9 10
[ 8. 11.  9. 10. 12.  9. 14. 10. 11.  8.]

Un modello potrebbe inseguire quel dato isolato, quindi decidi prima dell'addestramento. Correggi o elimina gli errori di battitura; mantieni o limita i valori estremi reali. Non eliminare mai nulla senza dirlo: specifica quanti ne hai modificati.

challenge icon

Sfida

Medio

Un'app di ciclismo ha registrato le velocità medie di 15 corse in speeds; due sembrano anomale. Il codice iniziale ha inserito i limiti IQR in low e high.

  1. Crea dropped, con le velocità comprese entro i limiti (inclusi entrambi), e capped.
  2. Stampa una riga ciascuno per keep, drop e cap: le corse, la loro media e il loro .std(), arrotondati a 2 decimali.
  3. Stampa quante corse sono state modificate dal cap.

Per le 10 corse di un altro ciclista:

Keep: 10 rides, mean 21.38, std 6.58
Drop: 9 rides, mean 19.2, std 0.77
Cap: 10 rides, mean 19.45, std 1.04
Capping changed 1 of 10 rides

Provalo tu

import numpy as np


# Restituisce i limiti IQR inferiore e superiore di un array
def iqr_fences(a):
    q1 = np.percentile(a, 25)
    q3 = np.percentile(a, 75)
    iqr = q3 - q1
    return q1 - 1.5 * iqr, q3 + 1.5 * iqr


speeds = np.array([24.5, 22.8, 26.1, 23.9, 3.1, 25.4, 21.7, 24.2, 27.3, 78.4, 23.1, 25.8, 22.4, 24.9, 26.6])
low, high = iqr_fences(speeds)

# Scrivi il tuo codice qui sotto
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Statistica per il machine learning

Esercitati da solo: Compilatore Python online