K-means聚类算法筛实现鸢尾花聚类

K-means聚类算法筛实现鸢尾花聚类:对于给定的样本集,按照样本之间的距离大小,将样本集划分为K个簇,让簇内的点尽量紧密的连在一起,而让簇间的距离尽量的。聚类属于无监督算法,不必专门切分训练集与测试集

导入包

import matplotlib.pyplot as plt
import numpy as np
from sklearn.cluster import KMeans 
from sklearn import datasets 

sklearn.datasets中加载数据集

# 直接从sklearn中获取数据集
iris = datasets.load_iris()
X = iris.data[:, :4]    # 表示我们取特征空间中的4个维度
print(X.shape)

绘制二维数据分布图

# 取前两个维度(萼片长度、萼片宽度),绘制数据分布图
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() 

实例化K-means类,并且定义训练函数

def Model(n_clusters):
    estimator = KMeans(n_clusters=n_clusters)# 构造聚类器
    return estimator

def train(estimator):
    estimator.fit(X)  # 聚类

训练

# 初始化实例,并开启训练拟合
estimator=Model(3)     
train(estimator)   

可视化展示

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() 
  • 1
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
鸢尾花数据集是机器学习领域中最常用的数据集之一,包含150个样本,每个样本有4个特征,分别是花萼长度、花萼宽度、花瓣长度和花瓣宽度,同时每个样本还有一个标签,表示该样本属于哪个类别(山鸢尾、变色鸢尾、维吉尼亚鸢尾)。在这里,我们将使用K-means聚类算法鸢尾花数据集进行聚类。 1. 导入数据集 我们首先需要导入鸢尾花数据集,并将其作为我们的聚类对象。 ```python from sklearn.datasets import load_iris iris = load_iris() X = iris.data ``` 2. 数据预处理 在使用K-means算法进行聚类之前,我们需要对数据进行预处理。这里我们将使用标准化方法将数据进行归一化处理,使得每个特征的均值为0,方差为1。 ```python from sklearn.preprocessing import StandardScaler scaler = StandardScaler() X_scaled = scaler.fit_transform(X) ``` 3. 训练模型 接下来,我们将使用K-means算法对数据进行聚类。 ```python from sklearn.cluster import KMeans kmeans = KMeans(n_clusters=3, random_state=0) kmeans.fit(X_scaled) ``` 在这里,我们将聚类数设置为3,因为鸢尾花数据集中有3个类别。我们还可以通过设置random_state参数来保证每次运行结果的一致性。 4. 可视化聚类结果 最后,我们可以将聚类结果可视化,以便更好地理解聚类算法的效果。 ```python import matplotlib.pyplot as plt plt.scatter(X_scaled[:, 0], X_scaled[:, 1], c=kmeans.labels_) plt.title("K-means clustering on iris data") plt.xlabel("sepal length (scaled)") plt.ylabel("sepal width (scaled)") plt.show() ``` 运行以上代码,我们可以得到如下的聚类结果可视化图: ![iris clustering](https://cdn.jsdelivr.net/gh/kkzzhizhou/blog_images/img/iris_clustering.png) 从图中可以看出,K-means算法成功地将鸢尾花数据集分成了3个类别。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值