Quantcast
Channel: Active questions tagged python - Stack Overflow
Viewing all articles
Browse latest Browse all 13951

Why do I get an Index Error in MACE for TimeSeries XAI?

$
0
0

for a university project I am currently testing XAI techniques for TimeSeriesData. In particular I am testing MACE and SHAP from OmniXAI MACE from OmniXAI. Even though implementing and running SHAP works completely fine, I am getting an error posted further down. While implementing I oriented myself by the tutorials posted on their website.

This is my implementation of SHAP. It works completely fine for me.

train_df = pd.DataFrame(df.iloc[:1000])test_df = pd.DataFrame(df.iloc[1000:1500])THRESHOLD = np.percentile(train_df.values, 90)def detector(ts: Timeseries):    anomaly_scores = np.sum((ts.values > THRESHOLD).astype(int))    return anomaly_scores / ts.shape[0]explainers = ShapTimeseries(    training_data = Timeseries.from_pd(train_df),    predict_function=detector,    mode="anomaly_detection")explanations = explainers.explain(Timeseries.from_pd(test_df))#Darstellen der Explanationsfig = explanations.plot(index=0, max_num_variables_to_plot=4)dict = explanations.get_explanations()

This is my implementation of MACE:

train_df = pd.DataFrame(df.iloc[:1000])test_df = pd.DataFrame(df.iloc[1000:1500])threshold = np.percentile(train_df.values, 90)def detector(ts: Timeseries):    anomaly_scores = np.sum((ts.values > threshold).astype(int))    return anomaly_scores / ts.shape[0]explainers = MACEExplainer(    training_data = Timeseries.from_pd(train_df),    predict_function=detector,    mode="anomaly_detection",    threshold = 0.1)explanations = explainers.explain(Timeseries.from_pd(test_df))fig = explanations.plot(index=0, max_num_variables_to_plot=18)plt.savefig("mace.png")

While running this, I get the following error:

 File "neural.py", line 111, in mace  explanations = explainers.explain(Timeseries.from_pd(test_df)) File "/home/y/.local/lib/python3.8/site-              packages/omnixai/explainers/timeseries/counterfactual/mace.py", line 306, in            explainself._build_explainer(X.ts_len) File "/home/y/.local/lib/python3.8/site-      packages/omnixai/explainers/timeseries/counterfactual/mace.py", line 188, in       _build_explainerself._candidates(ts_len) File "/home/y/.local/lib/python3.8/site-             packages/omnixai/explainers/timeseries/counterfactual/mace.py", line 156, in       _candidates values = transformer.invert(np.array([range(n_bins)] *       ts.shape[1]).T) File "/home/y/.local/lib/python3.8/site-      packages/omnixai/preprocessing/encode.py", line 40, in invert  return self.encoder.inverse_transform(x) File "/home/y/.local/lib/python3.8/site-      packages/sklearn/preprocessing/_discretization.py", line 425, in       inverse_transform  Xinv[:, jj] = bin_centers[np.int_(Xinv[:, jj])] IndexError: index 1 is out of bounds for axis 0 with size 1

I am completely stuck and don't know how to approach this problem any further. Do you have any tips?


Viewing all articles
Browse latest Browse all 13951

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>