机器学习学习笔记(十二)之K-means算法

作者:神秘网友 发布时间:2020-09-09 12:34:03

机器学习学习笔记(十二)之K-means算法

机器学习学习笔记(十二)之K-means算法

一、无监督学习包含算法

  • 聚类——K-means
  • 降维——PCA

二、K-means算法原理

  1. 随机设置K个特征空间内的点作为初始的聚类中心
  2. 对于其他每个点计算到K个中心的距离,未知的点选择最近的一个聚类中心点作为标记类别
  3. 接着对着标记的聚类中心之后,重新计算出每个聚类的新中心点(平均值)
  4. 如果计算得出的新中心点与原中心点一样(质心不再移动),那么结束,否则重新进行第二步过程

机器学习学习笔记(十二)之K-means算法
三、API

  • sklearn.cluster.KMeans(n_clusters=8,init = ‘k-means++’)
    • 参数:
      • n_clusters:开始的聚类中心数量
        • 整型,缺省值=8,生成的聚类数,即产生的质心(centroids)数。
      • init:初始化方法,默认为’k-means++’
      • labels_:默认标记的类型,可以和真实值比较(不是值比较)
  • 方法:
    • estimator.fit(x)
    • estimator.predict(x)
    • estimator.fit_predict(x)
      • 计算聚类中心并预测每个样本属于哪个类别,相当于先调用fit(x),然后再调用predict(x)

四、模型评估

  • 轮廓系数SCi∈[-1,1],'高内聚,低耦合’效果好
    • SCi越接近于1,聚类效果越好
    • SCi越接近于-1,聚类效果越差
  • API
    • sklearn.metrics.silhouette_score(X,labels)
      • 计算所有样本的平均轮廓系数
      • X:特征值
      • label:被聚类标记的目标值

五、案例

from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_score

# 预估器流程
estimator = Kmeans(n_clusters = 3)
estimator.fit(data)
# data为特征值,因为聚类是无监督学习,没有目标值,不需要传入

y_predict = estimator.predict(data)
print(y_predict) 

# 模型评估
silhouette_score(data,y_predict)
运行结果:
y_predict:
[0,1,0,0,0,2,1,2]

0.539632554654

六、K-means总结

  • 特点:采用迭代式算法,直观易懂并且非常实用
  • 缺点:容易收敛到局部最优解(多次聚类)

机器学习学习笔记(十二)之K-means算法相关教程

  1. 机器学习实战——python实现DBSCAN密度聚类
  2. web前端学习-第十一天
  3. HTML5 学习笔记DAY1(2)
  4. 数据挖掘-基础知识-笔记汇总7数据预处理-线性判别方法LDA之详细
  5. 计算机网络技术学习总结(第二课时)
  6. Apache Thrift学习(3):原理与架构解析
  7. LeetCode笔记(dp:最长定差子序列**)
  8. JavaWeb学习十一(JSTL标签库)