| |
|
|
| 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) |