06 聚类算法 - 代码案例二 - K-Means算法和Mini Batch K-Means算法比较
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算法比较相关推荐
- 混合正弦余弦算法和 Lévy飞行的麻雀算法-附代码
混合正弦余弦算法和 Lévy飞行的麻雀算法 文章目录 混合正弦余弦算法和 Lévy飞行的麻雀算法 1.麻雀搜索算法 2. 改进麻雀算法 2.1 融合正弦余弦算法(SCA)思想 2.2 Lévy飞行策略 ...
- 【Python数学建模常用算法代码(二)之BP神经网络】
Python数学建模常用算法代码(二) BP神经网络模型Python代码 import numpy as np import math import random import string impo ...
- K近邻算法和KD树详细介绍及其原理详解
相关文章 K近邻算法和KD树详细介绍及其原理详解 朴素贝叶斯算法和拉普拉斯平滑详细介绍及其原理详解 决策树算法和CART决策树算法详细介绍及其原理详解 线性回归算法和逻辑斯谛回归算法详细介绍及其原理详 ...
- 混合正弦余弦算法和Lévy飞行的麻雀算法
文章目录 一.理论基础 1.基本麻雀搜索算法 2.混合正弦余弦算法和Lévy飞行的麻雀算法(ISSA) (1)融合正弦余弦算法(SCA)思想 (2)Lévy飞行策略 二.ISSA算法流程图 三.算法性 ...
- MD5消息摘要算法和SHA-1安全散列算法
MD5消息摘要算法和SHA-1 安全散列算法 MD5和SHA-1都是我们耳熟能详的术语了,很多人可能知道他们跟加密有关系,但是他们是怎么做到加密的,他们各自的特点又是什么.我来简单的讲一讲. MD5和 ...
- ML之PFI(eli5):基于mpg汽车油耗数据集利用RF随机森林算法和PFI置换特征重要性算法实现模型特征可解释性排序
ML之PFI(eli5):基于mpg汽车油耗数据集利用RF随机森林算法和PFI置换特征重要性算法实现模型特征可解释性排序 目录 基于mpg数据集利用RF随机森林算法和PFI置换特征重要性算法实现模型特 ...
- c语言 k最近邻分类算法代码,实验二 K-近邻算法及应用
实验二 K-近邻算法级应用 一.实验目的 1.理解K-近邻算法原理,能实现算法K近邻算法: 2.掌握常见的距离度量方法: 3.掌握K近邻树实现算法: 4.针对特定应用场景及数据,能应用K近邻解决实际问 ...
- 基于马尔可夫过程的一种新型混合PSO粒子群算法(SCI二区高被引文献)介绍及算法复现(使用chatgpt)
以下是一篇算法领域的SCI二区文献(原文见附件),介绍了一种使用Markov概率转移矩阵对种群拓扑结构进行加权的粒子群算法,相比于标准PSO算法该算法提高了全局覆盖率,更容易跳出局部最优,但是在局部最 ...
- 【算法篇-字符串匹配算法】BF算法和KMP算法
目录 前言 1. BF算法 1.1 画图分析 1.3 BF 算法的时间复杂度 2. KMP 算法 2.1 KMP 算法和 BF 算法 的区别 2.1.1 为什么主串不回退? 2. 2 next 数组 ...
最新文章
- Linux个人用户安装JDK(与root用户不同版本)
- mysql 中 add2_计算器中的F,4,2,0,ADD2怎么调,MU键有什么用??急急急
- 推荐几个最近Star过的Github仓库
- Burp Collaborator 使用总结
- Spring Boot系列教程七:Spring boot集成MyBatis
- java 命令行 读取文件_java – 将文件作为命令行参数传递并读取其行
- React.js 组件的 props vs state
- linux下plsql怎么执行sql脚本,plsql怎么执行sql脚本
- Markdown用法——带圆圈的数字编号
- catdog matlab,猫狗收养所 - ranjiewen的个人空间 - OSCHINA - 中文开源技术交流社区
- 数据泵导入报错ORA-39125和LPX-00225
- 读书笔记(英文) The Ngihtingale and Rose
- Android-java.net.SocketException: Socket closed问题
- 全国5M分辨率遥感图免费下载!还有遥感卫星视频可下载
- Unity3D 学习笔记6 ——协程
- 仿新浪微博返回顶部的js实现(jQuery/MooTools)
- Kerberos协议简介
- 电源常识-差模干扰共模干扰
- C++每日一课(八)
- 一行代码用表情包制作炫酷二维码,详细教程奉上,包学会
热门文章
- 关于Descriptors cannot not be created directly报错
- 软件安装下载【Android】
- tcl/tk参考——列表操作lappend
- 二极管选型-二极管参数介绍
- c++ 的vector、array和数组的比较
- win10菜单栏等底部状态栏打不开解决办法
- “adb”不是内部或外部命令,也不是可运行的程序或批处理文件——解决方案
- Windows10系统Qt调试ffmpeg.c
- 雷军语录:感谢“批评”让小米理性成长
- CartoonShader