stellar-class-prediction / src /streamlit_app.py
MSK34's picture
Update src/streamlit_app.py
1cbe372 verified
Raw
History Blame Contribute Delete
2.76 kB
# Streamlit uygulaması
import streamlit as st
import pandas as pd
import pickle
st.set_page_config(
page_title="Stellar Class Prediction",
page_icon="🌌",
layout="centered"
)
@st.cache_resource
def load_files():
with open("src/stellar_class_model.pkl", "rb") as f:
model = pickle.load(f)
with open("src/target_encoder.pkl", "rb") as f:
target_encoder = pickle.load(f)
with open("src/feature_columns.pkl", "rb") as f:
feature_columns = pickle.load(f)
return model, target_encoder, feature_columns
model, target_encoder, feature_columns = load_files()
st.title("🌌 Stellar Class Prediction")
st.write(
"Bu uygulama, astronomik gözlem verilerini kullanarak bir gök cisminin "
"GALAXY, STAR veya QSO sınıfına ait olup olmadığını tahmin eder."
)
st.subheader("Gözlem Bilgilerini Giriniz")
alpha = st.number_input("Alpha", value=180.0)
delta = st.number_input("Delta", value=0.0)
u = st.number_input("u Bandı", value=22.0)
g = st.number_input("g Bandı", value=21.0)
r = st.number_input("r Bandı", value=20.0)
i = st.number_input("i Bandı", value=19.5)
z = st.number_input("z Bandı", value=19.0)
redshift = st.number_input("Redshift", value=0.5)
spectral_type = st.selectbox(
"Spectral Type",
["M", "A/F", "G/K", "O/B"]
)
galaxy_population = st.selectbox(
"Galaxy Population",
["Red_Sequence", "Blue_Cloud"]
)
if st.button("Tahmin Et"):
input_data = pd.DataFrame({
"alpha": [alpha],
"delta": [delta],
"u": [u],
"g": [g],
"r": [r],
"i": [i],
"z": [z],
"redshift": [redshift],
"spectral_type": [spectral_type],
"galaxy_population": [galaxy_population]
})
input_data["u_g"] = input_data["u"] - input_data["g"]
input_data["g_r"] = input_data["g"] - input_data["r"]
input_data["r_i"] = input_data["r"] - input_data["i"]
input_data["i_z"] = input_data["i"] - input_data["z"]
input_data["total_brightness"] = (
input_data["u"] +
input_data["g"] +
input_data["r"] +
input_data["i"] +
input_data["z"]
)
input_data["mean_brightness"] = input_data["total_brightness"] / 5
input_data = pd.get_dummies(
input_data,
columns=["spectral_type", "galaxy_population"],
drop_first=True
)
input_data = input_data.reindex(
columns=feature_columns,
fill_value=0
)
prediction = model.predict(input_data)
prediction_label = target_encoder.inverse_transform(
prediction.astype(int).ravel()
)[0]
st.success(f"Tahmin Edilen Sınıf: {prediction_label}")
st.write("Girilen verilerden oluşturulan özellikler:")
st.dataframe(input_data)