Data Hilang?

Apr 20 2023
Kita semua tahu perasaan itu — Anda akhirnya mendapatkan kumpulan data yang menarik, siap mengungkap beberapa wawasan tersembunyi, hanya untuk menemukan bahwa itu penuh dengan nilai yang hilang. Itu cukup untuk membuat analis yang paling berpengalaman sekalipun ingin mencabut rambut mereka! Untungnya bagi kami, ada alat yang ampuh dalam gudang analisis data yang dapat membantu mengatasi rintangan ini — imputasi iteratif.

Kita semua tahu perasaan itu — Anda akhirnya mendapatkan kumpulan data yang menarik, siap mengungkap beberapa wawasan tersembunyi, hanya untuk menemukan bahwa itu penuh dengan nilai yang hilang. Itu cukup untuk membuat analis yang paling berpengalaman sekalipun ingin mencabut rambut mereka! Untungnya bagi kami, ada alat yang ampuh dalam gudang analisis data yang dapat membantu mengatasi rintangan ini — imputasi iteratif.

Iterative Imputasi adalah proses mengisi poin data yang hilang dengan perkiraan berdasarkan data yang tersedia, dan ini bisa menjadi pengubah permainan untuk analisis.

Dalam panduan praktis untuk pemula ini, kita akan mendalami salah satu teknik imputasi yang paling efektif dan mudah digunakan di luar sana — imputasi iteratif . Apakah Anda seorang profesional berpengalaman atau baru memulai perjalanan analisis data Anda, panduan ini akan memberi Anda pengetahuan dan alat yang Anda butuhkan untuk meningkatkan analisis Anda dan memaksimalkan data Anda.

Dalam tutorial ini, kita akan bekerja dengan kumpulan data yang disebut kumpulan data Harga Perumahan California . Kumpulan data ini dibuat oleh Kaggle untuk membantu orang belajar tentang algoritme Pembelajaran Mesin. Namun, kami membuat beberapa perubahan pada kumpulan data agar sesuai dengan kebutuhan kami untuk tutorial ini. Jika Anda ingin mengikuti tutorial ini dan menggunakan kumpulan data yang sama dengan yang kami gunakan, Anda dapat mengunduh versi modifikasi dari tautan ini .

# 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.

Imputasi Iteratif adalah metode lanjutan untuk mengisi nilai yang hilang dalam kumpulan data dengan membuat model berdasarkan nilai yang tidak hilang dan kemudian menggunakan model tersebut untuk membuat prediksi untuk nilai yang hilang. Secara default, Iterative Imputasi menggunakan estimator 'BayesianRidge' untuk membuat model ini, tetapi juga memungkinkan untuk menggunakan estimator lain seperti Linear Regression, ElasticNet, dan lainnya. Periksa dokumentasi !

# 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()

      
                

Tapi, apakah nilai-nilai baru ini sesuai? Apakah mereka masuk akal menurut data? Kami melakukan visualisasi sekali lagi untuk memeriksa!

# 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.

Kode sumber dapat ditemukan di sini .