3v324v23's picture
Update prediction.py
cde60e7
import streamlit as st
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
import plotly.express as px
from PIL import Image
st.set_page_config(
page_title="Heart Failure Classification",
layout="wide",
initial_sidebar_state="expanded",
)
# dataset
dataset = "https://raw.githubusercontent.com/ediashta/p1-ftds-020-rmt-g3-ediashta/main/h8dsft_P1G3_Ediashta.csv"
data = pd.read_csv(dataset)
cat_col = ["anaemia", "diabetes", "high_blood_pressure", "sex", "smoking"]
num_col = [
"age",
"creatinine_phosphokinase",
"ejection_fraction",
"platelets",
"serum_creatinine",
"serum_sodium",
"time",
]
data_ord = data[cat_col]
data_num = data[num_col]
def dataset():
# distribution plot
st.title("Heart Failure Classification")
st.subheader("Dataset")
st.dataframe(data)
# column description
st.subheader("Column Description")
col1, col2 = st.columns(2)
col1.markdown("* **age** : Umur ")
col1.markdown("* **anaemia** : Penurunan Sel Darah Merah (**boolean**)")
col1.markdown(
"* **creatinine_phosphokinase** : Tingkat Enzim CPK pada darah (**mcg/L**)"
)
col1.markdown("* **diabetes** : Status diabetes (**boolean**)")
col1.markdown(
"* **ejection_fraction** : Persentase darah keluar dari jantung pada tiap kontraksi (**percentage**)"
)
col1.markdown("* **high_blood_pressure** : Status Hipertensi (**boolean**)")
col1.markdown("* **platelets** : Platelets pada darah (**kiloplatelets/mL**) ")
col2.markdown(
"* **serum_creatinine** : Tingkat serum kreatinin pada darah (**mg/dL**) "
)
col2.markdown("* **serum_sodium** : Tingkat serum sodium pada darah (**mEq/L**)")
col2.markdown("* **sex** : Jenis Kelamin (**binary**)")
col2.markdown("* **smoking** : Status merokok (**boolean**)")
col2.markdown("* **time** : Periode follow-up (**days**)")
col2.markdown("* **DEATH_event** : Status kematian saat follow-up (**boolean**)")
def distribution():
# distribution plot
st.title("Heart Failure Classification")
st.subheader("Distribution")
col1, col2 = st.columns(2)
# Death Event Bar Plot
fig = plt.figure(figsize=(10, 6))
col1.write("Death Event Barplot")
sns.countplot(data=data, x="DEATH_EVENT", palette="coolwarm")
col1.pyplot(fig)
# Death Event Bar Plot
fig = plt.figure(figsize=(10, 6))
col2.write("Age Distribution")
sns.histplot(
data=data, x="age", kde=True, bins=30, hue="DEATH_EVENT", palette="coolwarm"
)
col2.pyplot(fig)
def boxplot():
# distribution plot
st.title("Heart Failure Classification")
st.subheader("Boxplot")
fig, axs = plt.subplots(2, 4, figsize=(20, 10))
for i, x in enumerate(data_num):
if i < 4:
axs[0, i].set_title(x)
axs[0, i].boxplot(data[x])
elif 7 >= i >= 4:
axs[1, i - 4].set_title(x)
axs[1, i - 4].boxplot(data[x])
axs[1, 3].axis("off")
fig.tight_layout()
st.pyplot(fig)
def corr_matrix():
# distribution plot
st.title("Heart Failure Classification")
st.subheader("Correlation")
if __name__ == "__main__":
run()