使用sklearn库来进行k-means聚类十分简单,官网的教程是挺好的。但其他地方的一些例子和教程则很多都是要么只是写给作者自己看的,要么是代码不能直接运行的。这里我写这篇文章,用尽量简单的易懂方式来封装k-means代码:
首先创建一个kmeans.py文件,这个文件是k-means算法的封装文件,里面就定义一个函数,用于利用sklearn库来进行k-means聚类,代码如下:# -*- coding: utf-8 -*-
"""
@author ZibinPan
Created on Tue Feb 27 14:24:29 2018
sklearn k-means聚类实用封装库
用法:传入的参数均为list类型,x1为x坐标,x2为y坐标,types_num为聚类数,types为各类的名称,colors为各类点的颜色,shapes为各类点的形状
返回一个kmeans_model对象,其labels_属性记录着聚类的标签(如0,1,2等),cluster_centers_属性记录着聚类的中心
另外也返回聚类后的x1_result和x2_result对象,x1_result记录着原x1列表的聚类结果,
即x1_result列表中有n个元素(n为聚类数),其中每个元素都是一个列表(原x1列表中属于该类的所有元素组成的列表)
x2_result同上
"""
import numpy as np
from sklearn.cluster import KMeans
import matplotli