from pylab import *
from sklearn import datasets
import matplotlib.pyplot as plt
import numpy as np
from scipy.spatial.distance import pdist,squareform
X, y = datasets.make_blobs(n_samples=1000, n_features=2, center_box=(-20, 20), centers=4, cluster_std=[4, 4, 4, 4], random_state=3)
for i, ele in enumerate(y):
if ele == 3:
y[i] = 0
elif ele == 0:
y[i] = 2
elif ele == 2:
y[i] = 3
def D(a, b):
return np.sqrt(sum((a - b) ** 2))
N = X.shape[0]
dist_list = pdist(X=X,metric='euclidean')
cut_idx = int(len(dist_list) / 100) * 5
ordidx = np.argsort(dist_list)
cut_dist = dist_list[ordidx[cut_idx]]
num = 70
C, D = np.meshgrid(linspace(-35,35,num),linspace(-35,35,num))
rho_matric = np.zeros((num,num))
for i in range(num):
for j in range(num):
d = np.array([C[i,j],D[i,j]])
for r in range(N):
if np.sqrt(sum((d - X[r]) ** 2)) <= cut_dist:
rho_matric[i,j] += 1
rho_list = []
for i in range(num):
for j in range(num):
rho_list.append(rho_matric[i,j])
maxrho = max(rho_list)
Python:根据散点局部密度进行等高线展示
最新推荐文章于 2024-01-05 21:42:06 发布