Inspiration
Given the recent surge in AI, we were inspired to use some Machine Learning in our project. Seeing as March Madness is going on, we chose to take basketball as our sport and do something with it. From there, it's quite simple to see how we chose to predict basketball matches.
What it does
Net Prophet displays a list of upcoming NBA matches to the user. The user sees the two teams, the time, and a prediction of who we have predicted to win using ML.
How we built it
Our front-end is built using Expo and React Native. This allowed us to get a working front-end very quickly. The back-end machine learning is made with Python and scikit-learn. Scikit-learn has plenty of ML models that we were able to take advantage of on our basketball dataset which we built by scraping basketball-reference.com. A scraper would take a URL for a specific match and fetch the stats for both teams in a match (points, assists, rebounds, etc.).
Challenges we ran into
The main challenge was time. We built a web scraper to get the box score for each basketball game. But since there are 2-6+ games played on a given day, every day of the week, there was a lot of matches to go through. For whatever reason, scraping the URL could take 2 seconds to 50 seconds depending on how it handled certificates. There didn't seem to be a way around this so the time it took to build the dataset was out of our hands.
Accomplishments that we're proud of
We were quite proud of just completing the project in 24 hours. Our tenacity was certainly tested at times, but we pushed through. Also, we thought the name was a good pun.
What we learned
The main thing two of us learned was how to make a front-end with Expo. We didn't have much experience with React, and certainly not Expo. We also learned how to use majority voting in scikit-learn
What's next for Net Prophet
If we were to continue working on Net Prophet, we would want to automate most of the data gathering and analysis. Right now, each URL is passed as an arg to a scraping function. Eventually, we are able to pass the whole month of matches and it will automatically scrape the box scores in the month. Additionally, some of the data from the Python scripts are then hardcoded into a .js file for use. This shouldn't be the case and instead, the javascript component should be able to read the file and parse it properly. A larger dataset would also be nice and using more features is an option to explore.

Log in or sign up for Devpost to join the conversation.