Spaces:
Sleeping
Sleeping
import streamlit as st | |
import pandas as pd | |
import joblib | |
from sklearn.linear_model import LinearRegression | |
from sklearn.ensemble import RandomForestRegressor | |
from xgboost import XGBRegressor | |
from lightgbm import LGBMRegressor | |
from catboost import CatBoostRegressor | |
from sklearn.model_selection import train_test_split | |
from sklearn.metrics import mean_absolute_error | |
# Title of the application | |
st.title("اداره زراعت و کنترل محصول") | |
# Model selection | |
model_choice = st.sidebar.selectbox("انتخاب مدل", ["Linear Regression", "Random Forest", "XGBoost", "LightGBM", "CatBoost"]) | |
# Data upload | |
uploaded_file = st.sidebar.file_uploader("بارگذاری فایل دادهها", type=["csv", "xlsx"]) | |
if uploaded_file is not None: | |
if uploaded_file.name.endswith('.csv'): | |
data = pd.read_csv(uploaded_file) | |
else: | |
data = pd.read_excel(uploaded_file) | |
st.write("پیشنمایش دادهها:") | |
st.dataframe(data.head()) | |
# Feature and label selection | |
features = st.sidebar.multiselect("انتخاب ویژگیها", data.columns) | |
target = st.sidebar.selectbox("انتخاب برچسب", data.columns) | |
if st.sidebar.button("آموزش مدل"): | |
if features and target: | |
X = data[features] | |
y = data[target] | |
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) | |
if model_choice == "Linear Regression": | |
model = LinearRegression() | |
elif model_choice == "Random Forest": | |
model = RandomForestRegressor() | |
elif model_choice == "XGBoost": | |
model = XGBRegressor() | |
elif model_choice == "LightGBM": | |
model = LGBMRegressor() | |
else: | |
model = CatBoostRegressor(silent=True) | |
model.fit(X_train, y_train) | |
predictions = model.predict(X_test) | |
error = mean_absolute_error(y_test, predictions) | |
st.write(f"خطای مدل: {error}") | |
# Save model | |
joblib.dump(model, 'model.pkl') | |
st.success("مدل با موفقیت آموزش دیده و ذخیره شد.") | |
else: | |
st.warning("لطفاً ویژگیها و برچسب را انتخاب کنید.") | |
else: | |
st.warning("لطفاً یک فایل داده بارگذاری کنید.") | |
# Prediction with saved model | |
st.header("پیشبینی بازده عملکرد") | |
uploaded_model = st.file_uploader("بارگذاری مدل ذخیره شده", type=["pkl"]) | |
if uploaded_model is not None: | |
model = joblib.load(uploaded_model) | |
uploaded_data = st.file_uploader("بارگذاری فایل دادههای جدید", type=["csv", "xlsx"]) | |
if uploaded_data is not None: | |
if uploaded_data.name.endswith('.csv'): | |
new_data = pd.read_csv(uploaded_data) | |
else: | |
new_data = pd.read_excel(uploaded_data) | |
st.write("پیشنمایش دادههای جدید:") | |
st.dataframe(new_data.head()) | |
predictions = model.predict(new_data) | |
st.write("پیشبینیها:") | |
st.write(predictions) | |
# Generate a CSV for download | |
predictions_df = pd.DataFrame(predictions, columns=['Predictions']) | |
csv = predictions_df.to_csv(index=False).encode('utf-8') | |
st.download_button( | |
label="دانلود پیشبینیها", | |
data=csv, | |
file_name='predictions.csv', | |
mime='text/csv', | |
) | |
else: | |
st.warning("لطفاً یک مدل ذخیره شده بارگذاری کنید.") | |