K-means 异常检测散点图
下面的代码从数据集中获取单个列,然后将 50 个异常添加到数据集中,这些异常比数据集的最大值要大得多。
import pandas as pd
import numpy as np
import pandas as pd
from sklearn.cluster import KMeans
import matplotlib.pyplot as plt
import seaborn as sns
X=pd.read_csv('C:/Files/dataset.csv', sep=';', encoding='latin1' )
#Adding the anomalies
for i in range(0, 50):
X.append(X.my_column.max() * (10 + pd.np.abs(pd.np.random.normal())))
X = pd.np.array(X)
clf = KMeans(n_clusters=2, init='k-means++', max_iter=300, n_init=10, random_state=1)
clf.fit(X.my_column.values.reshape(-1, 1))
X_prd = clf.predict(X.my_column.values.reshape(-1, 1))
plt.scatter(X.index, X.my_column, c=X_prd)
下图显示了结果,我期望异常值集群与正常数据相比更清晰。
为什么这样 ?
因为为了创建异常,我取了my_column的最大值,即 9689。
我被困在这里,我不知道从哪里开始,所以我会很感激一些帮助。
目标是 K 意味着检测这些添加的异常。