So erkennen und beseitigen Sie Ausreißer

Inhalt

Dieser Artikel wurde im Rahmen der Data Science Blogathon

Einführung

In meinem vorherigen Artikel, Ich spreche über die theoretischen Konzepte zu Ausreißern und versuche die Antwort auf die Frage zu finden: „Wann müssen wir die Ausreißer entfernen und wann behalten wir die Ausreißer??“.

Um diesen Artikel besser zu verstehen, das musst du erst lesen Artikel und fahren Sie dann damit fort, damit Sie eine klare Vorstellung von der Ausreißeranalyse in Data Science-Projekten haben.

In diesem Artikel, Wir werden versuchen, die folgenden Fragen gemeinsam mit den Felshaken Implementierung,

👉 Umgang mit Ausreißern?

👉 So erkennen Sie Ausreißer?

👉 Welche Techniken zum Erkennen und Entfernen von Ausreißern gibt es??

Lasst uns beginnen


Umgang mit Ausreißern?

👉 Garnison: Ausreißer ausschließen. unserer Analyse. Anwenden dieser Technik unsere Daten werden dünn, wenn mehr Ausreißer im Datensatz vorhanden sind. Sein Hauptvorteil ist seine das schnellste Natur.

👉Tamponade: Bei dieser Technik, Cap unsere Ausreißer und machen die Grenze nämlich, über oder unter einem bestimmten Wert, alle Werte werden als Ausreißer betrachtet, und die Anzahl der Ausreißer im Datensatz ergibt diese Begrenzungszahl.

Zum Beispiel, Wenn Sie in der Einkommensfunktion arbeiten, Menschen über einem bestimmten Einkommensniveau können sich genauso verhalten wie Menschen mit niedrigerem Einkommen. In diesem Fall, kann den Wert des Einkommens auf ein Niveau begrenzen, das es intakt hält und, Folglich, mit Ausreißern umgehen.

👉Ausreißer als fehlenden Wert behandeln: Von Annahme von Ausreißern als fehlende Beobachtungen, behandle sie entsprechend, nämlich, gleich fehlenden Werten.

Sie können das fehlende Wertelement überprüfen hier

👉 Diskretisierung: Bei dieser Technik, Beim Erstellen der Gruppen beziehen wir die Ausreißer in eine bestimmte Gruppe ein und zwingen sie, sich genauso zu verhalten wie die anderen Punkte in dieser Gruppe. Diese Technik ist auch bekannt als Klasseneinteilung.

Sie können mehr über die Diskretisierung erfahren hier.

So erkennen Sie Ausreißer?

👉 Für Normalverteilungen: Verwenden Sie empirische Normalverteilungsbeziehungen.

– Die Datenpunkte unten Medien-3 * (sigma) oder höher Medien + 3 * (sigma) sind Ausreißer.

wo bedeuten und sigma sind die Durchschnittswert Ja Standardabweichung einer bestimmten Spalte.

normal20distribution20deviations-1002347

Feige. Eigenschaften einer Normalverteilung

Bildquelle: Verknüpfung

👉 Für schiefe Verteilungen: Verwenden Sie die Näherungsregel für den Interquartilbereich (IQR).

– Die Datenpunkte unten Q1 – 1.5 IQR oder höher Q3 + 1.5 IQR sind Ausreißer.

wobei Q1 und Q3 die sind 25 Ja Perzentil 75 des Datensatzes bzw., und IQR stellt den Interquartilsabstand dar und ist gegeben durch Q3 – Q1.

box_plot_ref_needed-1049043

Feige. IQR zur Erkennung von Ausreißern

Bildquelle: Verknüpfung

👉 Für andere Distributionen: Benutzen Perzentilbasierter Ansatz.

Zum Beispiel, Datenpunkte, die weit vom Perzentil entfernt sind 99% und weniger als das Perzentil 1 gelten als Ausreißer.

fig-6-beispiel-4457464

Feige. Perzentildarstellung

Bildquelle: Verknüpfung

Techniken zur Erkennung und Beseitigung von Ausreißern:

👉 Z-Score-Behandlung:

Annahme– Kennlinien sind normal oder annähernd normalverteilt.

Paso 1: Import erforderlicher Abhängigkeiten

numpy als np importieren
Pandas als pd importieren
import matplotlib.pyplot als plt
import seaborn als sns

Paso 2: den Datensatz lesen und laden

df = pd.read_csv('platzierung.csv')
df.probe(5)

Ausreißer erkennen und entfernen cgpa

Paso 3: Skizzieren Sie die Verteilungsgraphen für die Charakteristiken

Importwarnungen
Warnungen.Filterwarnungen('ignorieren')
plt.figur(Feigengröße=(16,5))
plt.subplot(1,2,1)
sns.distplot(df['cgpa'])
plt.subplot(1,2,2)
sns.distplot(df['placement_exam_marks'])
plt.zeigen()

Verteilungsdiagramm Ausreißer erkennen und entfernen

Paso 4: finde die grenzwerte

drucken("Höchst erlaubt",df['cgpa'].bedeuten() + 3*df['cgpa'].std())
drucken("Niedrigste zulässige",df['cgpa'].bedeuten() - 3*df['cgpa'].std())

Produktion:

Höchst erlaubt 8.808933625397177
Niedrigste zulässige 5.113546374602842

Paso 5: Ausreißer finden

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

Paso 6: Ausreißer trimmen

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

Paso 7: Ausreißerbegrenzung

obere_grenze = df['cgpa'].bedeuten() + 3*df['cgpa'].std()
Untergrenze = df['cgpa'].bedeuten() - 3*df['cgpa'].std()

Paso 8: jetzt, Kappe anwenden

df['cgpa'] = np.wo(
    df['cgpa']>obere Grenze,
    obere Grenze,
    np.wo(
        df['cgpa']<untere Grenze,
        untere Grenze,
        df['cgpa']
    )
)

Paso 9: Sehen Sie sich jetzt die Statistiken mit der Funktion an „Beschreiben“

df['cgpa'].beschreiben()

Produktion:

zählen    1000.000000
bedeuten        6.961499
std         0.612688
Mindest         5.113546
25%         6.550000
50%         6.960000
75%         7.370000
max         8.808934
Name: cgpa, dtyp: float64

Dies vervollständigt unsere Z-Score-basierte Technik!!

👉 Filterung nach IQR:

Wird verwendet, wenn unsere Datenverteilung verzerrt ist.

Paso 1: Importieren Sie die notwendigen Abhängigkeiten

numpy als np importieren
Pandas als pd importieren
import matplotlib.pyplot als plt
import seaborn als sns

Paso 2: den Datensatz lesen und laden

df = pd.read_csv('platzierung.csv')
df.kopf()

Paso 3: Skizzieren Sie das Verteilungsdiagramm der Merkmale.

plt.figur(Feigengröße=(16,5))
plt.subplot(1,2,1)
sns.distplot(df['cgpa'])
plt.subplot(1,2,2)
sns.distplot(df['placement_exam_marks'])
plt.zeigen()

Paso 4: Bilden Sie einen Boxplot für die schiefe Charakteristik

sns.boxplot(df['placement_exam_marks'])

Ausreißer im Boxplot erkennen und entfernen

Paso 5: Finden Sie den IQR

Perzentil25 = df['placement_exam_marks'].Quantil(0.25)
Perzentil75 = df['placement_exam_marks'].Quantil(0.75)

Paso 6: Finden Sie die obere und untere Grenze

Obergrenze = Perzentil75 + 1.5 * iqr
Untergrenze = Perzentil25 - 1.5 * iqr

Paso 7: Ausreißer finden

df[df['placement_exam_marks'] > obere Grenze]
df[df['placement_exam_marks'] < untere Grenze]

Paso 8: Ausgeschnitten

new_df = df[df['placement_exam_marks'] < obere Grenze]
new_df.shape

Paso 9: Vergleichen Sie die Plots nach dem Trimmen

plt.figur(Feigengröße=(16,8))
plt.subplot(2,2,1)
sns.distplot(df['placement_exam_marks'])
plt.subplot(2,2,2)
sns.boxplot(df['placement_exam_marks'])
plt.subplot(2,2,3)
sns.distplot(new_df['placement_exam_marks'])
plt.subplot(2,2,4)
sns.boxplot(new_df['placement_exam_marks'])
plt.zeigen()

Vergleich von Post-Clippings Ausreißer erkennen und entfernen

Paso 10: gesteckt

new_df_cap = df.copy()
new_df_cap['placement_exam_marks'] = np.wo(
    new_df_cap['placement_exam_marks'] > obere Grenze,
    obere Grenze,
    np.wo(
        new_df_cap['placement_exam_marks'] < untere Grenze,
        untere Grenze,
        new_df_cap['placement_exam_marks']
    )
)

Paso 11: Vergleichen Sie die Plots nach der Einschränkung

plt.figur(Feigengröße=(16,8))
plt.subplot(2,2,1)
sns.distplot(df['placement_exam_marks'])
plt.subplot(2,2,2)
sns.boxplot(df['placement_exam_marks'])
plt.subplot(2,2,3)
sns.distplot(new_df_cap['placement_exam_marks'])
plt.subplot(2,2,4)
sns.boxplot(new_df_cap['placement_exam_marks'])
plt.zeigen()

Vergleichspostenlimit

Dies vervollständigt unsere IQR-basierte Technik!!

👉 Perzentil:

– Diese Technik funktioniert, indem ein bestimmter Schwellenwert festgelegt wird, die aufgrund unserer Herangehensweise an das Problem entscheidet.

– Während wir Ausreißer entfernen, indem wir begrenzen, diese spezielle Methode ist bekannt als Winsorización.

– Hier halten wir immer Symmetrie auf beiden Seiten bedeutet, dass, wenn wir die 1% rechts, dann nehmen wir links auch a . ab 1%.

Paso 1: Importieren Sie die notwendigen Abhängigkeiten

numpy als np importieren
Pandas als pd importieren

Paso 2: den Datensatz lesen und laden

df = pd.read_csv('gewicht-höhe.csv')
df.probe(5)

Datenhöhe

Paso 3: Skizzieren Sie den Verteilungsgraphen der Charakteristik von „Höhe“

sns.distplot(df['Höhe'])

Paso 4: Zeichnen Sie den Boxplot der Charakteristik von „Höhe“

sns.boxplot(df['Höhe'])

Grundstückshöhe

Paso 5: Finden Sie die obere und untere Grenze

obere_grenze = df['Höhe'].Quantil(0.99)
Untergrenze = df['Höhe'].Quantil(0.01)

Paso 7: Trimmen anwenden

new_df = df[(df['Höhe'] <= 74.78) & (df['Höhe'] >= 58.13)]

Paso 8: Vergleichen Sie die Verteilung und den Boxplot nach dem Ausschneiden

sns.distplot(new_df['Höhe'])
sns.boxplot(new_df['Höhe'])

Erkennen und entfernen Sie Ausreißer durch Zuschneiden des Boxplots

👉 Winsorización:

Paso 9: Beschränkung anwenden (Winsorización)

df['Höhe'] = np.wo(df['Höhe'] >= obere_grenze,
        obere Grenze,
        np.wo(df['Höhe'] <= untere_Grenze,
        untere Grenze,
        df['Höhe']))

Paso 10: Vergleichen Sie Verteilung und Boxplot nach Einschränkung

sns.distplot(df['Höhe'])
sns.boxplot(df['Höhe'])

Boxplot-Postlimit Ausreißer erkennen und entfernen

Dies vervollständigt unsere perzentilbasierte Technik!!

Abschließende Anmerkungen

Danke fürs Lesen!

Wenn dir das gefallen hat und du mehr wissen möchtest, Besuchen Sie meine anderen Artikel zu Data Science und Machine Learning, indem Sie auf das klicken Verknüpfung

Kontaktieren Sie mich gerne unter Linkedin, Email.

Alles was nicht erwähnt wurde oder du deine Gedanken teilen möchtest? Fühlen Sie sich frei, unten einen Kommentar zu hinterlassen und ich melde mich bei Ihnen.

Über den Autor

Chirag Goyal

Heutzutage, Ich studiere meinen Bachelor of Technology (B.Tech) in Informatik und Ingenieurwissenschaften von Indisches Technologieinstitut Jodhpur (IITJ). Ich freue mich sehr über maschinelles Lernen, das tiefes Lernen und Künstliche Intelligenz.

Die in diesem Artikel gezeigten Medien sind nicht Eigentum von DataPeaker und werden nach Ermessen des Autors verwendet.

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.