import numpy as np import pandas as pd import matplotlib.pyplot as plt import warnings warnings.filterwarnings('ignore') from sklearn.model_selection import train_test_split from sklearn.linear_model import LinearRegression from sklearn.metrics import mean_squared_error, r2_score from sklearn.compose import ColumnTransformer from sklearn.preprocessing import StandardScaler from sklearn.pipeline import Pipeline import streamlit as st # Veri okuma df = pd.read_excel('Untitled3.xlsx') # Hedef değişken ve özellikler y = df.BIST30 X = df.drop(['BIST30', 'Date', 'AylıkVadeliMevudatFaizOranı', 'TÜFE', 'İmalatSanayiKapasiteKullanımOranı', 'YiÜFE', 'USDTL', 'SanayiÜretimEndeksi', 'TüketiciGüvenEndeksi', 'LnBist', 'LnAylıkMFO', 'LnYİÜFE', 'LnSÜE', 'ZBIST30', 'ZLnBist', 'COO_1'], axis=1) # Veriyi eğitim ve test setlerine ayırma X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # Ön işleme adımları preprocess = ColumnTransformer(transformers=[ ('num', StandardScaler(), ['LnTUFE', 'LnİSKO', 'LnUSDTL', 'LnTGE']), ]) # Model tanımlama model = LinearRegression() pipe = Pipeline(steps=[('preprocessor', preprocess), ('model', model)]) # Modeli eğitme pipe.fit(X_train, y_train) # Tahmin ve değerlendirme y_pred = pipe.predict(X_test) print("Root Mean Squared Error: ", mean_squared_error(y_test, y_pred) ** 0.5) print("R^2 Score: ", r2_score(y_test, y_pred)) # Tahmin fonksiyonu def predict_bist30(LnTUFE, LnİSKO, LnUSDTL, LnTGE): input_data = pd.DataFrame({ 'LnTUFE': [LnTUFE], 'LnİSKO': [LnİSKO], 'LnUSDTL': [LnUSDTL], 'LnTGE': [LnTGE] }) prediction = pipe.predict(input_data)[0] return prediction # Streamlit arayüzü st.title("Bist30 Tahmini: @YED") st.write("Lütfen Aşağıdaki bilgileri giriniz.") LnTUFE = st.number_input("LnTUFE", 0.00, 10000.00) LnİSKO = st.number_input("LnİSKO", 0.00, 10000.00) LnUSDTL = st.number_input("LnUSDTL", 0.00, 10000.00) LnTGE = st.number_input("LnTGE", 0.00, 10000.00) if st.button("Predict"): pred = predict_bist30(LnTUFE, LnİSKO, LnUSDTL, LnTGE) st.write("Bist30 Tahmini:", round(pred, 2))