Kmeans算法是一个无监督算法,
他是根据一大堆数据自己训练出他自己是属于哪一类型的,本质上也是算距离
我们先自己搞一个已经做好分类的kmeans数据集
from sklearn.datasets import make_blobs
X, y = make_blobs(n_samples=500,n_features=2,centers=4,random_state=1)
plt.scatter(X[:, 0], X[:, 1], marker='o')
color = ["red","pink","orange","gray"]
for i in range(4):
plt.scatter(X[y==i, 0], X[y==i, 1]
,marker='o'
,s=8
,c=color[i] )
plt.show()
下面来正式导入sklearn实践
from sklearn.cluster import KMeans
n_clusters = 3
cluster = KMeans(n_clusters=n_clusters, random_state=0).fit(X)
cluster.labels_
cluster.cluster_centers_
from sklearn.metrics import silhouette_score
from sklearn.metrics import silhouette_samples
import pandas as pd
score=[]
for i in range(2,100):
cluster= KMeans(n_clusters=i, random_state=0).fit(X)
score.append(silhouette_score(X,cluster.labels_))
plt.plot(range(2,100),score)
plt.axvline(pd.DataFrame(score).idxmin()[0]+2,ls=':')