Spaces:
Sleeping
Sleeping
Download app.py from armansurahman/kmean_clustring: direct link, hf CLI and curl.
- Browser
- Download file 2.79 kB
-
https://huggingface.co/spaces/armansurahman/kmean_clustring/resolve/main/app.py
- Command line
-
hf download hf://spaces/armansurahman/kmean_clustring/app.py
-
curl -L -o app.py https://huggingface.co/spaces/armansurahman/kmean_clustring/resolve/main/app.py
2.79 kB
| # 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() |