Distribusi Fitur dan Analisis Target
Menganalisis hubungan fitur-target, mendeteksi ketidakseimbangan kelas, dan informasi mutual.
Distribusi Fitur dan Analisis Target adalah pelajaran Learn AI with Python gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Learn AI with Python, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Learn AI with Python mencakup 4 pelajaran total.
Mengapa Menganalisis Fitur terhadap Target?
Target adalah variabel yang ingin Anda prediksi. Tujuan EDA untuk pemodelan adalah memahami fitur mana yang benar-benar berkaitan dengan target tersebut.
Pelajaran ini membahas plot fitur terhadap target, pengukuran keinformatifan dengan informasi mutual, pendeteksian ketidakseimbangan kelas, serta perbaikan kemencengan dengan transformasi.
Fitur terhadap Target — Target Numerik
Untuk target numerik, plot sebar antara feature dan target menunjukkan apakah fitur tersebut membawa sinyal.
Tren yang jelas berarti fitur tersebut bersifat prediktif; kumpulan titik tanpa pola berarti kemungkinan besar tidak.
import seaborn as sns
import matplotlib.pyplot as plt
sns.scatterplot(x="rooms", y="price", data=df, alpha=0.4)
plt.show()Fitur terhadap Target — Target Kategorikal
Ketika target berupa label kelas, bandingkan distribusi fitur dalam setiap kelas. KDE yang saling tumpang tindih berarti fitur tersebut kurang mampu memisahkan kelas; kurva yang terpisah dengan baik berarti fitur tersebut berguna.
sns.kdeplot(data=df, x="balance", hue="churned", common_norm=False, fill=True)
plt.title("Balance by churn status")
plt.show()Membandingkan Distribusi Kelas dengan Plot Kotak
Plot kotak berkelompok adalah cara lain untuk melihat hubungan fitur dengan kelas: letakkan kelas target pada sumbu x dan fitur pada sumbu y.
Median yang berbeda antarkelas menunjukkan bahwa fitur tersebut membantu membedakan kelas.
sns.boxplot(x="churned", y="tenure", data=df)
plt.show()Mendeteksi Ketidakseimbangan Kelas
Ketidakseimbangan kelas terjadi ketika satu kelas target jauh lebih banyak daripada kelas lainnya (misalnya, 95% bukan penipuan dan 5% penipuan). Hal ini menyesatkan akurasi dan membuat model cenderung memihak kelas mayoritas.
Periksa hal ini dengan menghitung nilai sederhana pada target.
print(df["churned"].value_counts())
# 0 9200
# 1 800value_counts(normalize=True) untuk Proporsi
Hitungan mentah dapat menyembunyikan seberapa parah ketidakseimbangannya. normalize=True mengubah hitungan menjadi proporsi, sehingga Anda dapat langsung membacanya sebagai persentase.
print(df["churned"].value_counts(normalize=True))
# 0 0.92
# 1 0.08 -> only 8% positive classMengapa Ketidakseimbangan Penting
Dengan 92% kelas negatif, model yang selalu memprediksi "tidak" akan memperoleh akurasi 92% meskipun tidak berguna. Karena itu, Anda perlu memantau ketidakseimbangan sejak awal.
Solusinya mencakup pengambilan sampel ulang (menambah sampel kelas minoritas / mengurangi sampel kelas mayoritas), bobot kelas, atau metrik seperti presisi, sensitivitas, dan F1 sebagai pengganti akurasi.
Informasi Mutual — Mengukur Keinformatifan
Informasi mutual mengukur seberapa besar pengetahuan tentang suatu fitur mengurangi ketidakpastian mengenai target. Tidak seperti korelasi, metode ini juga menangkap hubungan nonlinier.
Untuk target klasifikasi, scikit-learn menyediakan mutual_info_classif.
from sklearn.feature_selection import mutual_info_classif
X = df[["balance", "tenure", "rooms"]]
y = df["churned"]
mi = mutual_info_classif(X, y, random_state=42)
print(dict(zip(X.columns, mi)))Mengurutkan Fitur berdasarkan Informasi Mutual
Memasukkan skor MI ke dalam Series yang diurutkan memberikan peringkat kepentingan fitur dengan cepat. MI yang lebih tinggi berarti fitur tersebut lebih informatif mengenai target.
Ini merupakan penyaring awal yang sangat baik sebelum melatih model apa pun.
import pandas as pd
from sklearn.feature_selection import mutual_info_classif
mi = mutual_info_classif(X, y, random_state=42)
scores = pd.Series(mi, index=X.columns).sort_values(ascending=False)
print(scores)Transformasi Log untuk Fitur yang Menceng
Fitur yang menceng ke kanan (pendapatan, hitungan, harga) sering bekerja lebih baik setelah transformasi log, yang memampatkan ekor panjang agar bentuknya lebih simetris.
Gunakan np.log1p (logaritma dari 1 + x) agar nilai nol dapat ditangani dengan aman.
import numpy as np
df["income_log"] = np.log1p(df["income"])
print(df["income"].skew(), "->", df["income_log"].skew())Sebelum dan Sesudah: Memvisualisasikan Transformasi
Selalu pastikan transformasi membantu dengan membuat plot sebelum dan sesudahnya. Versi log seharusnya tampak lebih mendekati bentuk lonceng yang simetris.
import numpy as np
import matplotlib.pyplot as plt
fig, ax = plt.subplots(1, 2)
df["income"].hist(ax=ax[0]); ax[0].set_title("Raw")
np.log1p(df["income"]).hist(ax=ax[1]); ax[1].set_title("log1p")
plt.show()Pemeriksaan Singkat: Memperbaiki Fitur yang Menceng
Sebuah fitur sangat menceng ke kanan dan memiliki beberapa nilai nol.
Ringkasan: Analisis Fitur dan Target
Anda telah mempelajari cara menghubungkan fitur dengan target prediksi:
- Plot sebar / KDE / plot kotak untuk melihat sinyal fitur terhadap target
value_counts(normalize=True)untuk mendeteksi dan mengukur ketidakseimbangan kelasmutual_info_classifuntuk mengurutkan fitur berdasarkan keinformatifan, termasuk hubungan nonliniernp.log1puntuk mengurangi kemencengan fitur ke kanan
Analisis Data Eksploratori telah selesai. Berikutnya: mengumpulkan data dari API web.
Pertanyaan yang Sering Diajukan
Apakah pelajaran “Distribusi Fitur dan Analisis Target” gratis?
Ya — teks lengkap “Distribusi Fitur dan Analisis Target” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Learn AI with Python, upgrade ke CoddyKit PRO. Kursus Learn AI with Python mencakup 4 pelajaran total.
Apa yang akan aku pelajari di “Distribusi Fitur dan Analisis Target”?
Menganalisis hubungan fitur-target, mendeteksi ketidakseimbangan kelas, dan informasi mutual. Kamu berlatih Learn AI with Python dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.
Apakah aku perlu pengalaman untuk memulai Learn AI with Python?
Tidak diperlukan pengalaman sebelumnya. Learn AI with Python di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.
Berapa lama pelajaran “Distribusi Fitur dan Analisis Target” memakan waktu?
Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.
Bisakah aku menulis dan menjalankan kode dalam pelajaran Learn AI with Python ini?
Ya. Setiap pelajaran Learn AI with Python menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.
Semua pelajaran dalam kursus ini
- Alur Kerja EDA dan Pembuatan Profil Data
- Analisis Univariat
- Analisis Bivariat dan Multivariat
- Distribusi Fitur dan Analisis Target