interpretml / DiCE

Generate Diverse Counterfactual Explanations for any machine learning model.
https://interpretml.github.io/DiCE/
MIT License
1.37k stars 188 forks source link

Counterfactuals dataframes have rounded target values #440

Open Mchristos opened 5 months ago

Mchristos commented 5 months ago

I've noticed that the counterfactuals dataframes I get from my CounterfactualExamples objects have the target value rounded to the nearest decimal place. This makes the results useless to me, since in my dataset has target values very close to zero, and the distribution is very skewed towards zero. I.e. many data points occur between 0.0 and 0.1.

I've included a modified version of this getting started notebook which shows that example.final_cfs_df (where example: CounterfactualExamples) contains rounded target values, but examples.visualize_dataframe() clearly shows that the higher precision target value is stored somewhere.

image
Mchristos commented 5 months ago

For future travellers: I've found that using example.final_cfs_df_sparse returns the desired precision in the predictions. I haven't found a way to keep the original precision in the "instance" df

Mchristos commented 4 months ago

As for the "instance" dataframe, my best solution was to simply use the original dataframe passed to DiCE rather than use it's output. As for the predicted target value, simply do prediction with your model on your "instance" data.