微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 z-score 进行异常值检测,但是

如何解决使用 z-score 进行异常值检测,但是

我用 Python 编写了一个代码来进行异常值检测。我使用 z-score 方法来做到这一点。你可以在下面看到我的数据和我的代码

data =[5,10,15,20,25,30,36,22]
data.append(180)
data = pd.DataFrame(data,columns = ["Data"])
z = np.abs(stats.zscore(data))
print(z)
print(np.where( z > 1.5))

我编写了这段代码来检测异常值。实际上,我想获得 z-score 高于 1.5 的值的索引。但我认为输出有问题。

Data
0  0.649600
1  0.551506
2  0.453412
3  0.355318
4  0.257224
5  0.159130
6  0.041417
7  0.316080
8  2.783688
(array([8],dtype=int64),array([0],dtype=int64))

数据的 z-score 的第 8 个元素高于 1.5 并且它已经写在输出上,我对此没问题,但第 0 个的 z-score 为 0.64。我做错了什么?

解决方法

你可以这样做:

import numpy as np
from scipy import stats

data =[5,10,15,20,25,30,36,22]
data.append(180)

z = stats.zscore(data)

np.where(z > 1.5)[0]

输出:

array([8])

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。