Machine Learning | (12) 非监督学习-k-means

举报
DrugAI 发表于 2021/07/15 01:53:37 2021/07/15
【摘要】 Machine Learning | 机器学习简介 Machine Learning | (1) Scikit-learn与特征工程 Machine Learning | (2) sklearn数据集与机器学习组成 Machine Learning | (3) Scikit-learn的分类器算法-k-近邻 Machine Learning | (4) Scikit-...

Machine Learning | 机器学习简介

Machine Learning | (1) Scikit-learn与特征工程

Machine Learning | (2) sklearn数据集与机器学习组成

Machine Learning | (3) Scikit-learn的分类器算法-k-近邻

Machine Learning | (4) Scikit-learn的分类器算法-逻辑回归

Machine Learning | (5) Scikit-learn的分类器算法-朴素贝叶斯

Machine Learning | (6) Scikit-learn的分类器算法-性能评估

Machine Learning | (7) Scikit-learn的分类器算法-决策树(Decision Tree)

Machine Learning | (8) Scikit-learn的分类器算法-随机森林(Random Forest)

Machine Learning | (9) 回归算法-线性回归

Machine Learning | (10) 回归算法-岭回归

Machine Learning | (11) 回归性能评估与欠拟合、过拟合

 


非监督学习之k-means

K-means通常被称为劳埃德算法,这在数据聚类中是最经典的,也是相对容易理解的模型。算法执行的过程分为4个阶段。

  • 1.首先,随机设K个特征空间内的点作为初始的聚类中心。
  • 2.然后,对于根据每个数据的特征向量,从K个聚类中心中寻找距离最近的一个,并且把该数据标记为这个聚类中心。
  • 3.接着,在所有的数据都被标记过聚类中心之后,根据这些数据新分配的类簇,通过取分配给每个先前质心的所有样本的平均值来创建新的质心重,新对K个聚类中心做计算。
  • 4.最后,计算旧和新质心之间的差异,如果所有的数据点从属的聚类中心与上一次的分配的类簇没有变化,那么迭代就可以停止,否则回到步骤2继续循环。

K均值等于具有小的全对称协方差矩阵的期望最大化算法

sklearn.cluster.KMeans


  
  1. class sklearn.cluster.KMeans(n_clusters=8, init='k-means++', n_init=10, max_iter=300, tol=0.0001, precompute_distances='auto', verbose=0, random_state=None, copy_x=True, n_jobs=1, algorithm='auto')
  2. """
  3. :param n_clusters:要形成的聚类数以及生成的质心数
  4. :param init:初始化方法,默认为'k-means ++',以智能方式选择k-均值聚类的初始聚类中心,以加速收敛;random,从初始质心数据中随机选择k个观察值(行
  5. :param n_init:int,默认值:10使用不同质心种子运行k-means算法的时间。最终结果将是n_init连续运行在惯性方面的最佳输出。
  6. :param n_jobs:int用于计算的作业数量。这可以通过并行计算每个运行的n_init。如果-1使用所有CPU。如果给出1,则不使用任何并行计算代码,这对调试很有用。对于-1以下的n_jobs,使用(n_cpus + 1 + n_jobs)。因此,对于n_jobs = -2,所有CPU都使用一个。
  7. :param random_state:随机数种子,默认为全局numpy随机数生成器
  8. """

  
  1. from sklearn.cluster import KMeans
  2. import numpy as np
  3. X = np.array([[1, 2], [1, 4], [1, 0],[4, 2], [4, 4], [4, 0]])
  4. kmeans = KMeans(n_clusters=2, random_state=0)

方法

fit(X,y=None)

使用X作为训练数据拟合模型

kmeans.fit(X)

 

predict(X)

预测新的数据所在的类别


  
  1. kmeans.predict([[0, 0], [4, 4]])
  2. array([0, 1], dtype=int32)

属性

clustercenters

集群中心的点坐标


  
  1. kmeans.cluster_centers_
  2. array([[ 1., 2.],
  3. [ 4., 2.]])

labels_

每个点的类别

kmeans.labels_

 

k-means ++

 


k-means案例分析

手写数字数据上K-Means聚类的演示


  
  1. from sklearn.metrics import silhouette_score
  2. from sklearn.cluster import KMeans
  3. def kmeans():
  4. """
  5. 手写数字聚类过程
  6. :return: None
  7. """
  8. # 加载数据
  9. ld = load_digits()
  10. print(ld.target[:20])
  11. # 聚类
  12. km = KMeans(n_clusters=810)
  13. km.fit_transform(ld.data)
  14. print(km.labels_[:20])
  15. print(silhouette_score(ld.data,km.labels_))
  16. return None
  17. if __name__=="__main__":
  18. kmeans()

 


 

 

文章来源: drugai.blog.csdn.net,作者:DrugAI,版权归原作者所有,如需转载,请联系作者。

原文链接:drugai.blog.csdn.net/article/details/104333377

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。