File size: 2,077 Bytes
7e24559
661a0f2
 
 
 
 
 
 
 
 
7e24559
05655bc
661a0f2
 
7e24559
661a0f2
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
562ddd9
6263a3a
7e24559
 
 
 
661a0f2
 
 
 
 
 
 
 
7e24559
 
 
661a0f2
 
7e24559
 
661a0f2
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
55
56
57
58
59
60
61
62
63
64
65
66
67
import gradio as gr
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.pipeline import Pipeline
from sklearn.metrics import accuracy_score
import time
import paho.mqtt.client as mqtt

df = pd.read_csv("./Churn_Modelling.csv")
df.drop(["RowNumber","CustomerId","Surname"], axis=1, inplace=True)
df.head()

df.Balance.plot(kind="hist", figsize=(10,6))
df.Balance = np.where(df.Balance==0, 0, 1)
df.Balance.value_counts()
df.Age.plot(kind="hist", figsize=(10,6))

X = df.drop(["Exited","Geography","Gender"], axis=1)
y = df["Exited"]
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

pl = Pipeline([
    ("scale", StandardScaler()),
    ("logreg", LogisticRegression())
])
pl.fit(X_train, y_train)
y_train_pred = pl.predict(X_train)
y_test_pred = pl.predict(X_test)

def sentence_builder(credit, age, tenure, balance, nb_prods, has_card, active, est_salary):
    data = [{
        "CreditScore": credit,
        "Age": age,
        "Tenure": tenure,
        "Balance": balance,
        "NumOfProducts": nb_prods,
        "HasCrCard": has_card,
        "IsActiveMember": active,
        "EstimatedSalary": est_salary,
    }]
    df = pd.json_normalize(data)
    res = bool(pl.predict(df)[0])
    return 'User will stay' if res else 'User will exit'

iface = gr.Interface(
    sentence_builder,
    [
        gr.inputs.Slider(0, 10000, label='credit'),
        gr.inputs.Slider(0, 100, label='age'),
        gr.inputs.Slider(0, 10, label='tenure'),
        gr.inputs.Slider(0, 10000, label='balance'),
        gr.inputs.Slider(0, 10, label='number of products'),
        gr.inputs.Checkbox(label="credit card"),
        gr.inputs.Checkbox(label="active"),
        gr.inputs.Slider(0, 200000, label='estimated salary'),
    ],
    "text",
    examples=[
        [619, 42, 2, 0, 1, 1, 1, 101348], # Returns False 0 
        [608, 41, 1, 83807, 1, 0, 1, 112542], # Returns True 1
    ],
)
iface.launch()