Spaces:
Sleeping
Sleeping
| import gradio as gr | |
| from drift_simulator import ( | |
| generate_sudden_drift, | |
| generate_gradual_drift, | |
| generate_incremental_drift, | |
| generate_recurring_drift, | |
| get_drift_description | |
| ) | |
| from visualizer import create_drift_visualization | |
| from analyzer import analyze_drift, format_analysis_summary | |
| def simulate_and_visualize(drift_type: str): | |
| """๋๋ฆฌํํธ ์๋ฎฌ๋ ์ด์ + ์๊ฐํ + ๋ถ์""" | |
| # ๋๋ฆฌํํธ ํ์ ์ ๋ฐ๋ผ ๋ฐ์ดํฐ ์์ฑ | |
| if drift_type == "Sudden (๊ธ๊ฒฉํ ๋๋ฆฌํํธ)": | |
| X, y, drift_points = generate_sudden_drift(n_samples=1000, drift_point=500) | |
| drift_key = "sudden" | |
| elif drift_type == "Gradual (์ ์ง์ ๋๋ฆฌํํธ)": | |
| X, y, drift_points = generate_gradual_drift(n_samples=1000, drift_start=300, drift_end=700) | |
| drift_key = "gradual" | |
| elif drift_type == "Incremental (์ฆ๋ถ์ ๋๋ฆฌํํธ)": | |
| X, y, drift_points = generate_incremental_drift(n_samples=1000, n_steps=5) | |
| drift_key = "incremental" | |
| elif drift_type == "Recurring (๋ฐ๋ณต์ ๋๋ฆฌํํธ)": | |
| X, y, drift_points = generate_recurring_drift(n_samples=1000, cycle_length=250) | |
| drift_key = "recurring" | |
| else: | |
| return None, "์ฌ๋ฐ๋ฅธ ๋๋ฆฌํํธ ํ์ ์ ์ ํํด์ฃผ์ธ์." | |
| # ์๊ฐํ | |
| fig = create_drift_visualization(X, y, drift_points, drift_key) | |
| # ๋ถ์ | |
| analysis = analyze_drift(X, y, drift_points, drift_key) | |
| summary = format_analysis_summary(analysis) | |
| # ์ค๋ช ์ถ๊ฐ | |
| description = get_drift_description(drift_key) | |
| full_summary = f"### {description}\n\n{summary}" | |
| return fig, full_summary | |
| # Gradio ์ธํฐํ์ด์ค | |
| with gr.Blocks(title="Concept Drift Simulator", theme=gr.themes.Soft()) as demo: | |
| gr.Markdown( | |
| """ | |
| # Concept Drift Simulator | |
| ์ปจ์ ๋๋ฆฌํํธ(Concept Drift)์ 4๊ฐ์ง ์ ํ์ ์๋ฎฌ๋ ์ด์ ํ๊ณ ์๊ฐํํฉ๋๋ค. | |
| ๋๋ฆฌํํธ ์ ํ์ ์ ํํ๋ฉด ์๋์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ์์ฑํ๊ณ ์ธํฐ๋ํฐ๋ธ ์ฐจํธ๋ฅผ ํ์ํฉ๋๋ค. | |
| """ | |
| ) | |
| with gr.Row(): | |
| with gr.Column(scale=1): | |
| drift_type_radio = gr.Radio( | |
| choices=[ | |
| "Sudden (๊ธ๊ฒฉํ ๋๋ฆฌํํธ)", | |
| "Gradual (์ ์ง์ ๋๋ฆฌํํธ)", | |
| "Incremental (์ฆ๋ถ์ ๋๋ฆฌํํธ)", | |
| "Recurring (๋ฐ๋ณต์ ๋๋ฆฌํํธ)" | |
| ], | |
| label="๋๋ฆฌํํธ ์ ํ ์ ํ", | |
| value="Sudden (๊ธ๊ฒฉํ ๋๋ฆฌํํธ)" | |
| ) | |
| simulate_btn = gr.Button("์๋ฎฌ๋ ์ด์ ์คํ", variant="primary") | |
| with gr.Column(scale=2): | |
| plot_output = gr.Plot(label="๋๋ฆฌํํธ ์๊ฐํ") | |
| analysis_output = gr.Markdown(label="๋ถ์ ๊ฒฐ๊ณผ") | |
| # ์ด๋ฒคํธ ํธ๋ค๋ฌ | |
| simulate_btn.click( | |
| fn=simulate_and_visualize, | |
| inputs=drift_type_radio, | |
| outputs=[plot_output, analysis_output] | |
| ) | |
| # ์ด๊ธฐ ๋ก๋ | |
| demo.load( | |
| fn=simulate_and_visualize, | |
| inputs=drift_type_radio, | |
| outputs=[plot_output, analysis_output] | |
| ) | |
| if __name__ == "__main__": | |
| demo.launch() | |