Estimate the market value of an Edmonton home from its size, layout and age.
https://pricelens.streamlit.app
- Price estimates from four inputs: size, bedrooms, bathrooms, year built
- A user-friendly Streamlit interface for quick estimates.
- Input bounds match the training data range
- Model parameters saved after training, so predictions are instant
Multivariable linear regression trained with gradient descent, implemented from scratch in NumPy. Features: square footage, bedrooms, bathrooms and year built. Inputs are z-score normalized using the training set's mean and standard deviation.
Trained on 1,653 Edmonton listings after outlier filtering.
- Frontend: Streamlit
- Backend: Python
- Data Processing: pandas, NumPy
- Training Diagnostics: Matplotlib
git clone https://github.com/lxeu/PriceLens.git
cd PriceLens
pip install -r requirements.txt
streamlit run app.pyTo retrain the model from the raw data:
python src/train.pyThe model is developed in edmonton-housing-price-predictor. I started from a single-variable regression and built up to the multivariable model used here.
- No sense of location, which is the single most impactful feature that is missing.
- Systematically underestimates homes above roughly $1M
- Trained on a single market snapshot
- Neighbourhood as a feature
- Vectorized gradient descent
- Half baths and garages as features
