我怎样才能生成三个离群点,使它们明显远离 python 中的正常数据?

How can i generate three outlier points such that they are apparently far away from the normal data in python?

我正在使用 make_moons 数据集,我正在尝试实施异常值检测算法。这就是为什么我要生成远离正常数据的 3 个点,并证明它们是否异常。这3个点应该是从我的数据中随机抽取的,应该尽量远离正常数据。 我的算法会将那个点与销售价值之间的距离进行比较,并确定它是否是异常值。 我知道其他资源可以做到这一点,但我的具体问题是我的数据集。我找不到适合我的数据集的解决方案

这是我定义数据集并拟合 K-Means 的代码(我必须使用 K-Means 拟合数据):

data = make_moons(n_samples=100,noise=0, random_state=0)
X,y=data
n_clusters=10
kmeans = KMeans(n_clusters = n_clusters,random_state=10)
kmeans.fit(X)
centroids = kmeans.cluster_centers_
labels = kmeans.labels_

请问,我如何找到数据中最远的 3 个点,以将其用于离群值检测?

如评论中所述,您应该定义一个标准来对异常值进行分类。无论哪种方式,在下面的代码中,我从 X 中随机选择了三个条目并将它们乘以 1,000,因此无论您选择什么定义,这肯定会使它们成为异常值。

# Import libraries
import numpy as np
from sklearn.datasets import make_moons

# Create data
X, y = make_moons(100, random_state=123)

# Randomly select 3 row numbers from X
np.random.seed(5)
idx = np.random.randint(low=0, high=len(df[0]) + 1, size=3)

# Overwrite the data from the randomly selected rows
for i in idx:
    scaler = 1000 # Change this number to whatever you need
    X[i] = X[i] * scaler

注意:idx有小概率会出现重复。 np.random.seed(5) 不会发生这种情况,但如果您选择另一个种子(或选择根本不使用一个种子)并获得重复,只需尝试另一个或重复直到您没有重复。