K-means聚类算法
k-means算法以k为参数,把n个对象分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。
使用sklearn.cluster.KMeans可以调用K-means算法进行聚类
其处理过程如下:
1.随机选择k个点作为初始的聚类中心
2.剩下的点,根据其与聚类中心的距离,归入最近的簇
3.对每个簇,计算所有点的均值作为新的聚类中心
4.重复2、 3直到聚类中心不再发生改变
输入参数:
• n_clusters:用于指定聚类中心的个数
• init:初始聚类中心的初始化方法
• max_iter:最大的迭代次数
• 一般调用时只用给出n_clusters即可,init
默认是k-means++,max_iter默认是300
random_state:随机状态
其它参数:
• data:加载的数据
• label:聚类后各数据所属的标签
• axis: 按行求和
• fit_predict():计算簇中心以及为簇分配序号
属性
cluster_centers_ : 每个簇中心的坐标 array, [n_clusters, n_features]
labels_ :每个样本的标签
inertia_ : 样本到最近集群中心的距离的总和
方法
fit(X[, y]) :执行k均值聚类
fit_predict(X[, y]) :计算簇的中心并且预测每个样本对应的簇类别,相当于先调用fit(X)再调用predict(X),返回labels标签(0,1,2……)
fit(X[, y]) fit_predict(X[, y]) 数据类型为[[data1,data2……],[ data1,data2……],[]……]
例如:
Data = [[1,4,5,1],[1,5,4,3],[15,23,18,4],[15,48,5,3],[100,5,48]]
Km = KMeans(n_clusters=3) #设置分类成几个簇
Lables = Km.fit_predict(data)