# Data

I have one dataset with $$1500$$ data points, each with $$\sim 23 000$$ features (gene expression data, if that matters). However, I've split this dataset into a labelled training set of size 1000, and a test set for which I don't have the labels of size 500.

# Goal

My goal is to train a model on the first set in order to obtain the best possible balanced accuracy when predicting the labels on the test set.

# Current results

By simply training a model on the training set, I'm not able to reach a very high score (when performing stratified $$k$$-fold cross-validation on the training set, as I cannot test my performance on the test set), regardless of which type of classifier I've used various models: SVM, decision tree, random forest, NN, LDA, QDA, KNN, AdaBoost, XGBoost. So far, the best performing are an MLP model and a (boosted) decision tree. However, I suspect that if I somehow find a way to give more weight to data in the training set that lies close to the data in the test set, I should be able to make a more performant model. However, I'm unsure as to how I should do this.

• I can use any machine learning model (in Python or R), though I prefer the former by far (using sklearn).