Dalam artikel ini, Anda akan mempelajari cara menggunakan modul Imputer dari Scikit-Learn untuk menangani missing data untuk mempercepat proyek data science.
Mari kita belajar cara menggunakan imputer Scikit-learn untuk menangani missing data.
Persiapan
Pastikan Anda telah menginstal Numpy, Pandas, dan Scikit-Learn di lingkungan (Environment) Anda. Jika belum, Anda dapat menginstalnya melalui pip menggunakan kode berikut:
pip install numpy pandas scikit-learn
Kemudian, kita bisa mengimpor paket-paket ini ke lingkungan Anda:
import numpy as np
import pandas as pd
import sklearn
from sklearn.experimental import enable_iterative_imputer
Menangani Missing Data dengan Imputer
Imputer dari Scikit-Learn adalah sebuah kelas yang digunakan untuk mengganti data yang hilang dengan nilai tertentu. Ini dapat mempercepat proses data preprocessing Anda. Kita akan mengeksplorasi beberapa strategi untuk menangani missing data.
Mari kita buat sampel data untuk contoh kita:
sample_data = {'First': [1, 2, 3, 4, 5, 6, 7, np.nan,9], 'Second': [np.nan, 2, 3, 4, 5, 6, np.nan, 8,9]}
df = pd.DataFrame(sample_data)
print(df)
First Second
0 1.0 NaN
1 2.0 2.0
2 3.0 3.0
3 4.0 4.0
4 5.0 5.0
5 6.0 6.0
6 7.0 NaN
7 NaN 8.0
8 9.0 9.0
Anda dapat mengisi missing value di kolom dengan Simple Imputer dari Scikit-Learn menggunakan mean dari kolom tersebut.
First Second
0 1.00 5.29
1 2.00 2.00
2 3.00 3.00
3 4.00 4.00
4 5.00 5.00
5 6.00 6.00
6 7.00 5.29
7 4.62 8.00
8 9.00 9.00
Sebagai catatan, kita membulatkan hasilnya menjadi 2 angka desimal.
Anda juga bisa mengimput data yang hilang dengan median menggunakan Simple Imputer.
imputer = sklearn.SimpleImputer(strategy='median')
df_imputed = round(pd.DataFrame(imputer.fit_transform(df), columns=df.columns),2)
print(df_imputed)
First Second
0 1.0 5.0
1 2.0 2.0
2 3.0 3.0
3 4.0 4.0
4 5.0 5.0
5 6.0 6.0
6 7.0 5.0
7 4.5 8.0
8 9.0 9.0
Pendekatan mean dan median imputer sederhana, tetapi dapat mengubah distribusi data dan menciptakan bias dalam hubungan data.
Ada juga kemungkinan menggunakan K-NN Imputer untuk mengisi missing data menggunakan pendekatan nearest neighbour.
knn_imputer = sklearn.KNNImputer(n_neighbors=2)
knn_imputed_data = knn_imputer.fit_transform(df)
knn_imputed_df = pd.DataFrame(knn_imputed_data, columns=df.columns)
print(knn_imputed_df)
First Second
0 1.0 2.5
1 2.0 2.0
2 3.0 3.0
3 4.0 4.0
4 5.0 5.0
5 6.0 6.0
6 7.0 5.5
7 7.5 8.0
8 9.0 9.0
KNN Imputer akan menggunakan mean atau median dari nilai tetangga dari k nearest neighbours.
Terakhir, ada metodologi Iterative Impute, yang didasarkan pada pemodelan setiap fitur dengan missing value sebagai fungsi dari fitur lainnya. Seperti yang disebutkan dalam artikel ini, ini adalah fitur eksperimental, jadi kita perlu mengaktifkannya terlebih dahulu.
iterative_imputer = IterativeImputer(max_iter=10, random_state=0)
iterative_imputed_data = iterative_imputer.fit_transform(df)
iterative_imputed_df = round(pd.DataFrame(iterative_imputed_data, columns=df.columns),2)
print(iterative_imputed_df)
First Second
0 1.0 1.0
1 2.0 2.0
2 3.0 3.0
3 4.0 4.0
4 5.0 5.0
5 6.0 6.0
6 7.0 7.0
7 8.0 8.0
8 9.0 9.0
Jika Anda dapat menggunakan imputer dengan benar, itu dapat membantu membuat proyek data science Anda menjadi lebih baik.
Comments