Create a simple internal search interface for estimating the average market value for a year / make / model based on market data file of sold cars
[http://test.com] http://test.com
- "Import Service" imports all market data into database
- "Data Training Service" trained all data and generate .pkl files
- "Predict Service" serves car value estimation as an INTERNAL rest api
- "Form Submission Service" handles form data as a PUBLIC rest api
- "Import Service" parse the .csv file to write all valid data into database
- "Data Training Service" trained all data and generate .pkl files
- User submits form data (year + make + model + mileage)
- js validates required fields and send to "Form Submission Service"
- "Form Submission Service" receives data and validate make + model exist in database and send to "Prediction Service"
- "Prediction Service" receives data and load .pkl file to estimate car price and send back
- "Form Submission Service" receives prediction and send back to user
Migration file is: database migration
- car_makes (id, name, ...) stores car make data
- car_models (id, car_make_id, name, ...) stores car model data
- deals (id, name, address, city, state, zip...) stores dealer info
- car_solds (id, car_model_id, dealer_id, year, listing_price_in_cents, listing_mileage, ...) stores sold cars info
-
Trained Machine Learning models using Random Forest Regression: car_value_predict,py
- load sold car from database based on "make"
- clean data to remove outlier prices
- train data based on age of car + mileage
- each car make will have a separate trained model
-
Optimizations
- find standard car info: for ex. model, make, etc.
- clean current data and classifier them into standard categories
- train data based on more metrics: for ex. sold location, fuel type, color, etc.
- generate trained models with more metrics: for ex make+model, make+model+location, etc.
Notes:
- Jupter notebook to demonstrate the algorithm is: car_value_predict_note
- Jupter Sample result is car_value_predict_note_result
This project is divided into:
- VueJs + Bootstrap to handle webpage
- Php with Laravel to handle data import script and rest api of form submission
- Python with Flask to handle predict rest api
- Python with sklearn to train market sold cars data
- Python with Jupter notebook to demonstrate the algorithm
- vue framework
- jest unit test
- laravel framework
- database migration
- seeds
- layer pattern
- form request validation
- console command
- service provider
- unit tests
- mix
- flask framework
- request validation
- exception handling
- machine learning
- unit test