I'm trying to solve a binary classification problem where 80% of the data belongs to class x and 20% of the data belongs to class y. All my models (AdaBoost, Neural Networks and SVC) just predict all data to be part of class x as this is the highest accuracy they can achieve.
My goal is to achieve a higher precision for all entries of class x and I don't care how many entries are falsely classified to be part of class y.
My idea would be to just put entries in class x when the model is super sure about them and put them in class y otherwise.
How would I achieve this? Is there a way to move the treshold so that only very obvious entries are classified as class x?
I'm using python and sklearn
Sample Code:
adaboost = AdaBoostClassifier(random_state=1)
adaboost.fit(X_train, y_train)
adaboost_prediction = adaboost.predict(X_test)
confusion_matrix(adaboost_prediction,y_test) outputs:
array([[ 0, 0],
[10845, 51591]])