0

我正在尝试获取一些被归类为异常值的行,并从原始数据集中删除这些行,但我无法使其工作 - 你们知道出了什么问题吗?我尝试运行以下代码,并收到此错误“ValueError:索引数据必须是一维的”

#identify outliers
pred = iforest.fit_predict(x)
outlier_index = np.where(pred==-1)
outlier_values = x.iloc[outlier_index]
#remove from dataset (dataset = x)
x_new = x.drop([outlier_values])

outlier_values 原始数据集

4

2 回答 2

0

您链接的 outlier_values 是数据框而不是索引的平面列表,因此会相应地引发值错误。

您需要做的是从 outlier_values 数据框中提取索引列表,使用:

index_list = outlier_values.index.values.tolist() 

到索引列表中,然后从 x 中删除这些索引。

就像在这个答案中

于 2021-09-08T15:32:32.267 回答
0

尝试这个

#identify outliers
pred = iforest.fit_predict(x)

# np.where returns a tuple of ndarray we access the first dimension
outlier_index = np.where(pred==-1)[0] 

outlier_values = x.iloc[outlier_index]

#remove from dataset (dataset = x)
x_new = x.drop([outlier_values])

在您的情况下,您可以直接outlier_index通过

#identify outliers
pred = iforest.fit_predict(x)
outlier_index = np.where(pred==-1)[0]
df = df.drop(outlier_index)
于 2021-09-08T15:48:11.070 回答