CoolFace
Apppublic

imukjizat/machine-learning

sourceHugging Faceupdated 1y agoView on Hugging Face
0likes
app.py66 linesDownload Raw Back to root
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()