K-Means是一种无监督学习方法,用于将无标签的数据集进行聚类。其中K指集群的数量,Means表示寻找集群中心点的手段。
一、 无监督学习 K-Means
贴标签是需要花钱的。
所以人们研究处理无标签数据集的方法。(笔者狭隘了)
面对无标签的数据集,我们期望从数据中找出一定的规律。一种最简单也最快速的聚类算法应运而生—K-Means。
它的核心思想很简单:物以类聚。
用直白的话简单解释它的算法执行过程如下:
- 随便选择K个中心点(大哥)。
- 把距离它足够近的数据(小弟)吸纳为成员,聚成K个集群(组织)。
- 各集群(组织)内部重新选择中心点(大哥),选择标准是按照距离取均值作为中心点(大哥)。
- 重复2、3步骤直到收敛(组织成员相对稳定)。
这就是黑涩会形成聚类的过程。
二、 K-Means代码实践
2.1 鸢尾花数据集
import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
# 大家不用在意这个域名
df = pd.read_csv('https://blog.caiyongji.com/assets/iris.csv')
sns.scatterplot(x='petal_length',y='petal_width',data=df,hue='species')
我们得到带标签的数据如下:
2.2 K-Means训练数据
我们移除数据标签,仅使用花瓣长、宽作为数据输入,并使用无监督学习方法K-Means进行训练。
X = df[['petal_length','petal_width']].to_numpy()
from sklearn.cluster import KMeans
k = 2
kmeans = KMeans(n_clusters=k, random_state=42)
y_pred = kmeans.fit_predict(X)
plt.plot(X[y_pred==1, 0], X[y_pred==1, 1],