Scalatura robusta agli outlier

Rilevamento delle anomalie in Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Distanza euclidea

A = np.array([9, 1, 6])
B = np.array([25, 44, 85])


diffs = (B - A) ** 2
dist_AB = np.sqrt(np.sum(diffs)) print(dist_AB)
91.35644476444998

La formula per calcolare la distanza euclidea e un grafico illustrativo.

Rilevamento delle anomalie in Python

Euclidea in SciPy

from scipy.spatial.distance import \
euclidean

dist_AB = euclidean(A, B)
dist_AB
91.35644476444998

La formula per calcolare la distanza euclidea e un grafico illustrativo.

Rilevamento delle anomalie in Python

Standardizzazione

  • Si sottrae la media e si divide per la DEV.ST
  • Risultato: media zero e DEV.ST 1
Rilevamento delle anomalie in Python

StandardScaler

from sklearn.preprocessing import StandardScaler

ss = StandardScaler()

# Estrai feature e target X = males.drop("weightkg", axis=1) y = males[['weightkg']]
# Fit ss.fit(X)
Rilevamento delle anomalie in Python

Trasformazione

X_transformed = ss.transform(X)

X_transformed[:5]
array([[-1.05174523],
       [-0.29289108],
       [ 1.3446363 ],
       [-1.21654894],
       [0.056451235]])
Rilevamento delle anomalie in Python

fit_transform

ss = StandardScaler()

X_transformed = ss.fit_transform(X)
Rilevamento delle anomalie in Python

QuantileTransformer

from sklearn.preprocessing import QuantileTransformer


# Init qt = QuantileTransformer() X = males.drop("weightkg", axis=1) y = males[['weightkg']]
X_transformed = qt.fit_transform(X) X_transformed.shape
(4082, 94)
Rilevamento delle anomalie in Python

Mantenere i nomi delle colonne

qt = QuantileTransformer()

X.loc[:, :] = qt.fit_transform(X)

X.head()

Le prime cinque righe di una versione trasformata del dataset Ansur Males sulle misure corporee.

Rilevamento delle anomalie in Python

Istogramma uniforme

plt.hist(X['footlength'], color='red')

plt.xlabel("Lunghezza del piede")
plt.title("Istogramma delle lunghezze del piede")

plt.show()

Un istogramma della colonna foot length che mostra una distribuzione uniforme

Rilevamento delle anomalie in Python

Istogramma normale

qt = QuantileTransformer(
  output_distribution='normal')

# Ricrea la matrice delle feature sovrascritta
X = males.drop("weightkg", axis=1)
X.loc[:, :] = qt.fit_transform(X)

plt.hist(X['footlength'], color='r')
plt.xlabel("Lunghezza del piede")
plt.title("Istogramma delle lunghezze del piede")

plt.show()

Un istogramma della colonna foot length che mostra una distribuzione quasi normale

Rilevamento delle anomalie in Python

Passiamo alla pratica!

Rilevamento delle anomalie in Python

Preparing Video For Download...