使用一列使用 K-Means 进行异常值检测

数据挖掘 Python k-均值 异常检测
2022-02-24 17:24:59

我已经完成并读取了一个 csv 文件,然后使用 K-means 绘制了单个列的值

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from matplotlib import style
style.use("ggplot")
from sklearn.cluster import KMeans

data=pd.read_csv(r'Plot_file.csv', encoding='unicode_escape', sep=';')
data.head()

feature_names = ['Plot_Column]
X = np.asarray(data[feature_names])

from sklearn.cluster import KMeans

labels = KMeans(5, random_state=10).fit_predict(X)
plt.scatter(X[:, 0], X[:, 0], c=labels,
    s=50, cmap='rainbow');


输出看起来像这样,它是线性的,因为在对一列进行聚类时,它只能查看该列中值之间的相对距离,并且在任何图表上始终是线性的,因为它只聚类一维

在此处输入图像描述

在这种情况下,我将如何检测异常?

我从中聚类值的列有大约 12000 行和不同的数字。

1个回答

如果你有一个单调的数据,为什么需要使用 K-means?

在这种情况下,为了检测异常值,我建议创建一个简单的直方图,然后根据其形状,您可以直观地找到异常值。要获得适当的异常值阈值,您可以使用np.quantile()函数。