I see that data is not enough to predict accurate results. For example below rows has same values of parameters but different results(last column). May be we need more parameters like person’s age and gender (or education level) to make our model more accurate.
Some of faulty rows from train set are given below. (first col is ID) (there are more bad rows)