K-MEANS算法

聚类概念:

1.无监督问题:我们手里没有标签

2.聚类:相似的东西分到一组

3.难点:如何评估,如何调参

4.要得到簇的个数,需要指定K值

5.质心:均值,即向量各维取平均即可

6.距离的度量:常用欧几里得距离和余弦相似度

7.优化目标:min$$ min \sum_{i=0}^k \sum_{C_j=0} dist(c_i,x)^2$$

工作流程:

(a)读入数据

(b)随机初始化两个点

(c)计算每个点到质心的距离,离那个质心距离近,就暂时归为那类

(d)重新计算评估指标,更新质心,执行c动作

(e)重新更新质心

(f)重新计算质心的距离,进行分类,直到质心不在发生变化

优势:

简单、快速、适合常规数据集

劣势:

K值难确定

复杂度与样本呈线性关系

很难发现任意形状的簇,如下图:

sklearn实现

#数据读入

# beer dataset
import pandas as pd
beer = pd.read_csv('data.txt',sep=' ')
beer

X = beer[["calories","sodium","alcohol","cost"]]
from sklearn.cluster import KMeans
km = KMeans(n_clusters = 3).fit(X)
km2 = KMeans(n_clusters = 2).fit(X)
print(km.labels_)
array([0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 0, 2, 0, 0, 0, 1, 0, 0, 1, 2])
beer['cluster'] = km.labels_
beer['cluster1'] = km2.labels_
beer.sort_values('cluster')
beer.sort_values('cluster1')

最新文章

  1. 关于nfs共享目录的使用技巧
  2. 写字节流转换String 代码示例
  3. Trumbowyg - 轻量的 WYSIWYG 编辑器
  4. 关于oracle的rowid
  5. golang学习遭遇错误原因分析续
  6. 将fastjson元素转化为String[]
  7. COJ 1006 树上操作
  8. Lining Up(在一条直线上的最大点数目,暴力)
  9. Hadoop源代码导入Eclipse
  10. Ajax - 在函数中使用Ajax怎么使用返回值 - Ajax赋值给全局变量异常的解决方法
  11. LeetCode18:4Sum
  12. day3 自定义指令详解
  13. BZOJ_2600_[Ioi2011]ricehub_二分答案
  14. 包建强的培训课程(17):Java代码敏捷之道
  15. Nginx正反向代理、负载均衡等功能实现配置
  16. Codeforces 542A Place Your Ad Here
  17. iOS 集成极光推送
  18. SpringBoot 整合 Logback
  19. 关于在eclipse Oxygen 2017环境下spring3.2 asm的异常
  20. 常用MySQL函数

热门文章

  1. Windows 10 删除资源管理器中7个文件夹
  2. K8S知识点总结
  3. 5分钟了解OWL本体建模语言
  4. 版权动态日记页脚 JS
  5. vlan端口类型
  6. RFID/13.56MHZ/NFC线圈防干扰原理-附磁导材料防干扰原理 20191128
  7. Linux下使用 minicom 自动重复发送数据的实现
  8. Git--上手Github
  9. sqarkSQL hiveSql
  10. 使用jackson序列化json时遇到的坑