iot / app.py
yunuseduran's picture
Update app.py
d9086fb verified
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)