SimpleImputer provides a practical baseline for replacing missing values in tabular data with a univariate estimate such as the mean. In an Airbnb NYC example, it supplies a simple comparison point for more precise multivariate imputation. section 6.1.1
Listing 6.2 Multivariate imputation
from sklearn.experimental import (
enable_iterative_imputer
) #1
from sklearn.impute import SimpleImputer, IterativeImputer
from sklearn.ensemble import RandomForestRegressor
Xm = data[continuous].copy() #2
missing_percentage = 0.05
np.random.seed(0)
mask = np.random.rand(*Xm.shape) < missing_percentage #3
Xm[mask] = np.nan
simple_imputer = SimpleImputer()
Xm_si = simple_imputer.fit_transform(Xm) #4
rf = RandomForestRegressor(random_state=0, n_jobs=-1) #5
multivariate_imputer = IterativeImputer(
estimator=rf,
max_iter=1,
tol=0.01
) #6
Xm_mi = multivariate_imputer.fit_transform(Xm) #7
mae = pd.DataFrame(
{
"simple": np.mean(
np.abs(data[continuous] - Xm_si), axis=0
),
"multivariate": np.mean(
np.abs(data[continuous] - Xm_mi), axis=0
)
},
index = continuous
) #8
print(mae)
Apply SimpleImputer to continuous features after introducing missing values, then compare its reconstruction with IterativeImputer using mean absolute error. section 6.1.1
Airbnb feature reconstruction
After randomly removing 5% of continuous feature values, simple imputation produced higher MAE than multivariate imputation across the listed Airbnb features, making it a useful baseline rather than the most accurate option. section 6.1.1
