言归正传,先介绍一下 Mini Batch K-Means算法

Mini Batch K-Means算法是K-Means算法的一种优化变种,采用小规模的数据子集(每次训
练使用的数据集是在训练算法的时候随机抽取的数据子集)减少计算时间,同时试图优化目标
函数;Mini Batch K-Means算法可以减少K-Means算法的收敛时间,而且产生的结果效果只
是略差于标准K-Means算法
算法步骤如下:
首先抽取部分数据集,使用K-Means算法构建出K个聚簇点的模型
继续抽取训练数据集中的部分数据集样本数据,并将其添加到模型中,分配给距离最近的聚簇中心点
更新聚簇的中心点值
循环迭代第二步和第三步操作,直到中心点稳定或者达到迭代次数,停止计算操作


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组二维的数据,中心是意思三个中心点,标准差是.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)
##获取聚类中心点并聚类中心点进行排序
k_means_cluster_centers = k_means.cluster_centers_#输出kmeans聚类中心点
mbk_means_cluster_centers = mbk.cluster_centers_#输出mbk聚类中心点
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)
#子图三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)))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()

机器学习算法之聚类算法拓展:Mini Batch K-Means算法相关推荐

  1. kmeans改进 matlab,基于距离函数的改进k―means 算法

    摘要:聚类算法在自然科学和和社会科学中都有很普遍的应用,而K-means算法是聚类算法中经典的划分方法之一.但如果数据集内相邻的簇之间离散度相差较大,或者是属性分布区间相差较大,则算法的聚类效果十分有 ...

  2. 机器学习之重点汇总系列(二)——K近邻算法(k-Nearest Neighbor,kNN)

    什么是K近邻算法 引例 假设有数据集,其中前6部是训练集(有属性值和标记),我们根据训练集训练一个KNN模型,预测最后一部影片的电影类型 首先,将训练集中的所有样例画入坐标系,也将待测样例画入 然后计 ...

  3. k means算法C语言伪代码,K均值算法(K-Means)

    1. K-Means算法步骤 算法步骤 收敛性定义,畸变函数(distortion function): 伪代码: 1) 创建k个点作为K个簇的起始质心(经常随机选择) 2) 当任意一个点的蔟分配结果 ...

  4. scikit-learn学习之K-means聚类算法与 Mini Batch K-Means算法

    ====================================================================== 本系列博客主要参考 Scikit-Learn 官方网站上的 ...

  5. 机器学习中的聚类算法

    1. 概述 根据所拥有的数据,可以使用三种不同的机器学习方法,包括监督学习.半监督学习和无监督学习. 在监督学习中,根据已标记数据,因此可以确定输出是关于输入的某种(隐函数)的正确值.通过半监督学习, ...

  6. 机器学习算法加强——聚类

    聚类--无监督学习    k-Means可以理解为在此给定目标函数下的梯度下降(随机梯度下降.批量梯度下降)  样本量巨大mini-batch 分布不是高斯分布k-Means算法不一定好 k-Mean ...

  7. k均值聚类算法(K Means)及其实战案例

    算法说明 K均值聚类算法其实就是根据距离来看属性,近朱者赤近墨者黑.其中K表示要聚类的数量,就是说样本要被划分成几个类别.而均值则是因为需要求得每个类别的中心点,比如一维样本的中心点一般就是求这些样本 ...

  8. 机器学习算法系列之K近邻算法

    本系列机器学习的文章打算从机器学习算法的一些理论知识.python实现该算法和调一些该算法的相应包来实现. 目录 K近邻算法 一.K近邻算法原理 k近邻算法 通俗解释 近邻距离的度量 k值的选择 KN ...

  9. 机器学习第七章之K近邻算法

    K近邻算法(了解) 7.1 K近邻算法 7.1.1 K近邻算法的原理介绍 7.1.2 K近邻算法的计算步骤及代码实现 7.2 数据预处理之数据归一化 7.2.1 min-max标准化 7.2.2 Z- ...

  10. 机器学习:K近邻算法(K-NN)

    K近邻(K-Nearest Neighbor, KNN)是一种最经典和最简单的有监督学习方法之一,它非常有效而且易于掌握. 1 K近邻算法概述 一个样本与数据集中的k个样本最相似, 如果这k个样本中的 ...

最新文章

  1. RN pod install 失败(could not find compatible versions for pod “React/Core“)
  2. mysql安全性实验心得_mysql安全小结
  3. 周赛 Hd2270+总结改进
  4. 过滤选择器——可见性过滤选择器
  5. 深入理解 Linux的 I/O 系统
  6. Windows与Linux之间海量文件的传输与Linux下大小写敏感问题
  7. c# wifi串口通信_C# 串口通信总结
  8. 利用根轨迹法进行控制系统的分析和设计
  9. utilities(matlab)—— 图像加噪
  10. java 授课录像_讲课视频录制方法,录制上课录像详细步骤
  11. chrome浏览器书签同步_如何将Google Chrome浏览器的书签与手机同步
  12. 腾讯ISUX网页前端代码分析
  13. 分析can波形及数据
  14. python 时间模块判断上午还是下午_Python的时间模块小结(转自:不懂真人)
  15. 深度linux笔记本独显,双显卡笔记本安装Deepin教程
  16. excel跑数计算机卡,win7系统下使用excel表格很卡如何解决
  17. HTML+CSS大作业`游戏设计网站设计——游戏介绍(5页) 大学生游戏网页设计作业模板下载 网游网页设计作业成品 静态HTML手游网页制作下载_网页设计代码
  18. 云控系统搭建需要那个运行商网线
  19. 51小项目——使用proteus搭建简易的光照度计-(1)
  20. 数学建模笔记(十三):离散模型(DP、图论)

热门文章

  1. 调用百度网盘开放平台接口,操作百度网盘中的文件,上传、下载等
  2. 自用房屋租住管理系统
  3. Django快速入门教程
  4. 【Power Automate】日期格式化函数formatDateTime详细说明及示例
  5. 关于bootstrap--表格(table的各种样式)
  6. 黑马头条从登陆页到个人中心页
  7. 小视频伪原创工具 苹果手机短视频去水印
  8. 如何解决个人信息泄露问题
  9. 王者荣耀国际服——传说对决
  10. Rk3399—添加usb转串口驱动