C均值(K-means)聚类算法 实验


一. 实验目的

1.理解C均值(K-means)聚类算法的基本原理
2.学会用python实现C均值(K-means)算法


二. 实验原理

k-means算法中的k代表聚类个数,means代表聚类内数据对象的均值(均值是对聚类中心的描述)。k-means算法以距离作为数据对象间相似性度量的标准,即数据对象间的距离越小,则它们的相似性越高,则它们越有可能在同一个聚类。数据对象间距离的计算有很多种,k-means算法通常采用欧氏距离来计算数据对象间的距离。


三. 实验内容

  1. 随机生成100个数,并对这100个数进行k-means聚类(k=3,4)(并用matplot画图)。
  2. 对鸢尾花数据进行K-means算法聚类(并用matplot画图)。

四. 实验步骤:

1.1 随机创建100个样本的二维数据作为训练集并画出训练样本的散点图

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

X,y=make_blobs(n_samples=100,n_features=2,centers=[[-1,-1],[0,0],[1,1],[2,2]],cluster_std=[0.4,0.2,0.2,0.2])

#输入: 𝑛_𝑠𝑎𝑚𝑝𝑙𝑒𝑠 是待生成的样本的总数。  𝑛_𝑓𝑒𝑎𝑡𝑢𝑟𝑒𝑠 是每个样本的特征数。  𝑐𝑒𝑛𝑡𝑒𝑟𝑠 表示各类别中心。  𝑐𝑙𝑢𝑠𝑡𝑒𝑟_𝑠𝑡𝑑 表示每个类别的方差。

#输出: X:样本特征,其中每行代表一个样本,每列代表一个特征。 y:样本聚类标签。

#使用 𝑠𝑘𝑙𝑒𝑎𝑟𝑛 的 𝑚𝑎𝑘𝑒_𝑏𝑙𝑜𝑏𝑠 方法来生成用于测试聚类算法的效果。 𝑠𝑘𝑙𝑒𝑎𝑟𝑛 中的 𝑚𝑎𝑘𝑒_𝑏𝑙𝑜𝑏𝑠 方法常被用来生成聚类算法的测试数据,直观地说, 𝑚𝑎𝑘𝑒_𝑏𝑙𝑜𝑏𝑠 会根据用户指定的特征数量、中心点数量、范围等来生成几类数据,这些数据可用于测试聚类算法的效果。

#使用make_blobs生成训练数据,生成100个样本,每个样本2个特征,共4个聚类,聚类中心分别为[-1,-1],[0,0],[1,1],[2,2],聚类方差分别为0.4,0.2,0.2,0.2

plt.scatter(X[:,0],X[:,1])

plt.show()
#画出训练样本的散点图,散点图的横坐标为样本的第一维特征,纵坐标为样本的第二维特征

训练样本的散点图

1.2 𝑘=3 进行聚类并画出聚类结果的散点图

kmeans=KMeans(n_clusters=3)

#生成kmeans分类器,聚类数量为3,其余参数使用默认值。

y_pre=kmeans.fit_predict(X)

#使用fit_predict方法计算聚类中心并且预测每个样本的聚类索引。

plt.scatter(X[:,0],X[:,1],c=y_pre)

#可以通过以下方式将各聚类结果显示为不同的颜色
#𝑝𝑙𝑡.𝑠𝑐𝑎𝑡𝑡𝑒𝑟(𝑥,𝑦,𝑐=𝑙𝑎𝑏𝑒𝑙)

#画出训练样本的散点图,散点图的横坐标为样本的第一维特征,纵坐标为样本的第二维特征,将各聚类结果显示为不同的颜色

plt.show()

在这里插入图片描述


2.1 导入iris数据集数据

iris = load_iris()     #导入iris数据集,iris数据集包含了150个样本,分别属于3类,每个样本包含4个特征
data_train=iris.data   #iris样本集的样本特征
label_train=iris.target #iris样本集的样本标签

2.2 𝑘=3 进行聚类并画出聚类结果的散点图

kmeans=KMeans(n_clusters=3)    

#生成kmeans分类器,聚类数量为3,其余参数使用默认值。

y_pre=kmeans.fit_predict(data_train)

#使用fit_predict方法计算聚类中心并且预测每个样本的聚类索引。

plt.scatter(data_train[:,0],data_train[:,-2],c=y_pre)

#画出训练样本的散点图,散点图的横坐标为样本的第一维特征,纵坐标为样本的第三维特征,将各聚类结果显示为不同的颜色.

plt.show()

在这里插入图片描述


  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wp猿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值