Fehlende Daten?

Apr 20 2023
Wir alle kennen dieses Gefühl – Sie haben endlich einen interessanten Datensatz in die Hände bekommen, der bereit ist, einige verborgene Erkenntnisse aufzudecken, nur um festzustellen, dass er voller fehlender Werte ist. Es ist genug, um selbst den erfahrensten Analysten dazu zu bringen, sich die Haare zu raufen! Glücklicherweise gibt es im Datenanalyse-Arsenal ein leistungsstarkes Tool, das dabei helfen kann, diese Hürde zu überwinden – die iterative Imputation.

Wir alle kennen dieses Gefühl – Sie haben endlich einen interessanten Datensatz in die Hände bekommen, der bereit ist, einige verborgene Erkenntnisse aufzudecken, nur um festzustellen, dass er voller fehlender Werte ist. Es ist genug, um selbst den erfahrensten Analysten dazu zu bringen, sich die Haare zu raufen! Glücklicherweise gibt es im Datenanalyse-Arsenal ein leistungsstarkes Tool, das dabei helfen kann, diese Hürde zu überwinden – die iterative Imputation.

Iterative Imputation ist der Prozess, fehlende Datenpunkte mit Schätzungen auf der Grundlage der verfügbaren Daten zu ergänzen, und kann für die Analyse grundlegend sein.

In diesem praktischen Leitfaden für Anfänger tauchen wir tief in eine der effektivsten und benutzerfreundlichsten Imputationstechniken ein – die iterative Imputation . Egal, ob Sie ein erfahrener Profi sind oder gerade erst mit Ihrer Datenanalyse beginnen, dieser Leitfaden vermittelt Ihnen das Wissen und die Tools, die Sie benötigen, um Ihre Analyse zu verbessern und das Beste aus Ihren Daten herauszuholen.

In diesem Tutorial arbeiten wir mit einem Dataset namens California Housing Prices dataset . Dieser Datensatz wurde von Kaggle erstellt, um Menschen dabei zu helfen, mehr über maschinelle Lernalgorithmen zu erfahren. Wir haben jedoch einige Änderungen am Datensatz vorgenommen, um unseren Anforderungen für dieses Tutorial gerecht zu werden. Wenn Sie diesem Tutorial folgen und dasselbe Dataset verwenden möchten, das wir verwenden, können Sie die modifizierte Version über diesen Link herunterladen .

# Packages
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
import random

# Read Data
data1 = pd.read_csv("California_Housing_Data_Part1.csv")
print(data1.head(5))

      
                

# About 300 random indices were chosen
indices = random.sample(range(len(data1)), 300)

# Indices were utilized to replace values with NaN
data1.loc[indices, 'median_house_value'] = np.nan

# Check Null values
data1.info()

      
                

# Standardize dataset
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
data1[data1.columns] = scaler.fit_transform(data1[data1.columns])
print(data1.head(5))

      
                

# Visualization - Before Imputation

# Bar Plot for Missing Values in each column
plt.figure(figsize=(15, 8))

sns.heatmap(data1.isnull(), cmap='viridis', cbar_kws={'ticks': [0, 1]}, vmin=0, vmax=1)
plt.title('Heat Map Describing Missing Data')
plt.xlabel('Dataset Columns')
plt.ylabel('Observation/Index values')
plt.show()

# Line Plot for Missing Values Column
plt.figure(figsize=(15, 8))
plt.plot(data1['median_house_value'], label='Median House Value', linewidth=2, color = 'Green')
plt.xlabel('Index Values')
plt.ylabel('Median House Value')
plt.title('Line Plot Describing Median House Data')
plt.show()

      
                
For the heatmap, a value of 1 (Yellow) indicates a Null value, while a value of 0 (Purple) indicates Non-Null.

Die iterative Imputation ist eine erweiterte Methode zum Ausfüllen fehlender Werte in einem Datensatz, indem ein Modell basierend auf den nicht fehlenden Werten erstellt und dieses Modell dann verwendet wird, um Vorhersagen für die fehlenden Werte zu treffen. Standardmäßig verwendet Iterative Imputation den „BayesianRidge“ -Schätzer, um dieses Modell zu erstellen, aber es ist auch möglich, andere Schätzer wie lineare Regression, ElasticNet und mehr zu verwenden. Dokumentation prüfen !

# Iterative Imputer from Scikit-learn
from sklearn.impute import IterativeImputer

# Setup the Imputer and perform Imputation
imputer = IterativeImputer()
data1[data1.columns] = imputer.fit_transform(data1[data1.columns])
data1.info()

      
                

Aber sind diese neuen Werte angemessen? Machen sie laut den Daten Sinn? Zur Überprüfung führen wir noch einmal eine Visualisierung durch!

# Visualization - After Imputation

# Bar Plot for Missing Values in each column
plt.figure(figsize=(15, 8))
sns.heatmap(data1.isnull(), cmap='viridis', cbar_kws={'ticks': [0, 1]}, vmin=0, vmax=1)
plt.title('Heat Map Describing Missing Data')
plt.xlabel('Dataset Columns')
plt.ylabel('Observation/Index values')
plt.show()

# Line Plot for Missing Values Column
plt.figure(figsize=(15, 8))
plt.plot(data1['median_house_value'], label='Median House Value', linewidth=2, color = 'Green')
plt.xlabel('Index Values')
plt.ylabel('Median House Value')
plt.title('Line Plot Describing Median House Data')
plt.show()

      
                
For the heatmap, a value of 1 (Yellow) indicates a Null value, while a value of 0 (Purple) indicates Non-Null.

Der Quellcode ist hier zu finden .