imukjizat/machine-learning
0
1# app.py:2 3import gradio as gr4import pickle5import numpy as np6 7# =============================================================================8# MEMUAT MODEL & DATA PENDUKUNG9# =============================================================================10# Muat model K-Means yang sudah dilatih11try:12 with open('kmeans_model.pkl', 'rb') as file:13 model = pickle.load(file)14except FileNotFoundError:15 # Jika aplikasi di-deploy, error ini akan muncul di log Hugging Face16 print("File model 'kmeans_model.pkl' tidak ditemukan.")17 # Gradio akan menampilkan error jika model tidak bisa dimuat18 raise19 20# Kamus untuk menerjemahkan ID cluster menjadi nama segmen21cluster_names = {22 0: "Pelanggan rata-rata", # Sesuai dengan label untuk y_kmeans == 023 1: "Pelanggan premium", # Sesuai dengan label untuk y_kmeans == 124 2: "Pelanggan impulsif", # Sesuai dengan label untuk y_kmeans == 225 3: "Pelanggan hemat", # Sesuai dengan label untuk y_kmeans == 326 4: "Pelanggan pasif" # Sesuai dengan label untuk y_kmeans == 427}28 29# =============================================================================30# FUNGSI PREDIKSI (INTI DARI APLIKASI GRADIO)31# =============================================================================32# Fungsi ini akan menerima input dari interface Gradio dan mengembalikan output33def predict_segment(annual_income, spending_score):34 """35 Menerima input pendapatan dan skor, lalu mengembalikan prediksi segmen pelanggan.36 """37 # Ubah input menjadi format numpy array yang bisa dibaca model38 input_data = np.array([[annual_income, spending_score]])39 40 # Lakukan prediksi menggunakan model yang sudah dimuat41 prediction = model.predict(input_data)42 cluster_id = prediction[0]43 44 # Ambil nama segmen dari kamus45 segment_name = cluster_names.get(cluster_id, "Segmen Tidak Diketahui")46 47 return segment_name48 49# =============================================================================50# MEMBUAT DAN MELUNCURKAN INTERFACE GRADIO51# =============================================================================52# Definisikan interface Gradio53iface = gr.Interface(54 fn=predict_segment, # Fungsi yang akan dijalankan55 inputs=[56 gr.Slider(15, 140, step=1, value=50, label="Pendapatan Tahunan (k$)"),57 gr.Slider(1, 99, step=1, value=50, label="Skor Pengeluaran (1-100)")58 ],59 outputs=gr.Label(label="Hasil Segmentasi"), # Komponen untuk menampilkan hasil60 title="๐ Aplikasi Segmentasi Pelanggan Mall",61 description="Masukkan data pendapatan dan skor pengeluaran pelanggan untuk mengetahui segmen pasarnya. Dibuat dengan K-Means dan Gradio.",62 allow_flagging="never" # Menonaktifkan tombol "Flag"63)64 65# Luncurkan aplikasi66iface.launch()