Python sklearn实现K-means鸢尾花聚类
- 准备
- 1.导入相关包
- 2.直接从sklearn.datasets中加载数据集
- 3.绘制二维数据分布图
- 4.实例化K-means类,并且定义训练函数
- 5.训练
- 6.可视化展示
- 7.预览图
准备
使用到的库:
- numpy
- matplotlib
- sklearn
安装:
pip install numpy
pip install matplotlib
pip install sklearn
数据集:
使用开源数据集“鸢尾花数据集”。包含3种类型数据集,共150条数据;数据包含4项特征,花萼长度、花萼宽度、花瓣长度、花瓣宽度;将80%的数据划分为训练集,20%划分为测试集。
下载地址:
https://download.csdn.net/download/qq_63585949/86827472
对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇,让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的大。
聚类" />
1.导入相关包
python">import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import KMeans
from sklearn import datasets
sklearndatasets_30">2.直接从sklearn.datasets中加载数据集
python"># 直接从sklearn中获取数据集
iris = datasets.load_iris()
X = iris.data[:, :4] # 表示我们取特征空间中的4个维度
print(X.shape)
3.绘制二维数据分布图
每个样本使用两个特征,绘制其二维数据分布图
python"># 取前两个维度(萼片长度、萼片宽度),绘制数据分布图
plt.scatter(X[:, 0], X[:, 1], c="red", marker='o', label='see')
plt.xlabel('sepal length')
plt.ylabel('sepal width')
plt.legend(loc=2)
plt.show()
4.实例化K-means类,并且定义训练函数
python">def Model(n_clusters):
estimator = KMeans(n_clusters=n_clusters)# 构造聚类器
return estimator
def train(estimator):
estimator.fit(X) # 聚类
5.训练
python"># 初始化实例,并开启训练拟合
estimator=Model(3)
train(estimator)
6.可视化展示
python">label_pred = estimator.labels_ # 获取聚类标签
# 绘制k-means结果
x0 = X[label_pred == 0]
x1 = X[label_pred == 1]
x2 = X[label_pred == 2]
plt.scatter(x0[:, 0], x0[:, 1], c="red", marker='o', label='label0')
plt.scatter(x1[:, 0], x1[:, 1], c="green", marker='*', label='label1')
plt.scatter(x2[:, 0], x2[:, 1], c="blue", marker='+', label='label2')
plt.xlabel('sepal length')
plt.ylabel('sepal width')
plt.legend(loc=2)
plt.show()
7.预览图
聚类" />