03 聚类算法 - K-means聚类
04 聚类算法 - 代码案例一 - K-means聚类
05 聚类算法 - 二分K-Means、K-Means++、K-Means||、Canopy、Mini Batch K-Means算法

常规操作:

import time
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
from sklearn.cluster import MiniBatchKMeans, KMeans
from sklearn.metrics.pairwise import pairwise_distances_argmin
from sklearn.datasets.samples_generator import make_blobs  ## 设置属性防止中文乱码
mpl.rcParams['font.sans-serif'] = [u'SimHei']
mpl.rcParams['axes.unicode_minus'] = False

一、初始化三个中心
centers = [[1, 1], [-1, -1], [1, -1]]
clusters = len(centers)  #聚类的数目为3    

产生3000组二维的数据,中心是意思三个中心点,标准差是0.7

X, Y = make_blobs(n_samples=3000, centers=centers, cluster_std=0.7, random_state=28)  

二、构建kmeans算法
k_means = KMeans(init='k-means++', n_clusters=clusters, random_state=28)
t0 = time.time() #当前时间
k_means.fit(X)  #训练模型
km_batch = time.time() - t0  #使用kmeans训练数据的消耗时间
print ("K-Means算法模型训练消耗时间:%.4fs" % km_batch)

K-Means算法模型训练消耗时间:0.1861s


三、构建MiniBatchKMeans算法
batch_size = 100
mbk = MiniBatchKMeans(init='k-means++', n_clusters=clusters, batch_size=batch_size, random_state=28)
t0 = time.time()
mbk.fit(X)
mbk_batch = time.time() - t0
print ("Mini Batch K-Means算法模型训练消耗时间:%.4fs" % mbk_batch)

Mini Batch K-Means算法模型训练消耗时间:0.1511s


四、预测结果
km_y_hat = k_means.predict(X)
mbkm_y_hat = mbk.predict(X)
五、获取聚类中心点并聚类中心点进行排序(方便后面画图)
#输出kmeans聚类中心点
k_means_cluster_centers = k_means.cluster_centers_#输出mbk聚类中心点
mbk_means_cluster_centers = mbk.cluster_centers_
print ("K-Means算法聚类中心点:\ncenter=", k_means_cluster_centers)
print ("Mini Batch K-Means算法聚类中心点:\ncenter=", mbk_means_cluster_centers)
order = pairwise_distances_argmin(k_means_cluster_centers,  mbk_means_cluster_centers) 

K-Means算法聚类中心点:
center= [[-1.0600799 -1.05662982]
[ 1.02975208 -1.07435837]
[ 1.01491055 1.02216649]]
Mini Batch K-Means算法聚类中心点:
center= [[ 0.99602094 1.10688195]
[-1.00828286 -1.05983915]
[ 1.07892315 -0.94286826]]


六、 画图

plt.figure(figsize=(12, 6), facecolor='w')
plt.subplots_adjust(left=0.05, right=0.95, bottom=0.05, top=0.9)
cm = mpl.colors.ListedColormap(['#FFC2CC', '#C2FFCC', '#CCC2FF'])
cm2 = mpl.colors.ListedColormap(['#FF0000', '#00FF00', '#0000FF'])
1、原始数据
plt.subplot(221)
plt.scatter(X[:, 0], X[:, 1], c=Y, s=6, cmap=cm, edgecolors='none')
plt.title(u'原始数据分布图')
plt.xticks(())
plt.yticks(())
plt.grid(True)
2、K-Means算法聚类结果图
plt.subplot(222)
plt.scatter(X[:,0], X[:,1], c=km_y_hat, s=6, cmap=cm,edgecolors='none')
plt.scatter(k_means_cluster_centers[:,0],  k_means_cluster_centers[:,1],c=range(clusters),s=60,cmap=cm2,edgecolors='none')
plt.title(u'K-Means算法聚类结果图')
plt.xticks(())
plt.yticks(())
plt.text(-3.8, 3,  'train time: %.2fms' % (km_batch*1000))
plt.grid(True)
3、Mini Batch K-Means算法聚类结果图
plt.subplot(223)
plt.scatter(X[:,0], X[:,1], c=mbkm_y_hat, s=6, cmap=cm,edgecolors='none')
plt.scatter(mbk_means_cluster_centers[:,0], mbk_means_cluster_centers[:,1],c=range(clusters),s=60,cmap=cm2,edgecolors='none')
plt.title(u'Mini Batch K-Means算法聚类结果图')
plt.xticks(())
plt.yticks(())
plt.text(-3.8, 3,  'train time: %.2fms' % (mbk_batch*1000))
plt.grid(True)
different = list(map(lambda x: (x!=0) & (x!=1) & (x!=2), mbkm_y_hat))
for k in range(clusters):  different += ((km_y_hat == k) != (mbkm_y_hat == order[k]))
identic = np.logical_not(different)
different_nodes = len(list(filter(lambda x:x, different)))
4、Mini Batch K-Means和K-Means算法预测结果不同的点
plt.subplot(224)
plt.plot(X[identic, 0], X[identic, 1], 'w', markerfacecolor='#bbbbbb', marker='.')
plt.plot(X[different, 0], X[different, 1], 'w', markerfacecolor='m', marker='.')
plt.title(u'Mini Batch K-Means和K-Means算法预测结果不同的点')
plt.xticks(())
plt.yticks(())
plt.text(-3.8, 2,  'different nodes: %d' % (different_nodes))  
plt.show()

07 聚类算法 - 代码案例三 - K-Means算法和Mini Batch K-Means算法效果评估

06 聚类算法 - 代码案例二 - K-Means算法和Mini Batch K-Means算法比较相关推荐

  1. 混合正弦余弦算法和 Lévy飞行的麻雀算法-附代码

    混合正弦余弦算法和 Lévy飞行的麻雀算法 文章目录 混合正弦余弦算法和 Lévy飞行的麻雀算法 1.麻雀搜索算法 2. 改进麻雀算法 2.1 融合正弦余弦算法(SCA)思想 2.2 Lévy飞行策略 ...

  2. 【Python数学建模常用算法代码(二)之BP神经网络】

    Python数学建模常用算法代码(二) BP神经网络模型Python代码 import numpy as np import math import random import string impo ...

  3. K近邻算法和KD树详细介绍及其原理详解

    相关文章 K近邻算法和KD树详细介绍及其原理详解 朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解 决策树算法和CART决策树算法详细介绍及其原理详解 线性回归算法和逻辑斯谛回归算法详细介绍及其原理详 ...

  4. 混合正弦余弦算法和Lévy飞行的麻雀算法

    文章目录 一.理论基础 1.基本麻雀搜索算法 2.混合正弦余弦算法和Lévy飞行的麻雀算法(ISSA) (1)融合正弦余弦算法(SCA)思想 (2)Lévy飞行策略 二.ISSA算法流程图 三.算法性 ...

  5. MD5消息摘要算法和SHA-1安全散列算法

    MD5消息摘要算法和SHA-1 安全散列算法 MD5和SHA-1都是我们耳熟能详的术语了,很多人可能知道他们跟加密有关系,但是他们是怎么做到加密的,他们各自的特点又是什么.我来简单的讲一讲. MD5和 ...

  6. ML之PFI(eli5):基于mpg汽车油耗数据集利用RF随机森林算法和PFI置换特征重要性算法实现模型特征可解释性排序

    ML之PFI(eli5):基于mpg汽车油耗数据集利用RF随机森林算法和PFI置换特征重要性算法实现模型特征可解释性排序 目录 基于mpg数据集利用RF随机森林算法和PFI置换特征重要性算法实现模型特 ...

  7. c语言 k最近邻分类算法代码,实验二 K-近邻算法及应用

    实验二 K-近邻算法级应用 一.实验目的 1.理解K-近邻算法原理,能实现算法K近邻算法: 2.掌握常见的距离度量方法: 3.掌握K近邻树实现算法: 4.针对特定应用场景及数据,能应用K近邻解决实际问 ...

  8. 基于马尔可夫过程的一种新型混合PSO粒子群算法(SCI二区高被引文献)介绍及算法复现(使用chatgpt)

    以下是一篇算法领域的SCI二区文献(原文见附件),介绍了一种使用Markov概率转移矩阵对种群拓扑结构进行加权的粒子群算法,相比于标准PSO算法该算法提高了全局覆盖率,更容易跳出局部最优,但是在局部最 ...

  9. 【算法篇-字符串匹配算法】BF算法和KMP算法

    目录 前言 1. BF算法 1.1 画图分析 1.3 BF 算法的时间复杂度 2. KMP 算法 2.1 KMP 算法和 BF 算法 的区别 2.1.1 为什么主串不回退? 2. 2 next 数组 ...

最新文章

  1. Linux个人用户安装JDK(与root用户不同版本)
  2. mysql 中 add2_计算器中的F,4,2,0,ADD2怎么调,MU键有什么用??急急急
  3. 推荐几个最近Star过的Github仓库
  4. Burp Collaborator 使用总结
  5. Spring Boot系列教程七:Spring boot集成MyBatis
  6. java 命令行 读取文件_java – 将文件作为命令行参数传递并读取其行
  7. React.js 组件的 props vs state
  8. linux下plsql怎么执行sql脚本,plsql怎么执行sql脚本
  9. Markdown用法——带圆圈的数字编号
  10. catdog matlab,猫狗收养所 - ranjiewen的个人空间 - OSCHINA - 中文开源技术交流社区
  11. 数据泵导入报错ORA-39125和LPX-00225
  12. 读书笔记(英文) The Ngihtingale and Rose
  13. Android-java.net.SocketException: Socket closed问题
  14. 全国5M分辨率遥感图免费下载!还有遥感卫星视频可下载
  15. Unity3D 学习笔记6 ——协程
  16. 仿新浪微博返回顶部的js实现(jQuery/MooTools)
  17. Kerberos协议简介
  18. 电源常识-差模干扰共模干扰
  19. C++每日一课(八)
  20. 一行代码用表情包制作炫酷二维码,详细教程奉上,包学会

热门文章

  1. 关于Descriptors cannot not be created directly报错
  2. 软件安装下载【Android】
  3. tcl/tk参考——列表操作lappend
  4. 二极管选型-二极管参数介绍
  5. c++ 的vector、array和数组的比较
  6. win10菜单栏等底部状态栏打不开解决办法
  7. “adb”不是内部或外部命令,也不是可运行的程序或批处理文件——解决方案
  8. Windows10系统Qt调试ffmpeg.c
  9. 雷军语录:感谢“批评”让小米理性成长
  10. CartoonShader