dansbecker/handling-missing-values

参考

メモ

Kaggleのhandling-missing-values の内容から気になった箇所をメモ。

欠落のあるカラムの排除

最もシンプルな方法として、欠落のあるカラムを排除する方法が挙げられていた。

1
2
3
4
cols_with_missing = [col for col in X_train.columns 
if X_train[col].isnull().any()]
reduced_X_train = X_train.drop(cols_with_missing, axis=1)
reduced_X_test = X_test.drop(cols_with_missing, axis=1)

X_train[col].isnull().any()のところで、カラム内の値のいずれかがNULL値かどうかを確認している。

欠落を埋める

欠落を埋める。

1
2
3
4
5
from sklearn.impute import SimpleImputer

my_imputer = SimpleImputer()
imputed_X_train = my_imputer.fit_transform(X_train)
imputed_X_test = my_imputer.transform(X_test)

なお、SimpleImputer#fit_transformメソッドの戻り値は、numpy.ndarrayである。

また、scikit-learnのimputeの説明を見る限り、カテゴリ値にも対応しているようだ。

欠落を埋めつつ、欠落していたことを真理値として保持

1
2
3
4
5
6
7
8
imputed_X_train_plus = X_train.copy()
imputed_X_test_plus = X_test.copy()

cols_with_missing = (col for col in X_train.columns
if X_train[col].isnull().any())
for col in cols_with_missing:
imputed_X_train_plus[col + '_was_missing'] = imputed_X_train_plus[col].isnull()
imputed_X_test_plus[col + '_was_missing'] = imputed_X_test_plus[col].isnull()
共有