一个简单的例子!
环境: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聚类算法实例完成!

数据分析与挖掘 - R语言:K-means聚类算法的更多相关文章

  1. 零基础数据分析与挖掘R语言实战课程(R语言)

    随着大数据在各行业的落地生根和蓬勃发展,能从数据中挖金子的数据分析人员越来越宝贝,于是很多的程序员都想转行到数据分析, 挖掘技术哪家强?当然是R语言了,R语言的火热程度,从TIOBE上编程语言排名情况 ...

  2. 数据分析与挖掘 - R语言:贝叶斯分类算法(案例一)

    一个简单的例子!环境:CentOS6.5Hadoop集群.Hive.R.RHive,具体安装及调试方法见博客内文档. 名词解释: 先验概率:由以往的数据分析得到的概率, 叫做先验概率. 后验概率:而在 ...

  3. 数据分析与挖掘 - R语言:KNN算法

    一个简单的例子!环境:CentOS6.5Hadoop集群.Hive.R.RHive,具体安装及调试方法见博客内文档. KNN算法步骤:需对所有样本点(已知分类+未知分类)进行归一化处理.然后,对未知分 ...

  4. 数据分析与挖掘 - R语言:多元线性回归

    一个简单的例子!环境:CentOS6.5Hadoop集群.Hive.R.RHive,具体安装及调试方法见博客内文档. 线性回归主要用来做预测模型. 1.准备数据集: X Y 0.10 42.0 0.1 ...

  5. 数据分析与挖掘 - R语言:贝叶斯分类算法(案例三)

    案例三比较简单,不需要自己写公式算法,使用了R自带的naiveBayes函数. 代码如下: > library(e1071)> classifier<-naiveBayes(iris ...

  6. 数据分析与挖掘 - R语言:贝叶斯分类算法(案例二)

    接着案例一,我们再使用另一种方法实例一个案例 直接上代码: #!/usr/bin/Rscript library(plyr) library(reshape2) #1.根据训练集创建朴素贝叶斯分类器 ...

  7. 【机器学习与R语言】11- Kmeans聚类

    目录 1.理解Kmeans聚类 1)基本概念 2)kmeans运作的基本原理 2.Kmeans聚类应用示例 1)收集数据 2)探索和准备数据 3)训练模型 4)评估性能 5)提高模型性能 1.理解Km ...

  8. 机器学习实战---K均值聚类算法

    一:一般K均值聚类算法实现 (一)导入数据 import numpy as np import matplotlib.pyplot as plt def loadDataSet(filename): ...

  9. 基于R语言的梯度推进算法介绍

    通常来说,我们可以从两个方面来提高一个预测模型的准确性:完善特征工程(feature engineering)或是直接使用Boosting算法.通过大量数据科学竞赛的试炼,我们可以发现人们更钟爱于Bo ...

随机推荐

  1. python基础---->python的使用(七)

    这里记录python关于io.装饰器和序列化的一些知识.面对大河我无限惭愧,我年华虚度,空有一身疲倦,和所有以梦为马的诗人一样,岁月易逝 一滴不剩. python的一些知识 一.python中的装饰器 ...

  2. java基础---->使用Itext生成数据库文档

    这里简单的介绍一下使用Itext生成数据库表的文档.于是我们领教了世界是何等凶顽,同时又得知世界也可以变得温存和美好. 生成数据库的文档 一.maven项目需要引入的jar依赖 <depende ...

  3. Entity Framework6的在线下载安装

    Entity Framework6的在线下载安装 Entity Framework 简单介绍: 看名字就知道肯定是关于数据模型的…… Entity Framework:微软官方提供的ORM()工具,O ...

  4. CentOS 安装Sqlite3

    wget http://www.sqlite.org/sqlite-autoconf-3070500.tar.gz tar xvzf sqlite-autoconf-3070500.tar.gz cd ...

  5. NodeJS 实现基于 token 的认证应用

    此段摘自 http://zhuanlan.zhihu.com/FrontendMagazine/19920223 英文原文 http://code.tutsplus.com/tutorials/tok ...

  6. 扩展Spring切面

    概述 Spring的切面(Spring动态代理)在Spring中应用十分广泛,例如还有事务管理,重试等等.网上介绍SpringAop源码很多,这里假设你对SpringAop有基本的了解.如果你认为Sp ...

  7. centos6.5安装logwatch监控日志

    Logwatch是使用 Perl 开发的一个日志分析工具Logwatch能够对Linux 的日志文件进行分析,并自动发送mail给相关处理人员,可定制需求Logwatch的mail功能是借助宿主系统自 ...

  8. POJ-2081 Recaman's Sequence

    Recaman's Sequence Time Limit: 3000MS Memory Limit: 60000K Total Submissions: 22392 Accepted: 9614 D ...

  9. MapReduce分组

     分组:相同key的value进行分组  例子:如下输入输出,右边的第一列没有重复值,第二列取得是当第一列相同时第二例取最大值 分析:首先确定<k3,v3>,k3的选择两种方式, 方法1. ...

  10. 蓝桥杯 - G将军有一支训练有素的军队 - [树形DP]

    G将军有一支训练有素的军队,这个军队除开G将军外,每名士兵都有一个直接上级(可能是其他士兵,也可能是G将军).现在G将军将接受一个特别的任务,需要派遣一部分士兵(至少一个)组成一个敢死队,为了增加敢死 ...