ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 使用orange进行聚类分析 小麦籽粒几何性状的测定 ## 知识点 - 数据的预处理 - Orange 数据集的格式 - 数据分布的含义 - 特征排序 - ## 实验过程 ### 数据集 种子数据集:https://archive.ics.uci.edu/ml/datasets/seeds > 以下链接下载的文件是一个txt文件,使用TAB格式分隔的,数据需要简单的处理以下才能正常使用。 https://archive.ics.uci.edu/ml/machine-learning-databases/00236/seeds_dataset.txt 处理完的实验数据集,在课程资源包中提供,并做了汉化。     三种不同品种小麦籽粒几何性状的测定。用于软X射线技术和GRAINS构建七个实值属性,所有这些参数都是实值连续的。     1、面积A,      2、周长P,      3、紧凑度C = 4 * pi * A / P ^ 2,4      4、籽粒长度,      5、籽粒宽度,      6、不对称系数      7、核槽的长度。      下载数据的文件格式为.txt格式,将文件格式改为.csv或.xlsx格式。 使用Data Table组件查看数据,显示的一部分数据 ![](https://img.kancloud.cn/65/79/6579f25f0d3183cc62f8c524ead2dd62_1028x597.png) ### 数据预处理 打开orange软件,进行数据预处理 ![](https://img.kancloud.cn/7d/fd/7dfde66b1b10953606b040af194dbebc_325x237.png) 加入文件(File)组件,设置数据源(File)为前面下载并处理后的数据集,设置类别的角色(Role)为目标(target),并将其类型(Type)改成目录化(Categorical) ![](https://img.kancloud.cn/25/15/2515d9915817c55201190a52dd8fe034_616x589.png) 特征排序组件(Rank)可以根据数据特征的相关性对其进行排名和筛选,我们只关心那些对分类有较大帮助的特征(信息量比较大的),双击控件: ![](https://img.kancloud.cn/01/8a/018a8d702ab838732040eb1802351859_937x466.png) 可以看出,紧凑度(compactness)和不对称性(asymmetry)特征的信息量值很低,故将其筛除。 > 可以用数据分布组件(Distributions)通过观察紧凑度(compactness)和不对称性(asymmetry)特征值的分布进行验证。 紧凑度的统计分布 ![](https://img.kancloud.cn/62/25/62256fccd532f93a0a391df49d807c26_936x571.png) > 分布图中可以看出3种类别的数据都混合在一起,因此该特征很难区分不同的类别的种子,因此不合适作为分类的特征,或者说该特征对分类任务来说提供的信息量是很少的。 不对称系统的统计分布 ![](https://img.kancloud.cn/ca/be/cabeb0b4954601a56c90d84d49d3cb64_936x571.png) ## 聚类 ### K-means算法 k均值聚类算法(k-means clustering algorithm)是一种迭代求解的算法,其步骤是: 预将数据分为K组,则随机选取K个对象作为初始的聚类中心,然后计算每个对象与各个种子聚类中心之间的距离,把每个对象分配给距离它最近的聚类中心。聚类中心以及分配给它们的对象就代表一个聚类。每分配一个样本,聚类的聚类中心会根据聚类中现有的对象被重新计算。这个过程将不断重复直到满足某个终止条件。终止条件可以是没有(或最小数目)对象被重新分配给不同的聚类,没有(或最小数目)聚类中心再发生变化,误差平方和局部最小。 双击K-means控件,设置算法参数: > 输入固定簇数(Number of Clusters):3 ![](https://img.kancloud.cn/57/83/5783fe66b5a17873ee7e9c642c65b842_239x335.png) > 选择使用K-means++算法进行初始化 ### 层次聚类 先用距离组件(Distances)计算成对距离的矩阵,然后用层次聚类组件(Hierarchical Clustering)显示从输入距离矩阵构造的层次聚类的树形图        选择Top N = 3,传入数据流到Scatter Plot控件进行可视化: 结果分析:        用Silhouette Plot轮廓组件评价聚类效果。数据越靠近数据簇中心,轮廓值越大;离簇中心越远,轮廓值越小:0为位于两簇之间的点,负数为错误划分到别的簇中。 K-means轮廓图: ![](https://img.kancloud.cn/34/0e/340ef743bb421abd5149095a94feb461_616x616.png) K-means++轮廓图 层次轮廓图:        通过对比其轮廓图,我们发现:在对该数据进行聚类时,K-means算法要比层次聚类要好,层次聚类中有出现负值;而k-means++算法将数据聚成两簇,没有达到我预期得到的聚类结果。