Escalonamento robusto a outliers

Detecção de Anomalias em Python

Bekhruz (Bex) Tuychiev

Kaggle Master, Data Science Content Creator

Distância euclidiana

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

A fórmula para calcular a distância euclidiana e um visual ilustrativo.

Detecção de Anomalias em Python

Euclidean no SciPy

from scipy.spatial.distance import \
euclidean

dist_AB = euclidean(A, B)
dist_AB
91.35644476444998

A fórmula para calcular a distância euclidiana e um visual ilustrativo.

Detecção de Anomalias em Python

Padronização

  • Subtrai a média e divide pelo DP
  • Resultado: média zero e DP igual a 1
Detecção de Anomalias em Python

StandardScaler

from sklearn.preprocessing import StandardScaler

ss = StandardScaler()

# Extract feature and target X = males.drop("weightkg", axis=1) y = males[['weightkg']]
# Fit ss.fit(X)
Detecção de Anomalias em Python

Transformando

X_transformed = ss.transform(X)

X_transformed[:5]
array([[-1.05174523],
       [-0.29289108],
       [ 1.3446363 ],
       [-1.21654894],
       [0.056451235]])
Detecção de Anomalias em Python

fit_transform

ss = StandardScaler()

X_transformed = ss.fit_transform(X)
Detecção de Anomalias em 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)
Detecção de Anomalias em Python

Preservando nomes de colunas

qt = QuantileTransformer()

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

X.head()

As cinco primeiras linhas de uma versão transformada do conjunto Ansur Males de medidas corporais.

Detecção de Anomalias em Python

Histograma uniforme

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

plt.xlabel("Foot length")
plt.title("Histogram of foot lengths")

plt.show()

Um histograma da coluna foot length que mostra uma distribuição uniforme

Detecção de Anomalias em Python

Histograma normal

qt = QuantileTransformer(
  output_distribution='normal')

# Rebuild the overridden feature array
X = males.drop("weightkg", axis=1)
X.loc[:, :] = qt.fit_transform(X)

plt.hist(X['footlength'], color='r')
plt.xlabel("Foot length")
plt.title("Histogram of foot lengths")

plt.show()

Um histograma da coluna foot length que mostra uma distribuição quase normal

Detecção de Anomalias em Python

Vamos praticar!

Detecção de Anomalias em Python

Preparing Video For Download...