Tek / app.py
ErenKontas's picture
Upload 5 files
48edd1f verified
import pandas as pd
import numpy as np
import streamlit as st
import joblib
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, BatchNormalization
from tensorflow.keras.callbacks import EarlyStopping
from sklearn.preprocessing import MinMaxScaler
from sklearn.model_selection import train_test_split
from sklearn.metrics import r2_score,mean_squared_error
from sklearn.compose import ColumnTransformer
# Load data
df = pd.read_csv('train.csv')
# Convert timestamp to datetime and extract features
df['timestamp'] = pd.to_datetime(df['timestamp'])
df['year'] = df['timestamp'].dt.year
df['month'] = df['timestamp'].dt.month
df['day'] = df['timestamp'].dt.day
df['hour'] = df['timestamp'].dt.hour
df['minute'] = df['timestamp'].dt.minute
# Drop the original timestamp and keep only numeric columns for features
x = df.drop(['x', 'timestamp'], axis=1) # Drop unused columns
y = df[['x']]
# Ensure all columns in x are numeric
x = x.select_dtypes(include=[np.number]) # Select only numeric columns
# Train-test split
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.20, random_state=42)
# Preprocessor for numerical data
preprocessor = MinMaxScaler()
# Prediction function for new data
def time_pred(y, year, month, day, hour, minute):
input_data = pd.DataFrame({
'y': [y],
'year': [year],
'month': [month],
'day': [day],
'hour': [hour],
'minute': [minute]
})
input_data_transformed = preprocessor.fit_transform(input_data)
model = joblib.load('Tek.pkl')
prediction = model.predict(input_data_transformed)
return float(prediction[0])
st.write("Veri Gir")
y = st.selectbox('y', df['y'].unique())
year = st.number_input('Year', min_value=1900, max_value=2100, value=1900)
month = st.number_input('Month', min_value=1, max_value=12, value=1)
day = st.number_input('Day', min_value=1, max_value=31, value=1)
hour = st.number_input('Hour', min_value=0, max_value=23, value=0)
minute = st.number_input('Minute', min_value=0, max_value=59, value=0)
if st.button('Predict'):
time = time_pred(y, year, month, day, hour, minute)
st.write(f'The predicted time is: {time:.2f}')