首页 分享 数据挖掘——对鸢尾花数据进行聚类分析

数据挖掘——对鸢尾花数据进行聚类分析

来源:花匠小妙招 时间:2025-05-13 18:23

算法原理

k-means算法是一种聚类算法,所谓聚类,即根据相似性原则,将具有较高相似度的数据对象划分至同一类簇,将具有较高相异度的数据对象划分至不同类簇。聚类与分类最大的区别在于,聚类过程为无监督过程,即待处理数据对象没有任何先验知识,而分类过程为有监督过程,即存在有先验知识的训练数据集。
k-means算法中的k代表类簇个数,means代表类簇内数据对象的均值(这种均值是一种对类簇中心的描述),因此,k-means算法又称为k-均值算法。k-means算法是一种基于划分的聚类算法,以距离作为数据对象间相似性度量的标准,即数据对象间的距离越小,则它们的相似性越高,则它们越有可能在同一个类簇。数据对象间距离的计算有很多种,k-means算法通常采用欧氏距离来计算数据对象间的距离。

实验内容

1、随机生成100个数,并对这100个数进行k-mean聚类(k=3,4,5,6)(并用matplot画图)

import numpy as np import matplotlib from sklearn.cluster import KMeans import matplotlib.pyplot as plt matplotlib.rcParams['font.family'] = 'SimHei' # 中文显示 dataSet = np.random.rand(100, 3) # 生成一个随机数据,样本大小为100, 特征数为3 for k in range(3, 7): clf = KMeans(n_clusters=k) # 设定k s = clf.fit(dataSet) # 加载数据集合 numSamples = len(dataSet) centroids = clf.labels_ print(centroids, type(centroids)) # 显示中心点 print(clf.inertia_) # 显示聚类效果 mark = ['or', 'ob', 'og', 'ok', '^r', '+r', 'sr', 'dr', '<r', 'pr'] # 画出所有样例点 属于同一分类的绘制同样的颜色 for i in range(numSamples): # markIndex = int(clusterAssment[i, 0]) plt.plot(dataSet[i][0], dataSet[i][1], mark[clf.labels_[i]]) # mark[markIndex]) mark = ['Dr', 'Db', 'Dg', 'Dk', '^b', '+b', 'sb', 'db', '<b', 'pb'] # 画出质点,用特殊图型 centroids = clf.cluster_centers_ for i in range(k): plt.plot(centroids[i][0], centroids[i][1], mark[i], markersize=12) # print centroids[i, 0], centroids[i, 1] plt.title(str(k)+"-mean聚类") plt.show() 123456789101112131415161718192021222324252627

在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述实验结果分析
由实验结果可以直观看出选择类簇个数不同,分类效果不同,当分为三类时每个点到其簇的质心距离之和最大,随簇数增加,每个点到其簇的质心距离之和减小,但有图可以看出当簇增大时分类较杂乱
2、对鸢尾花数据进行K-means算法聚类(并用matplot画图)

import matplotlib import matplotlib.pyplot as plt from sklearn.cluster import KMeans from sklearn.datasets import load_iris matplotlib.rcParams['font.family'] = 'SimHei' # 中文显示 # 鸢尾花K-means聚类散点图 iris = load_iris().data K_means = KMeans(n_clusters=3) # 三个聚类中心 result = K_means.fit(iris) # means 自动分类 kc = result.cluster_centers_ # 自动分类后的聚类中心 y_means = K_means.predict(iris) # 预测y值 plt.title("鸢尾花数据集的K-means聚类散点图", fontsize=16) plt.scatter(iris[:,0],iris[:,2],c=y_means, marker='.',label='see') plt.show() 123456789101112131415

在这里插入图片描述实验结果分析
通过数据集iris的属性值将鸢尾花分为3类,即K值为3,可视化图形后可直观明了的看出3类鸢尾花的散点图,进而基于K均值模型可进一步预测鸢尾花类型。

相关知识

数据挖掘——对鸢尾花数据进行聚类分析
多元统计分析——聚类分析——鸢尾花数据集在K
数理统计:鸢尾花数据的聚类分析和判别分析
鸢尾花数据集下载
k均值聚类分析鸢尾花数据集
鸢尾花数据聚类分析
MATLAB鸢尾花数据集K
基于鸢尾花数据集实施自组织神经网络聚类分析
鸢尾花数据集,揭开数据可视化分析的奥秘
Iris鸢尾花数据集可视化、线性回归、决策树分析、KMeans聚类分析

网址: 数据挖掘——对鸢尾花数据进行聚类分析 https://www.huajiangbk.com/newsview1947017.html

所属分类:花卉
上一篇: 利用python内置K
下一篇: 【机器学习】决策树(实战)

推荐分享