Knowing what types of enzymes a molecule will interact with can aid drug development by minimizing side effects due to unwanted interactions. In this project, we built and interpreted models for classifying enzyme substrates. We utilized the machine learning technique XGBoost in Python to build a predictive model for each enzyme class using the original molecular data as well as top linear combinations of the data obtained using Principal Components Analysis. We will discuss the process of developing code to automatically tune the parameters of XGBoost to optimize the model. We will also present examples of how to interpret these models by writing code to visualize the impact of variables in each model and identifying common factors in the top contributing variables of significant principal components to characterize each enzyme class. For example, we found that the probability of a molecule interacting with oxidoreductase enzymes is positively associated with the number of nonpolar regions. A particular descriptor is NOCount, the number of (polar) NO groups in the molecule, which was negatively associated with the probability of interacting with oxidoreductases.