Além das normas: explorando o mundo dos outliers
Como os outliers mantêm o Cientista de Dados alerta

Outliers são pontos que estão a uma distância anormal da maioria dos pontos no conjunto de dados. Antes de nos aprofundarmos na solução de qualquer problema de aprendizado de máquina, é a etapa principal remover os outliers, se não forem necessários. Vamos discutir as raízes de um Outlier.
Causas comuns de outliers
- Erro de entrada de dados (erro humano)
- erro experimental
- Erro de medição (erro instrumental)
- Erro de amostragem (extração de dados de fontes diversas/erradas)
- Erro intencional (outliers fictícios criados para testar métodos de detecção)
- Erro natural (não é um erro, novidades nos dados)
1. IQR (faixa interquartil)
O IQR é o meio de 50% do conjunto de dados. É o intervalo de valores
entre o terceiro quartil e o primeiro quartil (Q3 — Q1). Usado para medir a variabilidade dividindo o conjunto de dados em quartis. Quartis são valores que dividem seus dados em 4 partes, desde que os dados sejam classificados em ordem crescente.
IQR = Q3 — Q1
Q1 = 1º quartil (quartil inferior que é o 25º percentil que divide os 25% inferiores dos dados)
Q2 = 2º quartil (mediana que é o 50º percentil)
Q3 = 3º quartil (superior quartil que é o 75º percentil que divide os 25 superiores % De dados)
Nota : Porcentagem e percentil são duas coisas diferentes. Se o 25º percentil for 8, isso significa simplesmente que 25% dos dados são menores que 8. Se o 75º percentil for 40, significa simplesmente que 75% dos dados são menores que 40.
Se o valor dos dados < Q1–1.5(IQR) OU o valor dos dados > Q3+1.5(IQR), então é tratado como um outlier.

#Python code for finding outliers
import numpy as np
data = [1,4,6,3,500,24,53]
sort_data = np.sort(data)
Q1 = np.percentile(data,25)
Q3 = np.percentile(data,75)
IQR = Q3-Q1
low_limit = Q1 - 1.5(IQR)
upper_limit = Q3 + 1.5(IQR)
outlier = []
for i in data:
if(i>upper_limit or i<low_limit):
outlier.append()
return outlier
Também é conhecido como pontuação padrão, que nos dá uma ideia de quão longe um ponto de dados está da média. Ele informa o quanto um ponto de dados se desvia da média em desvios padrão. Sabemos que, se os dados seguirem a distribuição normal, os dados cobrirão 99,7% dos pontos até 3 desvios padrão. Podemos ter nossos outliers calculados além disso em ambos os lados.
Portanto, se obtivermos o escore z como 2,5, dizemos que está 2,5 desvio padrão acima da média e, se obtivermos -2,5, dizemos que está 2,5 desvio padrão abaixo da média. Portanto, podemos concluir que o z-score não é um desvio padrão acima ou abaixo do que significa que cada valor cai.
A principal vantagem do z-score é que ele informa quanto valor em % é um outlier.
Escore Z = (x-μ)/σ
x é uma observação na amostra
x̄ é a média das observações na amostra
σ é o desvio padrão das observações na amostra

3. Classifique os dados e veja os valores extremos
Este é o método básico onde você pode classificar os dados. Depois disso, procure por valores extremos e esse será o nosso outlier.
Por exemplo, recebemos a idade de 4,6,9,2,10,12,102.
Passo 1: Classifique os dados: 2, 4,6,9,12,102
Passos 2: Localize valores extremos, podemos ver que 102 é um valor extremo, então pode ser um valor atípico para nós.
4. Traçando gráfico de dispersão, boxplot
- Scatterplot : É um ótimo indicador que permite ver se existe um padrão entre duas variáveis. É usado quando você emparelha dados numéricos ou quando está determinando a relação entre duas variáveis. Mas não apenas isso, você também pode usá-lo para detecção de outliers.
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
df = pd.read_csv("heart.csv")
fig,ax = plt.subplots(figsize = (10,6))
# Scatter with positive examples
pos = ax.scatter(df.age[df.target==1], df.thalach[df.target == 1], color="salmon", label="Heart Disease")
# Scatter with negative examples
neg = ax.scatter(df.age[df.target==0], df.thalach[df.target == 0], color="lightblue", label="No Heart Disease")
#customization
plt.title("Max heart rate in comparison to age")
plt.xlabel("Age")
plt.ylabel("Max heart rate")
plt.legend()
plt.show()
Visualization of Scatter plot
import pandas as pd
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns
import warnings
warnings.filterwarnings('ignore')
df = pd.read_csv("diabetes.csv")
#visualazing each feature to detect the presence of outliers
fig, axis = plt.subplots(nrows=1, ncols=8, figsize=(16, 6))
sns.boxplot(data=df[['Pregnancies']], ax=axis[0]);
sns.boxplot(data=df[['Glucose']], ax=axis[1]);
sns.boxplot(data=df[['BloodPressure']],ax=axis[2]);
sns.boxplot(data=df[['SkinThickness']], ax=axis[3]);
sns.boxplot(data=df[['Insulin']], ax=axis[4]);
sns.boxplot(data=df[['BMI']], ax=axis[5]);
sns.boxplot(data=df[['DiabetesPedigreeFunction']],ax=axis[6]);
sns.boxplot(data=df[['Age']], ax=axis[7]);
Visualization of Boxplot
Obrigado por ler! Se você gostou deste artigo e gostaria de ler mais do meu trabalho, considere me seguir no Medium. Estou ansioso para compartilhar mais com você no futuro.