|
|
import streamlit as st
|
|
|
import pandas as pd
|
|
|
import numpy as np
|
|
|
import joblib
|
|
|
|
|
|
|
|
|
scaler, kmeans = joblib.load("model.pkl")
|
|
|
|
|
|
st.title("💳 Credit Card Customer Segmentation")
|
|
|
st.markdown("Müşteri bilgilerini girerek hangi kümeye ait olduğunu öğrenin.")
|
|
|
|
|
|
|
|
|
def get_user_input():
|
|
|
balance = st.number_input("BALANCE", 0.0, 100000.0, 2000.0)
|
|
|
purchases = st.number_input("PURCHASES", 0.0, 100000.0, 3000.0)
|
|
|
oneoff = st.number_input("ONEOFF_PURCHASES", 0.0, 50000.0, 1000.0)
|
|
|
installments = st.number_input("INSTALLMENTS_PURCHASES", 0.0, 50000.0, 2000.0)
|
|
|
credit_limit = st.number_input("CREDIT_LIMIT", 100.0, 100000.0, 5000.0)
|
|
|
payments = st.number_input("PAYMENTS", 0.0, 100000.0, 2500.0)
|
|
|
tenure = st.slider("TENURE (kaç aydır müşteri?)", 0, 12, 6)
|
|
|
|
|
|
data = {
|
|
|
'BALANCE': balance,
|
|
|
'PURCHASES': purchases,
|
|
|
'ONEOFF_PURCHASES': oneoff,
|
|
|
'INSTALLMENTS_PURCHASES': installments,
|
|
|
'CREDIT_LIMIT': credit_limit,
|
|
|
'PAYMENTS': payments,
|
|
|
'TENURE': tenure
|
|
|
}
|
|
|
|
|
|
return pd.DataFrame([data])
|
|
|
|
|
|
|
|
|
input_df = get_user_input()
|
|
|
|
|
|
if st.button("Tahmin Et"):
|
|
|
scaled_input = scaler.transform(input_df)
|
|
|
cluster = kmeans.predict(scaled_input)[0]
|
|
|
|
|
|
st.subheader(f"🔍 Tahmin Edilen Küme: {cluster}")
|
|
|
yorumlar = {
|
|
|
0: "🟢 Düşük harcama yapan, düşük riskli müşteri.",
|
|
|
1: "🟡 Orta seviyede harcama yapan müşteri.",
|
|
|
2: "🔴 Yüksek harcama yapan ve aktif müşteri.",
|
|
|
3: "🔵 Taksitli harcamaları yüksek olan müşteri."
|
|
|
}
|
|
|
|
|
|
st.write(yorumlar.get(cluster, "Bilinmeyen küme"))
|
|
|
|