一、代码部分

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]class Kmeans:def __init__(self,k,epochs,data):''':param k: 聚类族数:param epochs: 迭代轮数:param data: 西瓜数据集二维数组'''self.k = kself.epochs = epochsself.data = dataself.center_points = []# 获取初始随机的聚类中心点for i in range(self.k):self.center_points.append(self.data[np.random.randint(0, len(self.data))])self.center_points = np.array(self.center_points, dtype=float)def calc_dist(self,a):dist = (self.center_points - a)**2mean_dists = np.mean(dist,axis=1)return mean_dists.argmin()def process_iter(self):# kmeans核心迭代过程for i in range(self.epochs):self.cluster = {}for i in range(len(self.data)):index = self.calc_dist(self.data[i])if index not in self.cluster:self.cluster[index] = [self.data[i]]else:self.cluster[index].append(self.data[i])self.upgrade()# 更新中心簇def upgrade(self):for i in range(self.k):# print(self.cluster[i])self.center_points[i] = np.array(self.cluster[i]).mean(axis=0)def get_cluster(self):return self.cluster# 绘图描点函数def plot_scatter(self):# 散点color = ['b','c','g','k','m','r','w','y']for i in range(self.k):x = np.array(self.cluster[i])[:,0]y = np.array(self.cluster[i])[:,1]plt.scatter(x,y,c=color[i])print(self.center_points)# 标记中心向量点x = self.center_points[:,0]y = self.center_points[:,1]plt.scatter(x,y,marker='+',c='r')plt.title('西瓜数据集4.0聚类结果'+'epoch{}'.format(self.epochs))plt.xlabel('密度')plt.ylabel('甜度')plt.show()def load_data():data = pd.read_csv("watermelon4.0.csv")data = pd.DataFrame(data)print(data,data.shape)data_t = []len = data.shape[0]for i in range(len):data_t.append([data["density"][i],data["sugercontent"][i]])return data_tdef main():data = load_data()kmeans = Kmeans(3,100,data)kmeans.process_iter()print(kmeans.get_cluster())kmeans.plot_scatter()if __name__ == '__main__':main()

二、实验结果

2.1 聚类(三个中心向量)

2.2 聚类(四个中心向量)

机器学习第九章聚类Kmeans练习(西瓜数据集4.0)相关推荐

  1. 机器学习-第九章 聚类

    机器学习-第九章 聚类 D系鼎溜已关注 2020.02.19 10:36:17字数 3,312阅读 375 9.1 聚类任务 在无监督学习任务中,包括了密度估计.异常检测以及聚类等.其中应用最广泛的是 ...

  2. 机器学习《西瓜书》9.4解答——k-means算法:编程实现k均值算法,设置三组不同的k值、三组不同初始中心点,在西瓜数据集4.0上进行实验比较,并讨论什么样的初始中心有助于得到好结果。

    1.运行结果:(注:图中方块标注的点为随机选取的初始样本点) k=2时: 本次选取的2个初始向量为[[0.243, 0.267], [0.719, 0.103]] 共进行61轮 共耗时0.10s k= ...

  3. 周志华《机器学习》3.5答案-编程实现线性判别分析,并给出西瓜数据集3.0α上的结果

    #机器学习线性判别分析3.5题 import numpy as np import matplotlib.pyplot as plt data = [[0.697, 0.460, 1],[0.774, ...

  4. Stanford机器学习---第九讲. 聚类

    本栏目(Machine learning)包括单参数的线性回归.多参数的线性回归.Octave Tutorial.Logistic Regression.Regularization.神经网络.机器学 ...

  5. 机器学习(周志华) 第九章聚类

    关于周志华老师的<机器学习>这本书的学习笔记 记录学习过程 本博客记录Chapter9 文章目录 1 聚类任务 2 性能度量 3 距离计算 4 原型聚类 4.1 k均值算法 4.2 学习向 ...

  6. 机器学习 K均值聚类(K-means) 鸢尾花数据集

    聚类的目标是使聚类后的各个簇,具有簇内聚合,簇间分离的特点. 如何度量簇之间,簇内样本之间的差异度?常用距离计算,最常用的是"闵可夫斯基距离"(Minkowski distance ...

  7. 《大数据》第七章 聚类 K-means算法 BFR算法 CURE算法

    1.欧氏空间与非欧空间 在了解聚类之前我认为需要先了解欧氏空间与非欧空间的概念,因为在聚类的算法中会根据欧或者非欧有不同的解决方案. 1.1欧氏空间 引用看过的一篇文章中的一句话总结:欧几里得空间就是 ...

  8. 基于朴素贝叶斯分类器的西瓜数据集 2.0 预测分类_机器学习之朴素贝叶斯

    1.贝叶斯原理 朴素贝叶斯分类(Naive Bayesian,NB)源于贝叶斯理论,是一类基于概率的分类器,其基本思想:假设样本属性之间相互独立,对于给定的待分类项,求解在此项出现的情况下其他各个类别 ...

  9. 机器学习--k均值聚类(K-means)

    数据分析入门与实战  公众号: weic2c 1.摘要 分类作为一种监督学习方法,要求必须事先明确知道各个类别的信息,并且断言所有待分类项都有一个类别与之对应.但是很多时候上述条件得不到满足,尤其是在 ...

  10. 跟李沐学AI:实用机器学习 | 第九章

    9.1 模型调参 手动调参 从一个好的基线开始,从工具包或者论文中的设置选择起始参数. 每次调一个超参数的值,观察性能变化. 虽然SGD在参数调得好的情况下模型效果会优于Adam,但是Adam相比于S ...

最新文章

  1. 激光雷达与汽车技术路线
  2. 吴恩达:无监督学习很重要!
  3. 1.内存优化(一)内存泄漏
  4. 给js文件加一些参数
  5. Google上面关于cas的文章
  6. 《springcloud超级入门》微服务的概念和优缺点《一》
  7. 强调团体与配合的jinbiguandan
  8. c语言 0494-方程求根,C语言:作业一 选择结构.doc
  9. 成人高考计算机基础历年真题,成人高考历年真题及答案
  10. C语言从入门到不放弃---编程环境的搭建到上手写代码
  11. Java 8的新特性(入门)
  12. 微信小程序自定义导航栏样式
  13. FPGA综合项目——SDRAM控制器
  14. 计算机类顶级会议排名+投稿经验
  15. 计算机房无管网消防中七氟丙烷的药剂用量
  16. 在数据集Euroc v dataset下跑双目ORB-SLAM2
  17. linux 环境命令行导出dmp文件
  18. 解决windows的挖矿木马
  19. LiteCAD参考文档的学习二(命令接口,命名对象之块、块的引用、块的属性、命令接口块的插入、块的复制)
  20. 深入理解xhr responseType blob arrayBuffer document text json使用

热门文章

  1. 湖北工业大学机械c语言考试试题,关于部分同学重新参加《C语言程序设计》、《计算机及网络应用基础》课程补考的通知...
  2. dell笔记本外接显示器_戴尔笔记本怎么连接外接显示器
  3. 淘宝 卖家信用等级的图示
  4. 高通QCOM 8610平台电量计算
  5. 手机上万里挑一的CAD看图软件,好用到颠覆你的世界观!
  6. FPGA产生m序列及其应用
  7. imagenet2012 对应 label
  8. 删除威金病毒残留的_desktop.ini文件(转贴)
  9. tc简单开发。窗口类。在窗口初始化时,使用窗口隐藏()
  10. 基于ssm汽车租赁管理系统的设计与实现