Spaces:
Sleeping
Sleeping
File size: 2,791 Bytes
3fde146 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 | # app.py:
import gradio as gr
import pickle
import numpy as np
# =============================================================================
# MEMUAT MODEL & DATA PENDUKUNG
# =============================================================================
# Muat model K-Means yang sudah dilatih
try:
with open('kmeans_model.pkl', 'rb') as file:
model = pickle.load(file)
except FileNotFoundError:
# Jika aplikasi di-deploy, error ini akan muncul di log Hugging Face
print("File model 'kmeans_model.pkl' tidak ditemukan.")
# Gradio akan menampilkan error jika model tidak bisa dimuat
raise
# Kamus untuk menerjemahkan ID cluster menjadi nama segmen
cluster_names = {
0: "Pelanggan rata-rata", # Sesuai dengan label untuk y_kmeans == 0
1: "Pelanggan premium", # Sesuai dengan label untuk y_kmeans == 1
2: "Pelanggan impulsif", # Sesuai dengan label untuk y_kmeans == 2
3: "Pelanggan hemat", # Sesuai dengan label untuk y_kmeans == 3
4: "Pelanggan pasif" # Sesuai dengan label untuk y_kmeans == 4
}
# =============================================================================
# FUNGSI PREDIKSI (INTI DARI APLIKASI GRADIO)
# =============================================================================
# Fungsi ini akan menerima input dari interface Gradio dan mengembalikan output
def predict_segment(annual_income, spending_score):
"""
Menerima input pendapatan dan skor, lalu mengembalikan prediksi segmen pelanggan.
"""
# Ubah input menjadi format numpy array yang bisa dibaca model
input_data = np.array([[annual_income, spending_score]])
# Lakukan prediksi menggunakan model yang sudah dimuat
prediction = model.predict(input_data)
cluster_id = prediction[0]
# Ambil nama segmen dari kamus
segment_name = cluster_names.get(cluster_id, "Segmen Tidak Diketahui")
return segment_name
# =============================================================================
# MEMBUAT DAN MELUNCURKAN INTERFACE GRADIO
# =============================================================================
# Definisikan interface Gradio
iface = gr.Interface(
fn=predict_segment, # Fungsi yang akan dijalankan
inputs=[
gr.Slider(15, 140, step=1, value=50, label="Pendapatan Tahunan (k$)"),
gr.Slider(1, 99, step=1, value=50, label="Skor Pengeluaran (1-100)")
],
outputs=gr.Label(label="Hasil Segmentasi"), # Komponen untuk menampilkan hasil
title="🛍️ Aplikasi Segmentasi Pelanggan Mall",
description="Masukkan data pendapatan dan skor pengeluaran pelanggan untuk mengetahui segmen pasarnya. Dibuat dengan K-Means dan Gradio.",
allow_flagging="never" # Menonaktifkan tombol "Flag"
)
# Luncurkan aplikasi
iface.launch() |