So I have a dataset containing the results of executing problem instances with different given solver strategies. Simplified example:
| Problem_instance | Problem_Size | Used_Solver | Cost | | P1 | 50 | A | 75 | | P1 | 50 | B | 125 | | P1 | 50 | C | 225 | | P1 | 50 | D | 100 | | P2 | 150 | A | 165 | | P2 | 150 | B | 360 | | P2 | 150 | C | 275 | | P2 | 150 | D | 45 | | P3 | 25 | A | 35 | | P3 | 25 | B | 65 | | ... | ... | ... | ... |
I'm trying to use machine learning to predict the best performing Solver for a given problem instance. In data processing stage, I need to standardize or scale my data, but I'm not sure how to this best.
Firstly, I'm not sure which sklearn's Scaler to use (StandardScalar/ MinMaxScaler/..).
Secondly, I'm confused how to handle the different records for each instance. When I group the data first based on problem_instance and then use a MinMaxScaler, the record with Cost = 0 would be the best solution for this problem and Cost=1 the worst. But if I use the same strategy to scale the Problem_Size this would be equal to 0 everywhere. On the other hand if I use a global scaling, the information about which Solver is the best for each instance is lost.
Can someone help me how to handle the data preprocessing for this problem?