几种方法的训练和对比
概述
聚类算法,将数据重组为按某种方式排列的多个子集,以便从数据中推断出有意义的结构。
根据处理数据时所使用的度量方法或作出的假设,我们可以将聚类算法分成不同的种类。
这次我们python测试的为:k均值,觉知漂移,高斯混合,层次算法(Ward链接)
测试数据集
我们生成一个数据集,用于比较几种聚类方法。
我们从均值为u1=[10,0],u2=[0,10],方差为δ1=δ2=[[3,1],[1,4]]的两个二维正态分布,随机选取数据点形成数据集
python代码为:
from matplotlib import pyplot as plt
import numpy as np
np.random.seed(4711) # for repeatability
c1=np.random.multivariate_normal([10,0],[[3,1],[1,4]],size=[100,])
l1=np.zeros(100)
l2=np.ones(100)
c2=np.random.multivariate_normal([0,10],[[3,1],[1,4]],size=[100,])
#add noise:
np.random.seed(1) # for repeatability
noiselx=np.random.normal(0,2,100)
noisely=np.random.normal(0,8,100)
noise2=np.random.normal(0,8,100)
c1[:,0]+=noiselx
c1[:,1]+=noisely
c2[:,1]+=noise2
fig=plt.figure(figsize=(20,15