-
Notifications
You must be signed in to change notification settings - Fork 8
/
predicao_churn.py
77 lines (61 loc) · 3.19 KB
/
predicao_churn.py
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
68
69
70
71
72
73
74
75
76
77
import pickle
import pandas as pd
from flask import Flask, render_template, request
# molezinha, só tem que setar as pastas de template e assets
app = Flask(__name__, template_folder='template', static_folder='template/assets')
# Treina lá, usa cá
modelo_pipeline = pickle.load(open('./models/pipe.pkl', 'rb'))
@app.route('/')
def home():
return render_template("homepage.html")
@app.route('/dados_cliente')
def dados_cliente():
return render_template("form.html")
def get_data():
tenure = request.form.get('tenure')
MonthlyCharges = request.form.get('MonthlyCharges')
TotalCharges = request.form.get('TotalCharges')
gender = request.form.get('gender')
SeniorCitizen = request.form.get('SeniorCitizen')
Partner = request.form.get('Partner')
Dependents = request.form.get('Dependents')
PhoneService = request.form.get('PhoneService')
MultipleLines = request.form.get('MultipleLines')
InternetService = request.form.get('InternetService')
OnlineSecurity = request.form.get('OnlineSecurity')
OnlineBackup = request.form.get('OnlineBackup')
DeviceProtection = request.form.get('DeviceProtection')
TechSupport = request.form.get('TechSupport')
StreamingTV = request.form.get('StreamingTV')
StreamingMovies = request.form.get('StreamingMovies')
Contract = request.form.get('Contract')
PaperlessBilling = request.form.get('PaperlessBilling')
PaymentMethod = request.form.get('PaymentMethod')
d_dict = {'tenure': [tenure], 'MonthlyCharges': [MonthlyCharges], 'TotalCharges': [TotalCharges],
'gender': [gender], 'SeniorCitizen': [SeniorCitizen], 'Partner': [Partner],
'Dependents': [Dependents], 'PhoneService': [PhoneService],
'MultipleLines': [MultipleLines], 'InternetService': [InternetService],
'OnlineSecurity': [OnlineSecurity], 'OnlineBackup': [OnlineBackup],
'DeviceProtection': [DeviceProtection], 'TechSupport': [TechSupport],
'StreamingTV': [StreamingTV], 'StreamingMovies': [StreamingMovies],
'Contract': [Contract], 'PaperlessBilling': [PaperlessBilling],
'PaymentMethod': [PaymentMethod]}
return pd.DataFrame.from_dict(d_dict, orient='columns')
@app.route('/send', methods=['POST'])
def show_data():
df = get_data()
df = df[['gender', 'SeniorCitizen', 'Partner', 'Dependents', 'tenure',
'PhoneService', 'MultipleLines', 'InternetService', 'OnlineSecurity',
'OnlineBackup', 'DeviceProtection', 'TechSupport', 'StreamingTV',
'StreamingMovies', 'Contract', 'PaperlessBilling', 'PaymentMethod',
'MonthlyCharges', 'TotalCharges']]
prediction = modelo_pipeline.predict(df)
outcome = 'DANGER!!! VAI VAZAR! TELEMARKETING NELE!!'
imagem = 'chefe_brabo.jpg'
if prediction == 0:
outcome = 'Ufa... esse cliente vai ficar!! Aproveita pra entubar uns serviços novos!'
imagem = 'chefe_feliz.jpg'
return render_template('result.html', tables=[df.to_html(classes='data', header=True, col_space=10)],
result=outcome, imagem=imagem)
if __name__ == "__main__":
app.run(debug=True)