Comment détecter et éliminer les valeurs aberrantes

Partager sur Facebook
Partager sur Twitter
Partager sur lié
Partager sur télégramme
Partager sur WhatsApp

Contenu

Cet article a été publié dans le cadre du Blogathon sur la science des données

introduction

Dans mon article précédent, Je parle des concepts théoriques sur les valeurs aberrantes et essaie de trouver la réponse à la question: “Quand devons-nous supprimer les valeurs aberrantes et quand devons-nous conserver les valeurs aberrantes?”.

Pour mieux comprendre cet article, tu dois d'abord lire ça Article puis passez à ceci afin que vous ayez une idée claire de l'analyse des valeurs aberrantes dans les projets de science des données.

Dans cet article, Nous essaierons de répondre aux questions suivantes avec les Piton la mise en oeuvre,

?? Comment gérer les valeurs aberrantes?

?? Comment détecter les valeurs aberrantes?

?? Quelles sont les techniques de détection et de suppression des valeurs aberrantes?

Commençons


Comment gérer les valeurs aberrantes?

?? Garnison: Exclure les valeurs aberrantes. de notre analyse. En appliquant cette technique, notre les données deviennent minces lorsqu'il y a plus de valeurs aberrantes présentes dans l'ensemble de données. Son principal avantage est sa le plus rapide la nature.

??Tamponnade: Dans cette technique, Cap notre valeurs aberrantes et faire la limite c'est-à-dire, au-dessus ou au-dessous d'une valeur particulière, toutes les valeurs seront considérées comme des valeurs aberrantes, et le nombre de valeurs aberrantes dans l'ensemble de données donne ce nombre limite.

Par exemple, Si vous travaillez dans la fonction de revenu, les personnes au-dessus d'un certain niveau de revenu peuvent se comporter de la même manière que celles ayant des revenus inférieurs. Dans ce cas, peut limiter la valeur du revenu à un niveau qui le maintient intact et, en conséquence, traiter les valeurs aberrantes.

??Traiter les valeurs aberrantes comme une valeur manquante: Pour en supposant que les valeurs aberrantes sont des observations manquantes, les traiter en conséquence, c'est-à-dire, égal aux valeurs manquantes.

Vous pouvez vérifier l'élément de valeur manquante ici

?? Discrétisation: Dans cette technique, lors de la création des groupes, nous incluons les valeurs aberrantes dans un groupe particulier et les forçons à se comporter de la même manière que celles des autres points de ce groupe. Cette technique est également connue sous le nom de Binning.

Vous pouvez en savoir plus sur la discrétisation ici.

Comment détecter les valeurs aberrantes?

?? Pour les distributions normales: Utiliser des relations de distribution normales empiriques.

– Les points de données ci-dessous média-3 * (sigma) ou au-dessus médias + 3 * (sigma) sont des valeurs aberrantes.

où moyenne et sigma sont les valeur moyenne Oui Écart-type d'une colonne particulière.

normal20distribution20écarts-1002347

Figure. Caractéristiques d'une distribution normale

Source de l'image: Relier

?? Pour les distributions asymétriques: Utiliser la règle de proximité Inter-Quartile Range (IQR).

– Les points de données ci-dessous T1 – 1.5 IQR ou au-dessus T3 + 1.5 IQR sont des valeurs aberrantes.

où Q1 et Q3 sont les 25 Oui Centile 75 de l'ensemble de données respectivement, et IQR représente l'intervalle interquartile et est donné par Q3 – T1.

box_plot_ref_needed-1049043

Figure. IQR pour détecter les valeurs aberrantes

Source de l'image: Relier

?? Pour les autres diffusions: Utilisation approche basée sur les centiles.

Par exemple, Points de données éloignés du centile 99% et inférieur au centile 1 sont considérés comme des valeurs aberrantes.

fig-6-exemple-4457464

Figure. Représentation centile

Source de l'image: Relier

Techniques de détection et d'élimination des valeurs aberrantes:

?? Traitement du score Z:

Hypothèse– Les caractéristiques sont normalement ou approximativement normalement distribuées.

Paso 1: Importation des dépendances requises

importer numpy en tant que np
importer des pandas au format pd
importer matplotlib.pyplot en tant que plt
importer seaborn comme sns

Paso 2: lire et charger l'ensemble de données

df = pd.read_csv('placement.csv')
df.échantillon(5)

Détecter et supprimer les valeurs aberrantes cgpa

Paso 3: Esquissez les graphiques de distribution des caractéristiques

avertissements d'importation
warnings.filterwarnings('ignorer')
plt.figure(taille de la figue=(16,5))
plt.sous-intrigue(1,2,1)
sns.distplot(df['cgpa'])
plt.sous-intrigue(1,2,2)
sns.distplot(df['placement_exam_marks'])
plt.show()

graphique de distribution Détecter et supprimer les valeurs aberrantes

Paso 4: trouver les valeurs limites

imprimer("Le plus élevé autorisé",df['cgpa'].moyenne() + 3*df['cgpa'].std())
imprimer("Le plus bas autorisé",df['cgpa'].moyenne() - 3*df['cgpa'].std())

Production:

Le plus élevé autorisé 8.808933625397177
Le plus bas autorisé 5.113546374602842

Paso 5: trouver des valeurs aberrantes

df[(df['cgpa'] > 8.80) | (df['cgpa'] < 5.11)]

Paso 6: Garniture aberrante

nouveau_df = df[(df['cgpa'] < 8.80) & (df['cgpa'] > 5.11)]
nouveau_df

Paso 7: limitation des valeurs aberrantes

limite_supérieure = df['cgpa'].moyenne() + 3*df['cgpa'].std()
limite_inférieure = df['cgpa'].moyenne() - 3*df['cgpa'].std()

Paso 8: à présent, appliquer le capuchon

df['cgpa'] = np.où(
    df['cgpa']>limite supérieure,
    limite supérieure,
    np.où(
        df['cgpa']<limite inférieure,
        limite inférieure,
        df['cgpa']
    )
)

Paso 9: maintenant voir les statistiques en utilisant la fonction “Décris”

df['cgpa'].décris()

Production:

compter    1000.000000
moyenne        6.961499
std         0.612688
min         5.113546
25%         6.550000
50%         6.960000
75%         7.370000
max         8.808934
Nom: cgpa, dtype: float64

Ceci complète notre technique basée sur le Z-score !!

?? Filtrage basé sur IQR:

Utilisé lorsque notre distribution de données est faussée.

Paso 1: importer les dépendances nécessaires

importer numpy en tant que np
importer des pandas au format pd
importer matplotlib.pyplot en tant que plt
importer seaborn comme sns

Paso 2: lire et charger l'ensemble de données

df = pd.read_csv('placement.csv')
df.head()

Paso 3: Esquissez le graphique de distribution des caractéristiques.

plt.figure(taille de la figue=(16,5))
plt.sous-intrigue(1,2,1)
sns.distplot(df['cgpa'])
plt.sous-intrigue(1,2,2)
sns.distplot(df['placement_exam_marks'])
plt.show()

Paso 4: Former une boîte à moustaches pour la caractéristique asymétrique

sns.boxplot(df['placement_exam_marks'])

Détecter et supprimer les valeurs aberrantes de la boîte à moustaches

Paso 5: Trouver l'IQR

centile25 = df['placement_exam_marks'].quantile(0.25)
centile75 = df['placement_exam_marks'].quantile(0.75)

Paso 6: Trouver la limite supérieure et inférieure

limite_supérieure = percentile75 + 1.5 * iqr
limite_inférieure = percentile25 - 1.5 * iqr

Paso 7: trouver des valeurs aberrantes

df[df['placement_exam_marks'] > limite supérieure]
df[df['placement_exam_marks'] < limite inférieure]

Paso 8: Découper

nouveau_df = df[df['placement_exam_marks'] < limite supérieure]
new_df.shape

Paso 9: Comparer les tracés après rognage

plt.figure(taille de la figue=(16,8))
plt.sous-intrigue(2,2,1)
sns.distplot(df['placement_exam_marks'])
plt.sous-intrigue(2,2,2)
sns.boxplot(df['placement_exam_marks'])
plt.sous-intrigue(2,2,3)
sns.distplot(nouveau_df['placement_exam_marks'])
plt.sous-intrigue(2,2,4)
sns.boxplot(nouveau_df['placement_exam_marks'])
plt.show()

comparaison des coupures de poste Détecter et supprimer les valeurs aberrantes

Paso 10: branché

new_df_cap = df.copy()
nouveau_df_cap['placement_exam_marks'] = np.où(
    nouveau_df_cap['placement_exam_marks'] > limite supérieure,
    limite supérieure,
    np.où(
        nouveau_df_cap['placement_exam_marks'] < limite inférieure,
        limite inférieure,
        nouveau_df_cap['placement_exam_marks']
    )
)

Paso 11: Comparer les tracés après la limitation

plt.figure(taille de la figue=(16,8))
plt.sous-intrigue(2,2,1)
sns.distplot(df['placement_exam_marks'])
plt.sous-intrigue(2,2,2)
sns.boxplot(df['placement_exam_marks'])
plt.sous-intrigue(2,2,3)
sns.distplot(nouveau_df_cap['placement_exam_marks'])
plt.sous-intrigue(2,2,4)
sns.boxplot(nouveau_df_cap['placement_exam_marks'])
plt.show()

limite de poste de comparaison

Ceci complète notre technique basée sur l'IQR !!

?? Centile:

– Cette technique fonctionne en définissant une valeur seuil particulière, qui décide en fonction de notre approche du problème.

– Alors que nous supprimons les valeurs aberrantes en limitant, cette méthode particulière est connue sous le nom Winsorización.

– Ici, nous gardons toujours symétrie des deux côtés signifie que si nous enlevons le 1% droit, puis à gauche on diminue aussi un 1%.

Paso 1: importer les dépendances nécessaires

importer numpy en tant que np
importer des pandas au format pd

Paso 2: lire et charger l'ensemble de données

df = pd.read_csv('poids-hauteur.csv')
df.échantillon(5)

hauteur des données

Paso 3: Esquissez le graphique de distribution de la caractéristique de “la taille”

sns.distplot(df['Hauteur'])

Paso 4: Tracez la boîte à moustaches de la caractéristique de “la taille”

sns.boxplot(df['Hauteur'])

hauteur de la parcelle

Paso 5: Trouver la limite supérieure et inférieure

limite_supérieure = df['Hauteur'].quantile(0.99)
limite_inférieure = df['Hauteur'].quantile(0.01)

Paso 7: appliquer la garniture

nouveau_df = df[(df['Hauteur'] <= 74.78) & (df['Hauteur'] >= 58.13)]

Paso 8: Comparer la distribution et la boîte à moustaches après découpage

sns.distplot(nouveau_df['Hauteur'])
sns.boxplot(nouveau_df['Hauteur'])

Détectez et supprimez les valeurs aberrantes en découpant la boîte à moustaches

?? Winsorización:

Paso 9: Appliquer la limitation (Winsorización)

df['Hauteur'] = np.où(df['Hauteur'] >= limite_supérieure,
        limite supérieure,
        np.où(df['Hauteur'] <= limite_inférieure,
        limite inférieure,
        df['Hauteur']))

Paso 10: Comparer la distribution et la boîte à moustaches après la contrainte

sns.distplot(df['Hauteur'])
sns.boxplot(df['Hauteur'])

boxplot post limit Détecter et supprimer les valeurs aberrantes

Ceci complète notre technique basée sur les centiles !!

Remarques finales

Merci pour la lecture!

Si vous avez aimé cela et que vous voulez en savoir plus, visitez mes autres articles sur la science des données et l'apprentissage automatique en cliquant sur le Relier

N'hésitez pas à me contacter au Linkedin, Courrier électronique.

Tout ce qui n'est pas mentionné ou voulez-vous partager vos pensées? N'hésitez pas à commenter ci-dessous et je vous répondrai.

A propos de l'auteur

Chirag Goyal

Actuellement, Je poursuis mon Bachelor of Technology (B.Tech) en informatique et ingénierie de Institut indien de technologie Jodhpur (IITJ). Je suis très enthousiasmé par l'apprentissage automatique, apprentissage profond et intelligence artificielle.

Les médias présentés dans cet article ne sont pas la propriété de DataPeaker et sont utilisés à la discrétion de l'auteur.

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.