import numpy as np import pandas as pd import matplotlib.pyplot as plt import warnings import streamlit as st 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 warnings.filterwarnings('ignore') # Veri okuma @st.cache_data def load_data(file_path): df = pd.read_excel(file_path) df.columns = df.columns.str.strip() # Sütun isimlerindeki boşlukları temizleme return df df = load_data('iot predictive analysis.xlsx') # Veri setini özellikler ve hedef olarak ayırma y = df['fail'] X = df.drop(['fail'], axis=1) # Eğitim ve test kümelerine 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(), ['footfall', 'atemp', 'selfLR', 'ClinLR', 'DoleLR', 'PID', 'outpressure', 'inpressure', 'temp']) ]) # 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)) # Streamlit uygulaması def fail(footfall, atemp, selfLR, ClinLR, DoleLR, PID, outpressure, inpressure, temp): input_data = pd.DataFrame({ 'footfall': [footfall], 'atemp': [atemp], 'selfLR': [selfLR], 'ClinLR': [ClinLR], 'DoleLR': [DoleLR], 'PID': [PID], 'outpressure': [outpressure], 'inpressure': [inpressure], 'temp': [temp] }) prediction = pipe.predict(input_data)[0] return prediction st.title("İot Analizi :information: @YED") st.write("Lütfen Sensör Verilerini Giriniz.") footfall = st.number_input("Footfall", 0, 10000) atemp = st.number_input("Atemp", 0, 100) selfLR = st.number_input("SelfLR", 0, 100) ClinLR = st.number_input("ClinLR", 0, 100) DoleLR = st.number_input("DoleLR", 0, 100) PID = st.number_input("PID", 0, 100) outpressure = st.number_input("Outpressure", 0, 100) inpressure = st.number_input("Inpressure", 0, 100) temp = st.number_input("Temp", 0, 100) if st.button("Predict"): pred = fail(footfall, atemp, selfLR, ClinLR, DoleLR, PID, outpressure, inpressure, temp) if pred>=1: result =1 st.write("Sensör çalışıyor, işe devam edebilir", result) else: result=0 st.write("Sensör arızalı, lütfen sensörü kontrol ediniz ", result)