楼主: 天涯印象
6986 9

[问答] R语言聚类分析,对多个变量进行聚类 [推广有奖]

  • 0关注
  • 0粉丝

已卖:48份资源

硕士生

4%

还不是VIP/贵宾

-

威望
0
论坛币
53 个
通用积分
0.0600
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
3305 点
帖子
58
精华
0
在线时间
142 小时
注册时间
2016-4-17
最后登录
2024-3-14

楼主
天涯印象 学生认证  发表于 2016-12-5 21:36:13 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
placeheightwaterfallicesoildepthwindday
哈巴河

532.6

173.8

150

61.8

阿勒泰

735.1

191.5

146

37.7

克拉玛依

427

114.4

197

75.4

巴楚

1116.5

41.6

64

7.6

莎车

1231.2

42.5

93

11

于田

1427

46.4

81

1.4

hc.single=hclust(dist(xinj[,2:5]),method = "single")
plot(hc.complete,main = "Single Linkage",xlab="",labels=xinj$place,sub = "place",cex=.9)

Rplot.png
上面的语句只是对height这个参数进行了聚类,R语言如何对后面四个参数进行聚类分析呢?求大神解答,谢谢!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:聚类分析 多个变量 R语言 Complete Linkage 聚类 R语言 多变量

回帖推荐

飞天玄舞6 发表于4楼  查看完整内容

把除了place变量外的变量标准化,用z-score和max-min都行,再做聚类进行了。

飞天玄舞6 发表于2楼  查看完整内容

数据没有标准化,没有消除量纲的影响,在这里height变量占主导作用,聚类是错误的。

沙发
飞天玄舞6 在职认证  发表于 2016-12-5 22:50:45
数据没有标准化,没有消除量纲的影响,在这里height变量占主导作用,聚类是错误的。
已有 1 人评分经验 论坛币 收起 理由
李会超 + 100 + 20 精彩帖子

总评分: 经验 + 100  论坛币 + 20   查看全部评分

藤椅
天涯印象 学生认证  发表于 2016-12-6 11:03:42
飞天玄舞6 发表于 2016-12-5 22:50
数据没有标准化,没有消除量纲的影响,在这里height变量占主导作用,聚类是错误的。
能不能针对这个例子详细解答一下,谢谢

板凳
飞天玄舞6 在职认证  发表于 2016-12-6 14:25:57
天涯印象 发表于 2016-12-6 11:03
能不能针对这个例子详细解答一下,谢谢
把除了place变量外的变量标准化,用z-score和max-min都行,再做聚类进行了。

报纸
qiu435 发表于 2016-12-6 16:20:37
scale()函数进行标准化或中心化处理,sweep()函数进行极差标准化,这三种处理都可以

地板
天涯印象 学生认证  发表于 2016-12-10 11:22:19
飞天玄舞6 发表于 2016-12-6 14:25
把除了place变量外的变量标准化,用z-score和max-min都行,再做聚类进行了。
感谢您的指导,这是我修改后的代码和图形,这个结果应该是正确的吧,还请指正,谢谢
xj<-xinj[,2:5]
xj2<-data.frame((xj$height-min(xj$height))/(max(xj$height)-min(xj$height)),
       ((xj$waterfall-min(xj$waterfall))/(max(xj$waterfall)-min(xj$waterfall))
        ((xj$icesoildepth-min(xj$icesoildepth))/(max(xj$icesoildepth-min(xj$icesoildepth))))
        ((xj$windday-min(xj$windday))/(max(xj$windday)-min(xj$windday)))))
xj2<-data.frame(xinj[,1],xj2)
xj2<-xj2[,2:6]
hc.single=hclust(dist(xj2[2:5]),method = "single")
plot(hc.single,main = "Single Linkage",xlab="",labels=xj2$xinj...1.,ylab="",sub = "place",cex=.9) xjjulei.png

7
飞天玄舞6 在职认证  发表于 2016-12-10 11:43:13
天涯印象 发表于 2016-12-10 11:22
感谢您的指导,这是我修改后的代码和图形,这个结果应该是正确的吧,还请指正,谢谢
xj
标准化的时候不用那么麻烦,可以用apply函数,而进行min-max标准化的函数可以自定义为
  1. fun <- function(x) (x-min(x))/(max(x)-min(x))
  2. xj2 <- apply(xj, 2, FUN=fun) # use method "min-max"
复制代码

8
飞天玄舞6 在职认证  发表于 2016-12-10 11:47:55
天涯印象 发表于 2016-12-10 11:22
感谢您的指导,这是我修改后的代码和图形,这个结果应该是正确的吧,还请指正,谢谢
xj
另外,第三行xj2只有5列,而第四行xj2[,2:6]怎么取得,哪有6列?

9
天涯印象 学生认证  发表于 2016-12-10 15:19:18
飞天玄舞6 发表于 2016-12-10 11:47
另外,第三行xj2只有5列,而第四行xj2[,2:6]怎么取得,哪有6列?
  1. fun <- function(x) (x-min(x))/(max(x)-min(x))
  2. xj3 <- apply(xinj[,2:5], 2, FUN=fun) # use method "min-max"
  3. xj3<-data.frame(xinj[,1],xj3)     #重新添加place列
  4. hc.single=hclust(dist(xj3[2:5]),method = "single")
  5. plot(hc.single,main = "Single Linkage",xlab="",labels=xj3$xinj...1.,ylab="",sub = "place",cex=.9)
复制代码
Rplot01.png
那个6是因为当时添加了两遍place那一列
已有 1 人评分经验 收起 理由
飞天玄舞6 + 60 精彩帖子

总评分: 经验 + 60   查看全部评分

10
飞天玄舞6 在职认证  发表于 2016-12-10 15:35:14
天涯印象 发表于 2016-12-10 15:19
那个6是因为当时添加了两遍place那一列
Check! {:3_52:}

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-20 10:17