The BJJ Technique Recommender System is an advanced Python application designed to provide personalized Brazilian Jiu-Jitsu (BJJ) training recommendations. It utilizes collaborative filtering and matrix factorization to suggest techniques based on user preferences, skill level, and feedback. The system also generates periodized training plans and weekly schedules, taking into account the user's weaknesses or specific training goals.
- User registration and login system
- Personalized technique recommendations using matrix factorization
- Dynamic user database for storing profiles and technique ratings
- Periodized training plan generation
- Detailed weekly training schedule creation
- Incorporation of user-specified weaknesses or training goals
- Technique rating system for continuous improvement of recommendations
- Graphical User Interface (GUI) for easy interaction
- Comprehensive explanations of recommended techniques and training focus areas
- Python 3.7+
- NumPy
- scikit-learn
- PyQt5
- pandas
- scikit-surprise
- SQLite3
- Werkzeug
-
Clone this repository:
git clone https://github.com/yourusername/bjj-recommender.git cd bjj-recommender -
Install the required packages:
pip install numpy scikit-learn PyQt5 pandas scikit-surprise werkzeug
Run the main script:
python Recommender_4_bjj.py
This will launch the GUI application. Follow these steps:
- Register a new account or log in with existing credentials
- Enter your primary BJJ skill (e.g., "guard", "submissions", "takedowns")
- Select your BJJ level (Beginner, Intermediate, Advanced)
- Input your preferred techniques, separated by commas
- List your weaknesses or specific training goals, separated by commas
- Click "Get Recommendations"
- After trying recommended techniques, you can rate them for improved future recommendations
The system will display:
- Recommended techniques with explanations
- A periodized training plan
- A detailed weekly training schedule
The system now offers detailed, level-specific Strength & Conditioning plans using various methodologies:
- Dynamic Effort Method
- Conjugate Method (Westside Barbell)
- Linear Periodization
- Undulating Periodization
- Block Periodization
Each plan is tailored to the user's skill level (beginner, intermediate, advanced) and includes specific blocks focusing on:
- Hypertrophy (muscle building)
- Strength development
- Power and explosiveness
Plans provide detailed weekly schedules, exercise recommendations, and guidelines for progression over a 12-week period.
-
User Management: The system uses SQLite to store user profiles, including their skills, level, and technique ratings.
-
Matrix Factorization Recommender: Utilizes collaborative filtering to suggest techniques based on user preferences and similar users' ratings.
-
Periodized Training Plan: Generates a multi-week plan tailored to the user's skill level and incorporating focus on specified weaknesses.
-
Weekly Training Schedule: Creates a detailed weekly plan with specific focus areas for each day, including recommended techniques and explanations.
-
Weakness Integration: Incorporates user-specified weaknesses or goals into both the periodized plan and weekly schedule.
-
Feedback Loop: Users can rate techniques, which are stored in the database and used to improve future recommendations.
Recommender_4_bjj.py: Main script to run the applicationrecommender_bjj_func.py: Contains core functionality, database operations, and GUI implementationbjj_recommender.db: SQLite database file storing user data and ratings
You can customize the system by modifying:
- The
techniquesdictionary inrecommender_bjj_func.pyto add or change BJJ techniques - The
create_periodized_planandcreate_weekly_planfunctions to adjust training structures - The
MatrixFactorizationRecommenderclass to tweak the recommendation algorithm
Contributions to improve the BJJ Technique Recommender System are welcome. Please follow these steps:
- Fork the repository
- Create a new branch for your feature
- Commit your changes
- Push to the branch
- Create a new Pull Request
This project is open-source and available under the MIT License.
- Thanks to the scikit-surprise team for their matrix factorization implementation
- PyQt5 for providing the GUI framework
- The BJJ community for inspiration and technique knowledge