Spaces:
Sleeping
Sleeping
| import streamlit as st | |
| import pandas as pd | |
| import seaborn as sns | |
| import matplotlib.pyplot as plt | |
| from sklearn.datasets import load_breast_cancer | |
| def run_eda(): | |
| st.title("📊 Exploratory Data Analysis (EDA) - Breast Cancer Dataset") | |
| # Load dataset | |
| data = load_breast_cancer() | |
| df = pd.DataFrame(data.data, columns=data.feature_names) | |
| df["target"] = data.target | |
| # --- Intro untuk orang awam --- | |
| st.markdown( | |
| "Dataset ini berasal dari **Breast Cancer Diagnostic Dataset**, " | |
| "yang berisi hasil pengukuran sel kanker payudara dari pasien. " | |
| "Tujuannya adalah **membedakan tumor ganas (malignant)** dan " | |
| "**jinak (benign)** berdasarkan karakteristik fisik sel, seperti " | |
| "ukuran, tekstur, dan bentuknya." | |
| ) | |
| # --- Dataset overview --- | |
| st.markdown("### 🧾 Dataset Overview") | |
| st.write("Berikut adalah contoh 5 baris pertama dari dataset:") | |
| st.dataframe(df.head()) | |
| # --- Data summary --- | |
| st.markdown("### 📈 Statistik Data") | |
| st.write( | |
| "Tabel di bawah menunjukkan statistik deskriptif dari setiap fitur — " | |
| "misalnya rata-rata, standar deviasi, nilai minimum dan maksimum." | |
| ) | |
| st.dataframe(df.describe()) | |
| # --- Target distribution --- | |
| st.markdown("### ⚖️ Distribusi Target") | |
| fig, ax = plt.subplots() | |
| sns.countplot(x="target", data=df, palette="Set2", ax=ax) | |
| ax.set_xticklabels(["Malignant (0) - Ganas", "Benign (1) - Jinak"]) | |
| ax.set_title("Distribusi Kelas Pasien") | |
| st.pyplot(fig) | |
| st.markdown( | |
| "Terlihat bahwa **jumlah pasien dengan tumor jinak lebih banyak** " | |
| "dibanding yang ganas. Ini wajar dalam data medis karena kasus jinak " | |
| "biasanya lebih umum ditemukan." | |
| ) | |
| # --- Correlation heatmap --- | |
| st.markdown("### 🔥 Korelasi Antar Fitur") | |
| fig, ax = plt.subplots(figsize=(10, 8)) | |
| sns.heatmap(df.corr(), cmap="coolwarm", center=0, ax=ax) | |
| ax.set_title("Heatmap Korelasi Antar Fitur") | |
| st.pyplot(fig) | |
| st.markdown( | |
| "Warna merah menunjukkan korelasi positif (fitur naik bersama), " | |
| "sedangkan biru menunjukkan korelasi negatif. " | |
| "Misalnya, *mean radius* dan *mean perimeter* memiliki korelasi " | |
| "sangat tinggi, yang berarti keduanya berhubungan erat." | |
| ) | |
| # --- Feature example --- | |
| st.markdown("### 🔍 Contoh Distribusi Salah Satu Fitur") | |
| fig, ax = plt.subplots() | |
| sns.histplot(df["mean radius"], kde=True, color="skyblue", ax=ax) | |
| ax.set_title("Distribusi Fitur 'Mean Radius'") | |
| st.pyplot(fig) | |
| st.markdown( | |
| "Fitur `mean radius` menunjukkan ukuran rata-rata sel. " | |
| "Semakin besar radiusnya, biasanya semakin berpotensi sebagai " | |
| "tumor ganas." | |
| ) | |
| # --- Closing summary --- | |
| st.markdown( | |
| "---\n" | |
| "💡 **Kesimpulan Singkat:**\n" | |
| "- Dataset ini memiliki total **569 sampel pasien**.\n" | |
| "- Sebagian besar pasien memiliki **tumor jinak**.\n" | |
| "- Beberapa fitur saling berkorelasi tinggi (misalnya ukuran dan " | |
| "perimeter sel).\n" | |
| "- Analisis ini membantu kita memahami pola sebelum melatih model " | |
| "Machine Learning." | |
| ) | |