K-means聚类分析案例(二)

 我来答
大沈他次苹0B
2022-07-02 · TA获得超过7320个赞
知道大有可为答主
回答量:3059
采纳率:100%
帮助的人:177万
展开全部

之前的笔记:
聚类介绍: 点这里
层次聚类分析案例(一):世界银行样本数据集
层次聚类分析案例(二):亚马逊雨林烧毁情况
层次聚类分析案例(三):基因聚类
K-means聚类分析案例(一)

K-means聚类案例(二)食品

我们所吃的食物中的营养成分可以根据它们在构建身体构成的作用来分类。这些营养元素可分为宏量营养元素和微量元素。一些宏量营养元素包括碳水化合物、蛋白质、脂肪,一些微量元素的例子是维生素、矿物质和水。

准备工作

让我们从准备数据开始。

第1步:收集和描述数据

为了应用k均值聚类,我们使用采自不同食物种类的数据集进行实验,其中包含了每种食物各自的能量(Energy)、蛋白质(Protein)、脂肪(Fat)、钙(Calcium)、铁(Iron)等含量。 数据获取

其中数值型变量如下:
Energy
Protein
Fat
Calcium
Iron
非数值型变量如下:
Food

具体实施步骤
以下为实现细节。

第2步:探索数据

载入cluster()库。

探索数据并理解数据变量间的关系。从导入名为foodstuffs.txt的文本文件开始,将其保存在food.energycontent数据框中。

head()函数返回向量、矩阵、表、数据框或函数的首尾部分。将food.energycontent数据框传入head()函数:

结果如下:

str()函数返回food.energycontent数据框的结构信息。结果简洁地显示了其内部结构。

str(food.energycontent)

结果如下:

第3步:转换数据

apply()函数执行了数据框和矩阵中逐个元素的数据变换。它返回一个向量、数组、链表,其中的值是通过应用一个函数到一个数组或矩阵的边缘。其中2代表了函数要应用的列下标。sd是标准差函数,用于这个数据框。

结果如下:

sweep()函数返回一个数组,从一个输入数组中清除一些统计信息。food.energycontent[,-1]作为一个数组传入。其中2代表了函数要应用的列下标。standard.deviation是需要被清除的统计信息。

结果如下:

第4步:聚类

kmeans()函数施行k均值聚类到数据矩阵上。数据矩阵foodergycnt.stddev被当作一个对象传入,该对象是一个数值型矩阵。centers=5代表初始的簇中心数量。iter.max=100代表最大的迭代轮数。因为簇数量由一个数字指定,nstart=25定义了随机被指定的组数量。

结果如下:

指定4个中心簇:

结果如下:

输出4个簇的聚类向量,结果如下:

接下来,输出4个聚类方案的聚类以及食品标签。

lapply()函数返回一个与X同样长度的链表:

结果如下:

第5步:可视化聚类结果

使用pair()函数生成一个散点图矩阵。

food.energycontent[,-1]通过给定一个矩阵或数据框的数值来提供点的坐标。

结果如下:

princomp()函数在给定数值型数据矩阵上进行主成分分析。该函数产生了非旋转的主成分分析结果。cor=T代表一个逻辑值,指明了计算需要使用相关矩阵。

par()函数整合多个绘图结果到一个统一的图中。s产生一个正方形绘图区域。

par(pty="s")

绘制这个聚类:

结果如下:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
光点科技
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件... 点击进入详情页
本回答由光点科技提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式