×

Membuat Aplikasi Prediksi Sederhana dengan Streamlit

Laptop menampilkan aplikasi prediksi Streamlit dengan kolom input dan tombol prediksi

Membuat Aplikasi Prediksi Sederhana dengan Streamlit

Model machine learning yang sudah dilatih sering hanya tersimpan di notebook dan tidak pernah dipakai orang lain. Padahal, dengan beberapa baris kode Streamlit, kamu bisa mengubahnya menjadi aplikasi web yang bisa diakses siapa saja. Tutorial ini memandu kamu dari awal hingga aplikasi prediksi berjalan.

Mengapa Streamlit untuk Aplikasi Prediksi?

Streamlit adalah pustaka Python yang memungkinkan kamu membuat antarmuka web tanpa menulis HTML, CSS, atau JavaScript. Kamu cukup menulis skrip Python, dan Streamlit akan mengurus tampilan serta interaksinya. Cocok untuk membuat prototipe cepat atau alat internal tim data.

Sebelum mulai, pastikan model machine learning sudah siap. Jika belum, kamu bisa mengikuti panduan 7 Langkah Membangun Pipeline Machine Learning dari Data Mentah untuk menyiapkan model dari data mentah.

Menyiapkan Lingkungan dan Model

Buat folder proyek baru, lalu instal Streamlit dan pustaka pendukung seperti scikit-learn dan pandas. Gunakan virtual environment agar dependensi tidak bentrok dengan proyek lain.

pip install streamlit scikit-learn pandas

Simpan model yang sudah dilatih ke file menggunakan joblib atau pickle. Contohnya, setelah melatih model regresi atau klasifikasi, simpan dengan perintah berikut:

import joblib
joblib.dump(model, 'model_prediksi.pkl')

Letakkan file model di folder yang sama dengan skrip aplikasi.

Membuat Skrip Aplikasi Streamlit

Buat file bernama app.py dan tulis kode berikut. Skrip ini memuat model, menyediakan input pengguna, dan menampilkan hasil prediksi.

import streamlit as st
import joblib
import numpy as np

# Muat model
model = joblib.load('model_prediksi.pkl')

st.title('Aplikasi Prediksi Sederhana')
st.write('Masukkan nilai fitur untuk mendapatkan prediksi.')

# Input pengguna
fitur1 = st.number_input('Fitur 1', value=0.0)
fitur2 = st.number_input('Fitur 2', value=0.0)
fitur3 = st.number_input('Fitur 3', value=0.0)

if st.button('Prediksi'):
    data = np.array([[fitur1, fitur2, fitur3]])
    prediksi = model.predict(data)
    st.success(f'Hasil prediksi: {prediksi[0]}')

Jalankan aplikasi dengan perintah streamlit run app.py. Browser akan terbuka dan menampilkan antarmuka sederhana.

Menambahkan Validasi dan Umpan Balik

Aplikasi prediksi perlu menangani input yang tidak valid. Streamlit menyediakan komponen seperti st.number_input yang sudah membatasi tipe data, tetapi kamu tetap perlu memeriksa apakah model siap menerima input. Misalnya, pastikan jumlah fitur sesuai dengan yang dilatih.

Untuk model yang lebih kompleks, kamu bisa menambahkan grafik atau tabel pendukung. Jika ingin menampilkan data JSON dari API ke dalam aplikasi, kamu bisa mengadaptasi teknik menampilkan data JSON ke HTML dengan jQuery untuk kebutuhan front-end terpisah.

Menguji dan Menjalankan Aplikasi

Uji aplikasi dengan beberapa nilai input yang berbeda. Bandingkan hasil prediksi dengan perhitungan manual atau notebook asli untuk memastikan tidak ada kesalahan pemuatan model. Jika akurasi prediksi terasa aneh, periksa kembali skala fitur. Normalisasi atau standarisasi yang digunakan saat pelatihan harus diterapkan juga pada input pengguna.

Untuk proyek yang lebih serius, pertimbangkan untuk memisahkan logika praproses ke dalam fungsi tersendiri. Ini memudahkan perawatan dan pengujian.

Menyebarkan Aplikasi ke Pengguna

Streamlit menyediakan layanan hosting gratis yang terhubung dengan repositori GitHub. Kamu bisa mengunggah kode ke GitHub, lalu menghubungkannya ke Streamlit Cloud. Proses ini memerlukan file requirements.txt yang mencantumkan semua dependensi.

streamlit
scikit-learn
pandas
numpy
joblib

Setelah terhubung, aplikasi akan otomatis diperbarui setiap kali kamu melakukan push ke repositori. Untuk penggunaan internal, kamu juga bisa menjalankannya di server sendiri dengan Docker.

Ringkasan

Membuat aplikasi prediksi dengan Streamlit tidak memerlukan keahlian web development. Dengan menyiapkan model, menulis skrip sederhana, dan memanfaatkan komponen input, kamu sudah bisa membagikan model kepada pengguna. Langkah selanjutnya adalah memperbaiki tampilan dan menambahkan fitur sesuai kebutuhan.

Pertanyaan yang Sering Diajukan

Apakah Streamlit cocok untuk aplikasi produksi?

Streamlit lebih cocok untuk prototipe, alat internal, dan aplikasi dengan lalu lintas rendah hingga menengah. Untuk aplikasi produksi berskala besar, pertimbangkan framework web seperti Flask atau FastAPI yang lebih fleksibel dalam hal routing dan keamanan.

Bagaimana cara menangani input berupa kategori?

Gunakan komponen st.selectbox atau st.radio untuk input kategorikal. Sebelum memprediksi, ubah kategori menjadi numerik menggunakan teknik encoding yang sama seperti saat pelatihan, misalnya one-hot encoding.

Apakah model perlu dilatih ulang setiap kali aplikasi dijalankan?

Tidak. Simpan model yang sudah dilatih ke file dan muat kembali saat aplikasi berjalan. Pelatihan ulang hanya diperlukan jika ada pembaruan data atau perubahan parameter model.

You May Have Missed