Spaces:
Sleeping
Sleeping
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)) | |