bist30_tahmin / app.py
yunuseduran's picture
Update app.py
3ab3bac verified
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))