Untitled
unknown
python
a year ago
839 B
4
Indexable
Never
import numpy as np from sklearn.metrics.pairwise import euclidean_distances from sklearn.decomposition import PCA import matplotlib.pyplot as plt np.random.seed(42) A = np.random.random((1000, 30)) A[:500,:] += 0.3 B = np.random.random((1, 30)) # A 是 1000 个样本, 每个样本 30 维 # B 是 1 个样本,同样 30 维 # 计算 B 到 A 所有样本的欧式距离 d d = euclidean_distances(B,A) # 找出距离最小的一个样本 idx = np.argmin(d,axis=1) # PCA 可视化 pca = PCA(n_components = 2) tmp = np.concatenate((A,B)) latent_pca = pca.fit_transform(tmp) plt.figure(1, figsize = (5, 5)) plt.scatter(latent_pca[:,0] ,latent_pca[:,1] , s = 1) plt.scatter(latent_pca[-1,0] ,latent_pca[-1,1] , s = 50) # 最后一个样本是 B plt.scatter(latent_pca[idx,0] ,latent_pca[idx,1] , s = 50) # 与 B 最近的样本 plt.show()