k-means聚类代码实现

一维聚类

import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
data=pd.read_excel(r'C:\Users\11960\Desktop\k-means1.xlsx') #加载数据
data1=data['R1']  #取某列数据
data1=np.array(data1)  #变成数组
data=[[i]for i in data1]  #生成一个一个的列表
julei=KMeans(n_clusters=4) #进行Kmeans聚类,设置聚类数4类
julei.fit(data) #对数据聚类
label=julei.labels_  #获得聚类标签
center=julei.cluster_centers_   #聚类中心

在这里插入图片描述
在这里插入图片描述

多维聚类

import pandas as pd
import numpy as np
from sklearn.cluster import KMeans
from sklearn.metrics import silhouette_samples
data=pd.read_excel(r'C:\Users\11960\Desktop\k-means1.xlsx') #读入数据
def juleipingjia(n):    #n为聚类数,循环计算聚类数从2到n-1的轮廓系数进行聚类评价
    julei=KMeans(n_clusters=n)       #设置聚类数
    julei.fit(data)                   #聚类
    label=julei.labels_                #聚类所得标签
    lkxs=silhouette_samples(data,label,metric='euclidean')    #计算本次聚类,所有数据对应的轮廓系数
    means=np.mean(lkxs)     #对轮廓系数求均值,越接近1效果越好
    return means       
y=[]
for n in range(2,10):           #计算聚类数分别为2、3、...10时的轮廓系数均值,便于选取最优聚类数
    means=juleipingjia(n)
    y.append(means)    #将每次的轮廓系数存入y数组中
print(y)

轮廓系数处于-1至1,越大表示簇间相似度高而不同簇相似度低,即聚类效果越好
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值