import matplotlib.pyplot as plt
from itertools import cycle, islice
import numpy as np
from sklearn.cluster import KMeans
from sklearn import datasets
# 生成数据集defgenTwoCircles(n_samples=1000):
x,y = datasets.make_circles(n_samples, factor=0.5, noise=0.05)return x, y
# 通过 KNN 算法,计算相似度矩阵defmyKNN(S, k, sigma=1.0):
N =len(S)
A = np.zeros((N,N))for i inrange(N):
dist_with_index =zip(S[i],range(N))
dist_with_index =sorted(dist_with_index, key=lambda x:x[0])
neighbours_id =[dist_with_index[m][1]for m in