import streamlit as st import matplotlib.pyplot as plt import random import os import matplotlib.image as mpimg def show_eda(train_dir): st.header("IV. Exploratory Data Analysis (EDA)") st.write(""" Pada tahap ini dilakukan eksplorasi terhadap dataset untuk memahami karakteristik data sebelum digunakan dalam proses training model. """) # a st.subheader("a. Melihat Jumlah Total Seluruh Class dan Contohnya") classes = os.listdir(train_dir) st.write("Jumlah total class:", len(classes)) st.write("Contoh class:", classes[:10]) # b st.subheader("b. Mencari Class Berdasarkan Nama Buah") apple = [c for c in classes if "Apple" in c] banana = [c for c in classes if "Banana" in c] orange = [c for c in classes if "Orange" in c] grape = [c for c in classes if "Grape" in c] mango = [c for c in classes if "Mango" in c] st.write("Apple:", apple[:5]) st.write("Banana:", banana) st.write("Orange:", orange) st.write("Grape:", grape[:5]) st.write("Mango:", mango) # c st.subheader("c. Pemilihan Class") selected_classes = [ "Apple Red 1", "Banana 1", "Orange 1", "Grape White 1", "Mango 1" ] st.write(selected_classes) # d st.subheader("d. Menghitung Jumlah Data per Class") data_count = {} for cls in selected_classes: class_path = os.path.join(train_dir, cls) data_count[cls] = len(os.listdir(class_path)) st.write(data_count) # e st.subheader("e. Visualisasi Distribusi Data") fig, ax = plt.subplots() ax.bar(data_count.keys(), data_count.values()) plt.xticks(rotation=45) st.pyplot(fig) # sample images st.subheader("Visualisasi Contoh Gambar") fig = plt.figure(figsize=(10,10)) for i, cls in enumerate(selected_classes): img_path = os.path.join( train_dir, cls, random.choice(os.listdir(os.path.join(train_dir, cls))) ) img = mpimg.imread(img_path) plt.subplot(2,3,i+1) plt.imshow(img) plt.title(cls) plt.axis('off') st.pyplot(fig)