使用 z-score 进行离群值检测,但是
outlier dedection with z-score, but
我用 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 分数高于 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))
数据的第 8 个元素的 z 分数高于 1.5,它已经写在输出上,我对此没意见,但第 0 个元素的 z 分数为 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])
我用 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 分数高于 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))
数据的第 8 个元素的 z 分数高于 1.5,它已经写在输出上,我对此没意见,但第 0 个元素的 z 分数为 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])