Machine Learning Application
Web-based wine review & recommender system using Django and Scikit-learn. Click here to the web app
- Django+Bootstrap
- Sqlite
- Pandas
- SciPy
- Scikit-learn.
- Algorithms Used for reccomendations: Clustering User Data and K-Means Clustering
You need to install these libraries listed in the requirement.txt
Django~=3.1
numpy~=1.19.1
Pandas~=1.1.0
SciPy~=1.5.2
Scikit-learn~=0.23.2
django-bootstrap4~=2.2.0
django-registration-redux~=2.8
Clone this repo to your local machine using git clone
git clone https://github.com/dylan-kuo/wine-recommendation.git
python manage.py createsuperuser
python manage.py runserver
https://localhost:8000/reviews
This Recommender System (I call it WineBot) uses machine learning to determine which wine a user is most likely to try and serve them more of it, by finding wines that are liked by people with similar wine preferences.
-
When users open WineBot for the first time, they are shown a list of 12 latest wine reviews & scores.
-
Users need to register their own account first in order to get the wine suggestion.
-
At first, WineBot will just return wines a user has never reviewed before.
-
Once users leave review & score to wines. The algorithm will collect the data about the user and is able to map a user's preferences in relation to similar users and group them into "clusters" based on similar assigned scores of corresponding wines.
-
Using machine learning, the algorithm sends wines to users based on their proximity to other clusters of users and won't send the one that the user already tried (ie. already left review & scores)
3. Click on the Get Wine Suggestions! button and you will be provided a list of wine suggestions by the algorithm.
This webapp can be a superb recommender without being an real wine expert! It just needs to find a person (other users on the webapp) with similar preferences to our friend. Then ask the second person for his favorite wines and suggest them to our first friend, not including those that our first friend have already tried.
In order to do this task, you need to leave at least one review and give it a score (if not, the app will just recommend the items from all users). The app will pre-cluster all the users in the system by its wine reviews scores. By doing so we will have groups (clusters) of similar users. Then, when a user asks for recommendations, we will look for them in the cluster this user is in. (all the users in that cluster share the similar taste.) The app will provide the user suggestions other users in the same cluster have.