iot / app.py
yunuseduran's picture
Update app.py
ccc9087 verified
raw
history blame
2.75 kB
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; Sensör çalışıyor, işe devam edebilir"
else:
result="0 Sensör arızalı, lütfen sensörü kontrol ediniz "
st.write("Sensör Durumu", result)