介绍
这篇文章将为大家详细讲解有关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
注意,上段代码中加入了一个如果语句