userbank / app.py
Louis VAUBOURDOLLE
Update app.py
6263a3a
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()