• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

数据分析与挖掘 - R语言:K-means聚类算法 - 猎手家园

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

数据分析与挖掘 - R语言:K-means聚类算法

2016-05-02 22:07  猎手家园  阅读(9695)  评论(1编辑  收藏  举报

一个简单的例子!
环境:CentOS6.5
Hadoop集群、Hive、R、RHive,具体安装及调试方法见博客内文档。

 

1、分析题目
--有一个用户点击数据样本(husercollect)
--按用户访问的时间(时)统计
--要求:分析时间和点击次数的聚类情况


2、数据准备

--创建临时表
DROP TABLE if exists tmp.t2_collect;
CREATE TABLE tmp.t2_collect(
    h int,
    cnt int
) COMMENT \'用户点击数据临时表\';

--插入临时表
insert overwrite table tmp.t2_collect
--分组
select a1.h, count(1) as cnt from(
    --取出时
    select hour(createtime) as h from bdm.husercollect
)a1
group by a1.h;


3、评估K值

#!/usr/bin/Rscript
library(RHive)
rhive.connect(host =\'192.168.107.82\')
data <- rhive.query(\'select h,cnt from tmp.t2_collect limit 6000\')
x <- data$h
y <- data$cnt

--组合成数据框
df <- data.frame(x, y)
--添加列名
colnames(df) <- c("hour", "cnt")

--cluster.stats函数需要使用fpc库
library(fpc)

--k取2到8评估K
K <- 2:8
--每次迭代30次,避免局部最优
round <- 30
rst <- sapply(K, function(i){  
    print(paste("K=",i))
    mean(sapply(1:round,function(r){
        print(paste("Round",r))
        result <- kmeans(df, i)
        stats <- cluster.stats(dist(df), result$cluster)
        stats$avg.silwidth
    }))
})

--加载图形库
library(Cairo)
png("k-points-pic.png", width=800, height=600)
plot(K, rst, type=\'l\', main=\'outline & R relation\', ylab=\'outline coefficient\')

dev.off()
rhive.close()

评估结果:


由上图可见当K=3时,轮廓系数最大。


4、聚类分析

#!/usr/bin/Rscript
library(RHive)
rhive.connect(host =\'192.168.107.82\')
data <- rhive.query(\'select h,cnt from tmp.t2_collect limit 6000\')
x <- data$h
y <- data$cnt

--组合成数据框
df <- data.frame(x, y)
--添加列名
colnames(df) <- c("hour", "cnt")

--Kmeans
kc <- kmeans(df, 3);

--具体分类情况
--fitted(kc);

library(Cairo)
png("k-means-pic.png", width=800, height=600)
plot(df[c("hour", "cnt")], col = kc$cluster, pch = 8);
points(kc$centers[,c("hour", "cnt")], col = 1:3, pch = 8, cex=2);

dev.off()
rhive.close()

聚类结果:

至此,一个简单的K-means聚类算法实例完成!

 


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
R语言实战-统计分析基础-描述性统计3-Hmisc-describe发布时间:2022-07-18
下一篇:
R语言基本画图发布时间:2022-07-18
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap