This document proposes a stock recommendation system using machine learning approaches. It uses five machine learning algorithms (linear regression, random forest, ridge regression, stepwise regression, and gradient boosted regression) to predict stock returns based on 20 financial factors. The system selects the top 200 stocks in each sector quarterly based on the model with the lowest mean squared error on past data. It then backtests portfolio strategies using the recommended stocks to demonstrate the system outperforms the S&P 500 index in terms of risk-adjusted returns. The key steps are data preprocessing, model training/selection, stock ranking/selection, and backtesting portfolio strategies.