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 OneHotEncoder, StandardScaler from sklearn.pipeline import Pipeline import streamlit as st # Veri okuma df = pd.read_excel('iot predictive analysis.xlsx') # Sütun isimlerindeki boşlukları temizleme df.columns = df.columns.str.strip() # Değişkenlerin açıklaması columns_dict = { 'footfall': 'Belirli bir süre boyunca bir alandan geçen kişi sayısı.', 'atemp': 'Sensörün bulunduğu alanın dış ortam sıcaklığı.', 'selfLR': 'Bir cihazın kendi içindeki yük direnci.', 'ClinLR': 'Belirli bir klinik ortamda kullanılan yük direnci.', 'DoleLR': 'Belirli bir alandaki yük direncidir.', 'PID': 'Orantısal, integral ve türev kontrol sistemi değeri.', 'outpressure': 'Cihazın dış ortam basıncı.', 'inpressure': 'Cihazın iç ortam basıncı.', 'temp': 'Genel ortam sıcaklığı.', 'fail': 'Cihazın arıza durumu.' } # 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 ; Sensör arızalı lütfen kontrol ediniz" else: result ="0 ; Sensör çalışıyor işe devam edebilirsiniz" st.write("Sensör Durumu ", result)