如何从 imblearn 中的 RandomUnderSampler 获取样本索引

How to get sample indices from RandomUnderSampler in imblearn

有谁知道 if/how 可以在使用 imblearn 的 RandomUnderSampler 进行欠采样后获取所选样本的索引? 曾经有一个参数 "return_indices=True",现在已从新版本中删除,并被假设为一个属性 "sample_indices_"。但是,如果我尝试使用该属性,它就不起作用(请参见下面的代码)。我正在使用 imblearn 版本 0.6.2.

russs = RandomUnderSampler(random_state=0,sampling_strategy={6: 600}).fit(X_train_point,y_train_point)
russs.sample_indices_

AttributeError                            Traceback (most recent call last)
<ipython-input-78-8397ba40f19b> in <module>
      1 russs = RandomUnderSampler(random_state=0,sampling_strategy={6: 600}).fit(X_train_point,y_train_point)
----> 2 russs.sample_indices

AttributeError: 'RandomUnderSampler' object has no attribute 'sample_indices'

也面临这个..尽管文档说 0.4 版后已弃用:return_indices 已弃用。请改用属性 sample_indices_。 我恢复到 0.5.0 并且能够使用旧的 return_indices=True 参数。

pip install imbalanced-learn==0.5.0

我也找到了解决方法。由于欠采样仅基于 y_vector,因此可以添加一个反变量而不是 x-vector/array 并将其编写如下:

counter=range(0,len(y_train_point))
index,y_resampled=RandomUnderSampler(random_state=0,sampling_strategy={6:600}).fit(counter,y_train_point)
X_resampled=X_train_point[index]

昨天遇到这个问题,最后可以正常访问属性

确保你没有忘记最后的下划线,从错误消息看来你有。

应该是

russs.sample_indices_

没有

russs.sample_indices