k - means算法怎么在Python中应用

  介绍

这篇文章将为大家详细讲解有关k - means算法怎么在Python中应用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

Python是什么意思

Python是一种跨平台的,具有解释性,编译性,互动性和面向对象的脚本语言,其最初的设计是用于编写自动化脚本,随着版本的不断更新和新功能的添加,常用于用于开发独立的项目和大型项目。

<强> 1,调用以下库

 import  numpy  as  np ,, #用于抽样和生成随机数
  得到sklearn.cluster  import  KMeans ,, # sklearn自带的Kmeans算法,,用于严重本文算法结果是否正确
  import  matplotlib.pyplot  as  plt ,,,, #结果可视化
  import  sys ,, #需要用到sys.exit()函数

若不需要验证聚类结果是否可以不使用Sklearn库。

<强> 2,生成用于训练的随机数据

 np.set_printoptions(抑制=True),,,, #令numpy的结果不以科学计数法的方式输出
  时间=Data  np.array ([[1.0, 2.0], [1.5, 1.8], [3, 4], [6, 8], [8,, 8],, 1, 0.6,
  ,,,,,,,,,,,,,,,,(9,11),[7,10]]),,#你也可以通过抽样的方式来更快的获得测试数据

<强> 3,定义用于选择随机初始点和簇数(k)的函数

 def  K_means(数据,k):
  ,,,global 的意思
  ,,,mean =, []
  ,,,a =, np.max(数据(:,,0))
  ,,,b =, np.min(数据(:,,0))
  ,,,c =, np.max(数据[1]:也)
  ,,,d =, np.min(数据[1]:也)
  ,,,for 小姐:拷贝范围(k):
  ,,,,,,,x =, np.random.uniform (a, b,,,,
  ,,,,,,,#此处返回数组
  ,,,,,,,y =, np.random.uniform (c, d, 1),, #此处返回数组
  ,,,,,,,mean.append (((x)浮动,浮动(y)))
  ,,,Mean =, np.array(平均)
  ,,,return 意思是

在上面的代码中,为了限定初始点(x, y)的位置不会超出样本点的范围,因此均匀抽样的上下限是指训练数据(a, b)和(c, d)的最小横距。

<强> 4,定义可视化函数,绘制测试数据散点图

 def 视觉(数据,细胞):
  ,,,plt.figure (figsize=(12日6))
  ,,,ax1 =, plt.subplot (121)
  ,,,ax1.scatter(数据(:,,0),数据(:,,1)),,,#原始数据散点图
  ,,,ax1.scatter(点(:,,0),点(:,,0)),,,,同号时将随机选取的初始点表示出来
  ,,,plt.xlabel (“x")
  ,,,plt.ylabel (“y")
  ,,,plt.title (“scatter  of “, +,“rural", +,“, data")
  ,,,ax2 =, plt.subplot (122)
  ,,,ax2.scatter(数据(:,,0),数据(:,,1)),,,,#原始数据散点图
  ,,,ax2.scatter(数据(:,,0),数据(:,,1)),,,,,#经过迭代后最终确定的聚类点
  ,,,plt.xlabel (“x")
  ,,,plt.ylabel (“y")
  ,,,plt.title (“scatter  of “, +, cell  +,“, data")
  ,,,plt.show () 

聚类结果的可视化对于判断聚类结果的准确性至关重要。

<强> 5,定义迭代过程,通过不断计算各个样本对聚类点的欧式聚类,来不断更新聚类点

 def 迭代(数据,点):
  ,,,A =, []
  ,,,B =, []
  ,,,for 小姐:拷贝范围(len(数据)):
  ,,,,,,,d1 =, np.sqrt(总和(战俘(数据[我],安康;[0],,2)))
  ,,,,,,,d2 =, np.sqrt(总和(战俘(数据[我],安康;[1],,2)))
  ,,,,,,,if  d1 祝辞,d2:
  ,,,,,,,,,,,A.append(列表(数据(我)))
  ,,,,,,,其他的:
  ,,,,,,,,,,,B.append(列表(数据(我)))
  ,,,if  len (A),==, len(数据),或是len (B),==, len(数据):
  ,,,,,,,印刷(“初始化错误“)
  ,,,,,,,sys.exit (0)
  ,,,new_x1 =, np.mean (np.array (A) (:,, 0))
  ,,,new_y1 =, np.mean (np.array (A)[1]:也)
  ,
  ,,,new_x2 =, np.mean (np.array (B) (:,, 0))
  ,,,new_y2 =, np.mean (np.array (B)[1]:也)
  ,,,new_point =, np.array ([[new_y1 new_x1也],[new_y2 new_x2也]])
  ,,,return  new_point 

注意,上段代码中加入了一个如果语句

<>之前,,,,if  len (A),==, len(数据),或是len (B),==, len(数据):   null   null

k - means算法怎么在Python中应用