sklearn实例学习:comparing different clustering algorithms on toy datasets(5.6.27节)

  1. 本文是基于官方文档学习sklearn的一点记录和源代码解释。不对算法或代码原理做深入解释,只是大概说一下程序执行过程和函数的使用,再稍微记录遇到的问题。
  2. 参考材料都是随便搜的,如有更好的,欢迎补充~
  3. 因为不是专业的,有些地方翻译或理解会有问题,欢迎指正~

这个例子是sklearn learn官方手册中5.6.27小节的例子。在6个小数据集(toy dataset)上分别使用10种聚类算法的效果比较。 6个数据集包括不同的形状,比如同心圆状、互嵌的弯月形、随机产生的高斯分布、各向异性的高斯分布数据等。 10种聚类算法包括:MiniBatchKMeans,AffinityPropagation,MeanShift,SpectralClustering,Ward,AgglomerativeClustering,DBSCAN,OPTICS,Birch,GaussianMixture。

 

首先导入依赖包,都是常见的,其中warnings、itertools模块比较有特色。
warnings模块是python的告警模块(参考材料:\https://www.cnblogs.com/leomei91/p/7660928.html)。可以“产生、忽略告警”。
itertools模块是python用于迭代的模块(参考材料:https://www.cnblogs.com/fengshuihuan/p/7105545.html)。里面有很多用于高效循环和迭代的函数集合。

# 5.6.27
import time
import warnings 
import numpy as np
import matplotlib.pyplot as plt
from sklearn import cluster, datasets, mixture
from sklearn.neighbors import kneighbors_graph
from sklearn.preprocessing import StandardScaler
from itertools import cycle, islice

np.random.seed(0)

然后是代码主体。

# 第一步,定义样本数目,本例中6个数据集的样本数目都是1500
n_samples = 1500
# 第二步,生成数据集
# 第1个数据集,带噪音的同心圆形状数据集,参数noise表明大小,产生的数据集默认是二维的,因此形状为 (1500, 2)
# 官方说明:make a large circle containing a smaller circle in 2d
noisy_circles = datasets.make_circles(n_samples=n_samples, factor=.5, noise=.05)
# 第2个数据集,带噪音的互嵌弯月形状数据集,默认也是二维的,形状为 (1500, 2)
# 官方说明:make two interleaving half circles
noisy_moons = datasets.make_moons(n_samples=n_samples, noise=.05)
# 第3个数据集,符合高斯分布的随机数据集,默认是二维的,形状为 (1500, 2)
blobs = datasets.make_blobs(n_samples=n_samples, random_state=8)
# 第4个数据集,使用numpy的random模块生成的随机数,没有结构,形状为 (1500, 2)
no_structure = np.random.rand(n_samples, 2), None 
# 第5个数据集,先生成高斯分布的随机数据集,再对数据集做变化,生成各向异性的高斯分布数据集,形状为 (1500, 2) 
# anisotropicly distributed data
# 指定随机状态,随机状态random_state和随机种子rand.seed()的作用类似,固定随机序列,这样无论谁运行程序,生成的随机序列是一样的
random_state = 170
X, y = datasets.make_blobs(n_samples=n_samples, random_state=random_state)
transformation = [[0.6, -0.6], [-0.4, 0.8]]
# np.dot,矩阵点乘,只对训练数据X做变换,标签数据y不变
  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值