| import google.generativeai as genai |
| import gradio as gr |
|
|
| |
| GOOGLE_API_KEY = "AIzaSyAVnkLjvUEZaQA5a-oUxcxb3bZ5amZDYqM" |
|
|
| |
| genai.configure(api_key=GOOGLE_API_KEY) |
|
|
| |
| model = genai.GenerativeModel('gemini-1.5-flash-latest') |
|
|
| def generate_recommendation(problem_type, dataset_size, num_features, feature_type, priority, additional_info): |
| prompt = f""" |
| You are an expert machine learning engineer specializing in algorithm selection. |
| Recommend machine learning algorithms for a project with these characteristics: |
| |
| 1. Problem Type: {problem_type} |
| 2. Dataset Size: {dataset_size} |
| 3. Number of Features: {num_features} |
| 4. Feature Types: {feature_type} |
| 5. Priority: {priority} |
| 6. Additional Information: {additional_info} |
| |
| Provide: |
| 1. Top 3 ranked algorithm recommendations (most suitable first) |
| 2. For each algorithm: |
| - Brief justification |
| - Strengths for this use case |
| - Potential limitations |
| 3. Final recommendation with detailed comparison |
| |
| Format exactly like this: |
| |
| === TOP RECOMMENDATIONS === |
| 1. [Algorithm 1] |
| - Why: [Justification] |
| - Pros: [Strengths] |
| - Cons: [Limitations] |
| |
| 2. [Algorithm 2] |
| - Why: [Justification] |
| - Pros: [Strengths] |
| - Cons: [Limitations] |
| |
| 3. [Algorithm 3] |
| - Why: [Justification] |
| - Pros: [Strengths] |
| - Cons: [Limitations] |
| |
| === FINAL CHOICE === |
| Best Algorithm: [Algorithm Name] |
| - Why Best: [Detailed comparison] |
| - Why Others Are Less Suitable: [Explanation] |
| """ |
| |
| try: |
| response = model.generate_content(prompt) |
| return response.text |
| except Exception as e: |
| return f"Error: {e}\n\nTip: The API key may need enabling at https://aistudio.google.com/" |
|
|
| |
| with gr.Blocks(title="ML Algorithm Recommender", theme=gr.themes.Soft()) as demo: |
| gr.Markdown(""" |
| # Machine Learning Algorithm Recommender |
| Enter your project characteristics to get personalized algorithm recommendations |
| """) |
| |
| with gr.Row(): |
| with gr.Column(): |
| problem_type = gr.Textbox(label="Problem Type*", placeholder="classification, regression, clustering...") |
| dataset_size = gr.Textbox(label="Dataset Size*", placeholder="small, medium, large or specific number") |
| num_features = gr.Textbox(label="Number of Features*", placeholder="few, many, or specific number") |
| feature_type = gr.Textbox(label="Feature Types*", placeholder="numerical, categorical, mixed") |
| priority = gr.Textbox(label="Priority*", placeholder="accuracy, speed, interpretability") |
| additional_info = gr.Textbox(label="Additional Details (optional)", placeholder="Any other important information") |
| submit_btn = gr.Button("Get Recommendations", variant="primary") |
| |
| with gr.Column(): |
| output = gr.Textbox(label="Recommendation Results", lines=20, interactive=False) |
| |
| submit_btn.click( |
| fn=generate_recommendation, |
| inputs=[problem_type, dataset_size, num_features, feature_type, priority, additional_info], |
| outputs=output |
| ) |
|
|
| if __name__ == "__main__": |
| demo.launch() |