ytrsoymr's picture
Upload 12 files
e6b59fa verified
import streamlit as st
import pandas as pd
import pickle
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import train_test_split
from sklearn.neighbors import KNeighborsClassifier
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import RandomForestClassifier
from xgboost import XGBClassifier
from scipy.stats import norm
import seaborn as sns
import matplotlib.pyplot as plt
## loading the model
dt=pickle.load(open('dt.pkl','rb'))
rf=pickle.load(open('rf.pkl','rb'))
knn=pickle.load(open('kn.pkl','rb'))
xgb=pickle.load(open('xg.pkl','rb'))
log=pickle.load(open('log.pkl','rb'))
# Title and description
st.markdown('<h1 style="color:blue;text-align:center;">Cancer Prediction Tool</h1>', unsafe_allow_html=True)
st.markdown("""
Welcome to the Cancer Prediction Tool. This tool helps predict the likelihood of cancer based on various patient details.
Please enter the necessary details in the sidebar, and click 'Predict' to see the results.
""")
st.sidebar.header('Enter the details of the patient')
Gender=st.sidebar.selectbox('Gender',('Male','Female'))
Age=st.sidebar.number_input('Age',min_value=18,max_value=90)
Tumor_Size=st.sidebar.number_input('Tumor Size',step=0.1,min_value=float(0.1),max_value=float(20))
Tumor_Grade=st.sidebar.selectbox('Tumor Grade',('High','Medium','Low'))
Symptoms_Severity=st.sidebar.selectbox('Symptoms Severity',('Mild','Moderate','Severe'))
Family_History=st.sidebar.selectbox('Family History',('Yes','No'))
Smoking_History=st.sidebar.selectbox('Smoking',('Former Smoker', 'Current Smoker', 'Non-Smoker'))
Alcohol_Consumption=st.sidebar.selectbox('Alcohol Consumption',('High', 'Moderate','Low'))
Exercise_Frequency=st.sidebar.selectbox('Exercise_frequency',('Regularly', 'Rarely', 'Occasionally', 'Never'))
if st.sidebar.button('Predict'):
features=[[Age, Gender, Tumor_Size, Tumor_Grade, Symptoms_Severity,
Family_History, Smoking_History, Alcohol_Consumption,
Exercise_Frequency]]
features=pd.DataFrame(features,columns=['Age', 'Gender', 'Tumor_Size', 'Tumor_Grade', 'Symptoms_Severity',
'Family_History', 'Smoking_History', 'Alcohol_Consumption',
'Exercise_Frequency'])
pred=log.predict(features)
if pred==1:
st.header("Patient has :red[Cancer]",divider='rainbow')
else:
st.header("Patient has :green[no Cancer]",divider='rainbow')
probability = norm.cdf(pred, loc=0, scale=1)
plt.figure(figsize=(2,2))
plt.pie([1-probability[0], probability[0]], labels=['No Cancer', 'Cancer'], autopct='%1.1f%%', shadow=True, startangle=140, explode=[0,0.05])
plt.title('Probability of Cancer', fontsize=12)
st.pyplot(plt)