The heart is the most vital organ of any living being. It gives life and ensures blood reaches the body. And yet heart diseases are the leading cause of death these days. Heart Diseases not only involve strokes and heart attacks but also lesser-known yet deadly diseases like (like (i) Aortic stenosis - a condition in which the aortic valve, which regulates blood flow out of the heart, becomes narrowed, making it difficult for blood to flow through; (ii) Pulmonary hypertension - high blood pressure in the pulmonary artery, which can cause the right side of the heart to become enlarged, leading to heart failure; and Atrial fibrillation, Mitral valve prolapse, Hypertrophic cardiomyopathy, etc. What makes these diseases more deadly is the fact that these are asymptomatic diseases, i.e, they may not show the symptoms until it is too late. Hence requiring regular check-ups from doctors. But even still there is a very high chance of error in predicting the disease accurately due to factors such as (i) expensive tests that most people can't afford, (ii) Misinterpretation of test results, (iii) Failure to consider the patient's previous symptoms and history, which could be due to patients not disclosing shameful history with doctors. Many of the errors can be narrowed down to the possibility of human error, which is what we are trying to eliminate through this paper. In this paper, we are going to see how we can improve the efficiency of predicting heart diseases. We are going to see what effect using cross-validation and feature selection methods are going to have on our accuracy. In this paper, we analyzed the efficiency of machine learning algorithms like SVM, Decision Trees, Random Forests, and Neural Networks in predicting heart diseases using the confusion matrix. Through the analysis, it was found that the Random Forest model provided the best prediction accuracy of 83%.