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

一、无监督学习包含算法

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

二、K-means算法原理

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

在这里插入图片描述
三、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总结

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值