聚类算法 KMeans
- 1. 应用:大数据杀熟
- 2. 迭代法
- 3. 代码
1. 应用:大数据杀熟
- 618、双十一,平台要对用户进行分类:
- 用户:
- 脑残粉(不降价,或者涨点价)
- 墙头草(给点小优惠券)
- 其他平台用户(打骨折拉客)
- KMeans是一种广泛使用的聚类算法,属于无监督学习方法,其主要目的是将数据点分组成若干个集群,使得同一个集群内的数据点相似度高,而不同集群间的数据点相似度低。
2. 迭代法
- 从一个随机状态开始
- 采用一定的策略,逐步变好
- 量变达到质变
- 实现目的
- 先粗糙的开始,然后慢慢的变好!!!
3. 代码
from sklearn.datasets import make_blobs
from matplotlib import pyplot as plt
import numpy as np
X,y=make_blobs(n_samples=2000,
n_features=2,
centers=5,
cluster_std=0.5)
print(np.unique(np.array(y))) #:[0 1 2 3 4]
print(X.shape,y.shape) #: (2000, 2) (2000,)
plt.scatter(X[:,0],X[:,1],c=y)
from sklearn.cluster import KMeans
km = KMeans(n_clusters=5,algorithm="auto")
# 如果出现报错:‘NoneType‘ object has no attribute ‘split‘ 解决方案:pip install --upgrade threadpoolctl
km.fit(X)
print(km.cluster_centers_)
plt.scatter(X[:, 0], X[:, 1], c=y)
plt.scatter(km.cluster_centers_[:, 0], km.cluster_centers_[:, 1], marker="*", s=100, c="red")
[[-5.31628485 -1.45893969]
[-1.0759308 9.94338596]
[ 0.72948784 -2.3113112 ]
[-6.95011209 7.31684924]
[-3.39357312 -4.8877097 ]]