Sorts the elements based on their average shapley values or in ascending order by calling
df.sort_index(axis=1)
Args:
ascending (bool):
I noticed although in the DataFrame itself the Shapley values are at their right places, but the order of
elements are shuffled (probably during the calculation). This causes headache and is potentially dangerous
if you're using a list of indices as elements that you'll translate to np or normal lists within your game.
so assuming the elements were in ascending order like np.arange or range, this will save you from the pain.
shapley_table (pd.DataFrame):
Unsorted shapley table.
Returns:
Type |
Description |
DataFrame
|
|
Source code in msapy/utils.py
| @typechecked
def sorter(shapley_table: pd.DataFrame, ascending: Optional[bool] = False) -> pd.DataFrame:
"""
Sorts the elements based on their average shapley values or in ascending order by calling:
`df.sort_index(axis=1)`
Args:
ascending (bool):
I noticed although in the DataFrame itself the Shapley values are at their right places, but the order of
elements are shuffled (probably during the calculation). This causes headache and is potentially dangerous
if you're using a list of indices as elements that you'll translate to np or normal lists within your game.
so assuming the elements were in ascending order like np.arange or range, this will save you from the pain.
shapley_table (pd.DataFrame):
Unsorted shapley table.
Returns:
(pd.DataFrame): sorted shapley table.
"""
if ascending:
return shapley_table.sort_index(axis=1)
else:
return shapley_table.reindex(shapley_table.mean().sort_values().index, axis=1)
|