Spaces:
Runtime error
Runtime error
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() | |