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