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 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) | |