import streamlit as st
import plotly.graph_objects as go
import plotly.express as px
import numpy as np
from datetime import datetime, timedelta
import streamlit as st
import pandas as pd
from pathlib import Path
# تنظیمات صفحه
st.set_page_config(
page_title="داشبورد مدیریت",
page_icon="👤",
layout="wide"
)
# استایلهای داشبورد
st.markdown("""
""", unsafe_allow_html=True)
# هدر داشبورد
st.title("🎛️ داشبورد مدیریت")
# آمار کلی
col1, col2, col3 = st.columns(3)
with col1:
st.markdown("""
""", unsafe_allow_html=True)
with col2:
st.markdown("""
""", unsafe_allow_html=True)
with col3:
st.markdown("""
""", unsafe_allow_html=True)
# بخش آپلود فایل
st.markdown("""
""", unsafe_allow_html=True)
# لیست فایلها
st.markdown("""
📁 مدیریت فایلها
banking_data.csv
حذف
customer_qa.json
حذف
training_data.txt
حذف
""", unsafe_allow_html=True)
# تنظیمات مدل
st.markdown("""
""", unsafe_allow_html=True)
if __name__ == "__main__":
st.markdown("""
""", unsafe_allow_html=True)
# اضافه کردن بخش نمودارها
st.markdown("""
📊 تحلیل عملکرد مدل
""", unsafe_allow_html=True)
# نمودار نرخ یادگیری
col1, col2 = st.columns(2)
with col1:
# نمودار نرخ یادگیری
dates = [datetime.now() - timedelta(days=x) for x in range(30)]
learning_rate = [0.001 * np.exp(-x/10) for x in range(30)]
fig_learning = go.Figure()
fig_learning.add_trace(go.Scatter(
x=dates,
y=learning_rate,
mode='lines+markers',
name='نرخ یادگیری',
line=dict(color='#2196F3', width=3)
))
fig_learning.update_layout(
title='نرخ یادگیری در طول زمان',
xaxis_title='تاریخ',
yaxis_title='نرخ یادگیری',
template='plotly_white',
dir='rtl'
)
st.plotly_chart(fig_learning, use_container_width=True)
with col2:
# نمودار دقت مدل
accuracy_data = np.linspace(0.7, 0.95, 30)
fig_accuracy = go.Figure()
fig_accuracy.add_trace(go.Scatter(
x=dates,
y=accuracy_data,
mode='lines+markers',
name='دقت مدل',
line=dict(color='#4CAF50', width=3)
))
fig_accuracy.update_layout(
title='پیشرفت دقت مدل',
xaxis_title='تاریخ',
yaxis_title='دقت',
template='plotly_white',
dir='rtl'
)
st.plotly_chart(fig_accuracy, use_container_width=True)
# نمودار پاسخهای صحیح و غلط
labels = ['پاسخهای صحیح', 'پاسخهای غلط']
values = [85, 15]
fig_pie = go.Figure(data=[go.Pie(
labels=labels,
values=values,
hole=.3,
marker_colors=['#4CAF50', '#f44336']
)])
fig_pie.update_layout(title='نسبت پاسخهای صحیح به غلط')
st.plotly_chart(fig_pie, use_container_width=True)
# چتبات آموزش سریع
st.markdown("""
""", unsafe_allow_html=True)
# دکمه دسترسی به نالج بیس
st.markdown("""
📚 مدیریت نالج بیس
دسترسی به فایل منیجر
""", unsafe_allow_html=True)
# اضافه کردن استایلهای جدید
st.markdown("""
""", unsafe_allow_html=True)
# اضافه کردن نمودار هیتمپ برای نمایش ماتریس خطا
confusion_matrix = np.array([
[850, 50],
[30, 70]
])
fig_heatmap = px.imshow(
confusion_matrix,
labels=dict(x="پیشبینی", y="مقدار واقعی"),
x=['مثبت', 'منفی'],
y=['مثبت', 'منفی'],
color_continuous_scale="RdBu",
title="ماتریس خطا"
)
fig_heatmap.update_layout(
template='plotly_white',
dir='rtl',
width=600,
height=500
)
# نمودار روند زمانی با قابلیت فیلتر
training_metrics = pd.DataFrame({
'تاریخ': pd.date_range(start='2023-01-01', periods=100),
'دقت': np.random.normal(0.85, 0.05, 100).cumsum()/100,
'recall': np.random.normal(0.80, 0.05, 100).cumsum()/100,
'f1_score': np.random.normal(0.82, 0.05, 100).cumsum()/100
})
fig_metrics = px.line(
training_metrics,
x='تاریخ',
y=['دقت', 'recall', 'f1_score'],
title='روند معیارهای ارزیابی',
labels={'value': 'مقدار', 'variable': 'معیار'},
template='plotly_white'
)
fig_metrics.update_layout(
showlegend=True,
legend_title_text='معیارها',
hovermode='x unified',
updatemenus=[
dict(
buttons=list([
dict(
args=[{"visible": [True, True, True]}],
label="همه",
method="restyle"
),
dict(
args=[{"visible": [True, False, False]}],
label="دقت",
method="restyle"
),
dict(
args=[{"visible": [False, True, False]}],
label="Recall",
method="restyle"
),
dict(
args=[{"visible": [False, False, True]}],
label="F1 Score",
method="restyle"
)
]),
direction="down",
showactive=True,
x=0.1,
y=1.1
)
]
)
# نمودار توزیع خطا
errors = np.random.normal(0, 1, 1000)
fig_dist = px.histogram(
errors,
nbins=50,
title='توزیع خطای پیشبینی',
labels={'value': 'خطا', 'count': 'تعداد'},
template='plotly_white'
)
fig_dist.update_layout(
bargap=0.1,
showlegend=False
)
# اضافه کردن کنترلهای تعاملی
st.sidebar.markdown("## تنظیمات نمودارها")
time_range = st.sidebar.slider(
"بازه زمانی (روز)",
min_value=7,
max_value=100,
value=30
)
metric_threshold = st.sidebar.number_input(
"آستانه دقت",
min_value=0.0,
max_value=1.0,
value=0.8,
step=0.05
)
# نمایش نمودارها با چینش جدید
col1, col2 = st.columns(2)
with col1:
st.plotly_chart(fig_metrics, use_container_width=True)
st.plotly_chart(fig_heatmap, use_container_width=True)
with col2:
st.plotly_chart(fig_dist, use_container_width=True)
st.plotly_chart(fig_pie, use_container_width=True)