Peter-Devine / test_repo_0

A repo purely for testing Github API functions
0 stars 0 forks source link

Usage with given features matrices #4

Open Peter-Devine opened 4 years ago

Peter-Devine commented 4 years ago

Hi,

Your implementation looks promising, but I am not sure how to use it. Suppose we have age, gender and height(in cm) and we need to predict the weight (in kg) of people.

So we have for training set the following csv: age,gender,height,weight 18,m,180,80 40,m,175,85 25,f,165,50

and we load it into a feature matrix:

float[][] trainFeatures =  new float[][] {
 { 18, 1, 180 },
 { 40, 1, 175 },
 { 25, 0, 165 }
}

and into a vector of target values: float[] targets = new float[] { 80, 85, 50 }

and we also have a test set for which we need to predict the target values: 22,m,175 30,f,160

which we load into a feature matrix:

float[][] testFeatures =  new float[][] {
 { 22, 1, 175 },
 { 30, 0, 160 }
}

Can you please give an example of how the xgboost-predictor can be applied to such data to train on the first set and predict on the second set?

Thank you

Doron

Peter-Devine commented 4 years ago

Hi,

You cannot use xgboost-predictor to build a model but you can use to predict. xgboost-predictor provides only prediction functions.

If you want to build a model on JVM, you should use XGBoost4J.

To predict weight using xgboost-predictor, you should:

Predictor predictor = new Predictor(
  new java.io.FileInputStream("/path/to/xgboost-model-file"));

for (float[] f : testFeatures) {
  FVec fv = FVec.Transformer.fromArray(f, false /* do not treat zero element as N/A */);
  double[] prediction = predictor.predict(fv);
  double predictedWeight = prediction[0];
}
Peter-Devine commented 4 years ago

Thank you for your answer. I was hoping to use this project INSTEAD of XGBoost4J and not depending on it...