File size: 1,630 Bytes
7788dc9
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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

import gradio as gr
import pandas as pd
from sklearn.tree import DecisionTreeClassifier

# 載入完整資料
df = pd.read_csv("bankloan.csv")
df = df.drop(columns=["ID", "ZIP.Code"])
X = df.drop(columns=["Personal.Loan"])
y = df["Personal.Loan"]

# 建立模型
model = DecisionTreeClassifier(random_state=42)
model.fit(X, y)

def predict(age, exp, income, family, ccavg, edu, mort, sec, cd, online, credit):
    input_data = pd.DataFrame([{
        "Age": age,
        "Experience": exp,
        "Income": income,
        "Family": family,
        "CCAvg": ccavg,
        "Education": edu,
        "Mortgage": mort,
        "Securities.Account": sec,
        "CD.Account": cd,
        "Online": online,
        "CreditCard": credit
    }])
    pred = model.predict(input_data)[0]
    return "核貸 ✅" if pred == 1 else "不核貸 ❌"

demo = gr.Interface(
    fn=predict,
    inputs=[
        gr.Number(label="年齡 Age"),
        gr.Number(label="工作年資 Experience"),
        gr.Number(label="收入 Income"),
        gr.Number(label="家庭人數 Family"),
        gr.Number(label="信用卡平均月花費 CCAvg"),
        gr.Number(label="教育程度 Education"),
        gr.Number(label="房貸金額 Mortgage"),
        gr.Number(label="是否有證券帳戶 (0/1)"),
        gr.Number(label="是否有定存帳戶 (0/1)"),
        gr.Number(label="是否使用線上服務 (0/1)"),
        gr.Number(label="是否持有信用卡 (0/1)")
    ],
    outputs="text",
    title="Loan Approval Predictor",
    description="使用 bankloan.csv 資料訓練的決策樹模型,預測是否核貸"
)

demo.launch()