导入包–准备数据–拟合模型
基础
导入数据:
用numpy
画出肘部图
一句话介绍Kmeans:
有初始值,聚类(距离公式),变换中心,直到所有点到中心距离的 误差平方和 达到阈值或误差标准
优缺点:
代码汇总
#kmeans
#准备工作
import pandas as pd
from sklearn.cluster import KMeans
##### 准备数据集
data = pd.read_csv('basketball.csv')
data.head()#查看表头
data.shape #数据几行几列
##### Kmeans 聚类
m = KMeans()
m.fit(data) #拟合
m.cluster_centers_ #聚类中心
m.labels_ #每个点所属的簇
m.inertia_ #误差平方和
m.predict(data) #预测数据
import pandas as pd
from sklearn.cluster import KMeans
from matplotlib import pyplot as plt
data = pd.read_csv("basketball.csv")
lst1=[] #创建空列表
lst2=[]
for i in range(2,21):
m=KMeans(n_clusters=i)
m.fit(data)
inertia = m.inertia_ #这三行是公式
print(inertia)
lst1.append(i) #list1放聚类个数
lst2.append(inertia) #list2放误差平方和
df1 = pd.DataFrame(lst2,index=lst1,columns=["inertia"]) #构建dataframe语法:pandas.DataFrame( data, index, columns, dtype, copy)
print(df1) #可以看到构建的dataframe
plt.figure(figsize=(20,8),dpi=200)# 创建自定义图像fig=plt.figure(figsize=(4,3),facecolor=‘blue’)
plt.plot(df1.index,df1.inertia,'o-') #点的坐标(dataframe表的索引index,dataframe表的误差平方和,点的样式)
plt.xlabel("n_clusters")#x轴的标注
plt.ylabel("inertia")#y轴的标注
for x,y in zip(df1.index,df1.inertia): #zip()将两个列表压缩成一个[1,2],[3,4]-->[(1,3),(2,4)]
plt.text(x,y,f"{y:.2f}",ha="center",va="bottom")#plt.text()作用:画图时给图中的点 加标签 ;
# 在图上显示具体数值相对于点的位置, ha参数控制水平对齐方式, va控制垂直对齐方式,fontsize:加标签字体大小,取整数
plt.xticks(df1.index)#plt.xticks()用来确定横坐标的刻度 参考:https://cloud.tencent.com/developer/article/1737204