mamamIA / app.py
marcossalinas
App creada
8f0841c
raw
history blame
5.78 kB
from numpy import dtype
import streamlit as st
import pandas as pd
from sklearn.preprocessing import StandardScaler
import numpy as np
import joblib as jl
# VALORES POR DEFECTO QUE INDICAN CELULAS NO CANCEROSAS
# radius_mean 14.12
# texture_mean 19.28
# perimeter_mean 91.96
# area_mean 551,17
# compactness_mean 0.0092
# concavity_mean 0.061
# concave_points_mean 0.033
# area_se 24.5
# radius_worst 14.97
# texture_worst 25.41
# perimeter_worst 97.6
# area_worst 686.5
# smoothness_worst 0.1313
# compactness_worst 0.20
# concavity_worst 0.22
# concave points_worst 0.09
col=['radius_mean', 'texture_mean', 'perimeter_mean',
'area_mean', 'compactness_mean', 'concavity_mean',
'concave points_mean', 'area_se', 'radius_worst', 'texture_worst',
'perimeter_worst', 'area_worst', 'smoothness_worst',
'compactness_worst', 'concavity_worst', 'concave points_worst']
modnames=['mlp_final.pkl','svm_final.pkl','lr_final.pkl']
#@st.cache
def getScaler():
# Cargo el dataset para poder normalizar los valores recogidos en el formulario
print ("cargando dataset")
data=pd.read_csv('https://raw.githubusercontent.com/gitmecalvon/mamamIA/main/resources/data/cleaned/train_web.csv',sep=';')
print("dataset cargado")
scaler = StandardScaler()
scaler.fit(data)
return scaler
# cargandolos para poder usarlos desde un sidebar si da tiempo
def cargaModelos (indice):
print('Preparando el guardado de Modelos ' )
modelo=jl.load(modnames[indice])
return modelo
def interpreta (prediccion):
respuesta ="Los datos introducidos pronostican que son c茅lulas de tipo "
if prediccion ==1:
respuesta= respuesta + "Maligno"
else:
respuesta= respuesta + "BENIGNO"
return respuesta
def contruyeFormulario():
# st.set_page_config(layout="wide")
st.title("Mama mIA")
st.markdown('<style>body{background-color: Black;}</style>',unsafe_allow_html=True)
html_temp = """ <div style ="background-color:Pink;padding:13px">
<h1 style ="color:black;text-align:center;">Algoritmo de ayuda a la predicci贸n diagn贸stica del C谩ncer de mama</h1>
</div>"""
st.markdown(html_temp, unsafe_allow_html = True)
st.subheader("Por favor introduzca las medidas de la muestra")
form = st.form(key="formulario")
# col1, col2 = form.columns(2) # intento de dos columnas sin recurrir a html
# with col1:
radius_mean = form.number_input( label="Radio Promedio", min_value=0.00000, max_value=20.0,value=13.54, step=0.0001,format="%4f")
texture_mean = form.number_input(label="Textura Promedio", min_value=0.00000, max_value=36.0,value=14.36, step=0.0001,format="%4f")
perimeter_mean = form.number_input(label="Per铆mertro Promedio", min_value=0.00000, max_value=150.0,value=87.46, step=0.0001,format="%4f")
area_mean = form.number_input(label="脕rea Promedio", min_value=0.00000, max_value=1600.0,value=566.3, step=0.0001,format="%4f")
compactness_mean = form.number_input(label="Promedio de Compactabilidad", min_value=0.00000, max_value=1.0,value=0.08129, step=0.0001,format="%5f")
concavity_mean = form.number_input(label="Promedio de Concavidad", min_value=0.00000, max_value=1.0,value=0.06664, step=0.0001,format="%5f")
concave_points_mean = form.number_input(label="Puntos C贸ncavos promedio", min_value=0.00000, max_value=1.0,value=0.04781, step=0.0001,format="%4f")
area_se = form.number_input(label="Area Error Estandar", min_value=0.00000, max_value=150.0,value=23.56, step=0.0001,format="%4f")
# with col2:
radius_worst = form.number_input(label="Radio worst ", min_value=0.00000, max_value=30.0,value=15.11, step=0.0001,format="%4f")
texture_worst= form.number_input(label="Textura worsk", min_value=0.00000, max_value=70.0,value=19.26, step=0.0001,format="%4f")
perimeter_worst = form.number_input(label="Perimetro worst", min_value=0.00000, max_value=99.70,value=0.0092, step=0.0001,format="%4f")
area_worst = form.number_input(label="Area ", min_value=0.00000, max_value=800.0,value=711.2, step=0.0001,format="%4f")
smoothness_worst = form.number_input(label="Suavidad worst", min_value=0.00000, max_value=1.0,value=0.144, step=0.0001,format="%4f")
compactness_worst = form.number_input(label="Compactabilidad worst", min_value=0.00000, max_value=2.0,value=0.1773, step=0.0001,format="%4f")
concavity_worst = form.number_input(label="Concavidad worst", min_value=0.00000, max_value=2.0,value=0.2390, step=0.0001,format="%4f")
concavepoints_worst = form.number_input(label="Puntos c贸ncavos worst", min_value=0.00000, max_value=2.0,value=0.1288, step=0.0001,format="%4f")
submit = form.form_submit_button(label="Predicci贸n")
if submit:
# Escalamos los datos del formulario
scaler=getScaler()
nbnormaliz=scaler.transform ([[radius_mean, texture_mean, perimeter_mean ,area_mean , compactness_mean , concavity_mean ,
concave_points_mean , area_se , radius_worst , texture_worst ,perimeter_worst , area_worst , smoothness_worst ,
compactness_worst , concavity_worst , concavepoints_worst ]])
# Recuperamos el modelo
print ("cargando modelo")
print (modnames[2])
algoritmo=cargaModelos(2)
# Realizamos la prediccion
print ("Preparando la prediccion...")
prediccion=algoritmo.predict (nbnormaliz)
print (prediccion)
st.write ("")
st.write (interpreta (prediccion))
def main():
contruyeFormulario()
if __name__ == '__main__':
main()