Dados ausentes?
Todos nós conhecemos esse sentimento - você finalmente coloca as mãos em um conjunto de dados suculento, pronto para descobrir alguns insights ocultos, apenas para descobrir que está repleto de valores ausentes. É o suficiente para fazer até o analista mais experiente querer arrancar os cabelos! Felizmente para nós, existe uma ferramenta poderosa no arsenal de análise de dados que pode ajudar a superar esse obstáculo – a imputação iterativa.
A imputação iterativa é o processo de preenchimento de pontos de dados ausentes com estimativas baseadas nos dados disponíveis e pode ser um divisor de águas para análise.
Neste guia prático para iniciantes, vamos nos aprofundar em uma das técnicas de imputação mais eficazes e fáceis de usar que existem — a imputação iterativa . Seja você um profissional experiente ou apenas começando sua jornada de análise de dados, este guia fornecerá o conhecimento e as ferramentas necessárias para melhorar sua análise e aproveitar ao máximo seus dados.
Neste tutorial, trabalharemos com um conjunto de dados chamado conjunto de dados de preços de habitação na Califórnia . Este conjunto de dados foi criado pela Kaggle para ajudar as pessoas a aprender sobre algoritmos de aprendizado de máquina. No entanto, fizemos algumas alterações no conjunto de dados para atender às nossas necessidades para este tutorial. Se quiser acompanhar este tutorial e usar o mesmo conjunto de dados que estamos usando, você pode baixar a versão modificada neste link .
# 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.
A imputação iterativa é um método avançado para preencher valores ausentes em um conjunto de dados, criando um modelo com base nos valores não ausentes e, em seguida, usando esse modelo para fazer previsões para os valores ausentes. Por padrão, a Imputação Iterativa usa o estimador 'BayesianRidge' para criar esse modelo, mas também é possível usar outros estimadores como Regressão Linear, ElasticNet e outros. Verifique a documentação !
# 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()
Mas, esses novos valores são apropriados? Eles fazem sentido de acordo com os dados? Eu executo visualização mais uma vez para conferir!
# 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.
O código-fonte pode ser encontrado aqui .





































![O que é uma lista vinculada, afinal? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)