1. 针对课件中的例子自己实现k-means算法
  2. 调用R语言自带kmeans()对给定数据集表示的文档进行聚类。
  3. 给定数据集:

a)         数据代表的是文本信息。

b)        第一行代表词语,由于保密原因,词语已经被转意。第一列代表了文本的编号。

c)         红框中的数字为对应词的词频。

共113个样本,用K-Means算法将样本分为8类。

1、针对课件中的例子自己实现k-means算法

rm(list=ls())
#导入数据 id<-c(1:8)
x<-c(1,2,1,2,4,5,4,5)
y<-c(1,1,2,2,3,3,4,4)
inputdata<-data.frame(id,x,y) #计算距离函数
cal_distance<-function(x1,y1,x2,y2){
dis=(x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)
dis=sqrt(dis)
return(dis)
} #假定随机选择的两个对象,如序号1和序号3当作初始点
center1=matrix(c(inputdata[1,2],inputdata[1,3]))
center2=matrix(c(inputdata[3,2],inputdata[3,3])) #一开始两个簇都是空的
cu1<-c()
cu2<-c() for(time in 1:5)
{
#遍历每一个点
for(i in 1:length(inputdata$id))
{
distance1=cal_distance(inputdata$x[i],inputdata$y[i],center1[1],center1[2])
distance2=cal_distance(inputdata$x[i],inputdata$y[i],center2[1],center2[2])
if(distance1<=distance2)
{
cu1<-c(cu1,i)
}
else
{
cu2<-c(cu2,i)
}
} #更新簇1的质心
sx=0
sy=0
for(i in 1:length(cu1))
{
sx=sx+inputdata$x[cu1[i]]
sy=sy+inputdata$y[cu1[i]]
}
center1[1]=sx*1.0/length(cu1)
center1[2]=sy*1.0/length(cu1) #更新簇2的质心
sx=0
sy=0
for(i in 1:length(cu2))
{
sx=sx+inputdata$x[cu2[i]]
sy=sy+inputdata$y[cu2[i]]
}
if(center2[1]==sx*1.0/length(cu2)&&center2[2]==sy*1.0/length(cu2))
{
break
}
center2[1]=sx*1.0/length(cu2)
center2[2]=sy*1.0/length(cu2)
cu1<-c()
cu2<-c()
} cat("簇1质心: ",center1[1]," ",center1[2])
print("簇1包含的元素有: ")
for(i in 1:length(cu1))
{
print(cu1[i])
}
print("")
cat("簇2质心: ",center2[1]," ",center2[2])
print("")
print("簇1包含的元素有: ")
for(i in 1:length(cu2))
{
print(cu2[i])
}

2、  调用R语言自带kmeans()对给定数据集表示的文档进行聚类。

rm(list=ls())

setwd("C:/Users/Administrator/Desktop/R语言与数据挖掘作业/实验5-聚类分析")

data = read.table("data_cluster.txt")

kc <- kmeans(data, 8) #分类模型训练

print(kc)

#fitted(kc) #查看具体分类情况
#table(data$Species, data$cluster)#查看分类概括

R语言——实验5-聚类分析的更多相关文章

  1. R语言——实验4-人工神经网络

    带包实现: rm(list=ls()) setwd("C:/Users/Administrator/Desktop/R语言与数据挖掘作业/实验4-人工神经网络") Data=rea ...

  2. R语言- 实验报告 - 利用R语言脚本与Java相互调用

    一. 实训内容 利用R语言对Java项目程序进行调用,本实验包括利用R语言对java的.java文件进行编译和执行输出. 在Java中调用R语言程序.本实验通过eclipse编写Java程序的方式,调 ...

  3. R语言简单实现聚类分析计算与分析(基于系统聚类法)

    聚类分析计算与分析(基于系统聚类法) 下面以一个具体的例子来实现实证分析.2008年我国其中31个省.市和自治区的农村居民家庭平均每人全年消费性支出. 根据原始数据对我国省份进行归类统计. 原始数据如 ...

  4. R语言 实验三 数据探索和预处理

    计算缺失值个数 计算缺失率   简单统计量:计算最值     箱形图分析   分布分析:画出频率直方图 统计量分析:对于连续属性值,求出均值以及标准差         缺失值处理:删除法     去除 ...

  5. 社交网络分析的 R 基础:(一)初探 R 语言

    写在前面 3 年的硕士生涯一转眼就过去了,和社交网络也打了很长时间交道.最近突然想给自己挖个坑,想给这 3 年写个总结,画上一个句号.回想当时学习 R 语言时也是非常戏剧性的,开始科研生活时到处发邮件 ...

  6. 用R语言对NIPS会议文档进行聚类分析

    一.用R语言建立文档矩阵 (这里我选用的是R x64 3.2.2) (这里我取的是04年NIPS共计207篇文档做分析,其中文档内容已将开头的作者名和最后的参考文献进行过滤处理) ##1.Data I ...

  7. 实验的方差分析(R语言)

    实验设计与数据处理(大数据分析B中也用到F分布,故总结一下,加深印象)第3课小结--实验的方差分析(one-way analysis of variance) 概述 实验结果\(S\)受多个因素\(A ...

  8. 独立成分分析(ICA)的模拟实验(R语言)

    本笔记是ESL14.7节图14.42的模拟过程.第一部分将以ProDenICA法为例试图介绍ICA的整个计算过程:第二部分将比较ProDenICA.FastICA以及KernelICA这种方法,试图重 ...

  9. 数据分析与R语言

    数据结构 创建向量和矩阵 函数c(), length(), mode(), rbind(), cbind() 求平均值,和,连乘,最值,方差,标准差 函数mean(), sum(), min(), m ...

随机推荐

  1. TP thinkphp 权限管理 权限认证 功能

    (如有打扰,请忽略)阿里云ECS大羊群,2U4G低至1.4折,限实名新用户,需要的点吧https://promotion.aliyun.com/ntms/act/vm/aliyun-group/tea ...

  2. fedora的选择

    Fedora 首页包含3种版本: 工作站,服务器,ATOMIC 个人只要使用工作站即可,然后,下载界面有另一个选择:Silverblue ========================== Silv ...

  3. C++学习(十)(C语言部分)之 分支语句

    #include<stdio.h> // std 标准  io ---->  input  output  输入 输出  printf scanf getchar ...... #i ...

  4. 【HAOI2011】problem b

    数论好劲啊 原题: 对于给出的n个询问,每次求有多少个数对(x,y),满足a≤x≤b,c≤y≤d,且gcd(x,y) = k,gcd(x,y)函数为x和y的最大公约数. 1≤n≤50000,1≤a≤b ...

  5. linux服务器的日志管理

    消息紧急程度排行 emerg:该系统不可用 alert:需要立即修改 crit:紧急情况 err:错误信息 warning:预警信息 notice:具有重要性的普通条件 info:提供信息的消息 de ...

  6. 解决winfrom下TextBox不支持透明背景色

    不知道微软扯什么拉鸡蛋子,居然有控件不支持透明,我实在想喷设计的人脑残.尤其可恨的是TextBox不支持,更可恨的是直到最新版.net4.6也不支持.源码又看不见,具体实现细节都不知道,谁能改得动?这 ...

  7. DevExpress 控件使用菜单栏之BarManager

    DevExpress 开发的控件有很强的实力,不仅功能丰富,应用简便,而且界面华丽,更可方便定制.对于编程人员来说是个不错的选择.它的菜单栏控件更具代表,完全可以替代开发环境提供的基本控件,而让您编写 ...

  8. 通过LoadGenerator将Linux作为负载机进行压力测试

    前提说明: 测试架构:controller部署在windows操作系统下(windows下安装loadrunner的过程,可以去网上搜下,这里不做解释),loadgenerator部署在linux下. ...

  9. Flex Cairngorm框架知识整理

    简介: Cairngorm是一个开源的Flex项目,为FLex提供了一个类似MVC的体系结构框架,它是Flex RIA开发的最好框架之一.使用Cairngorm框架可以大大提高开发和维护的效率. Ca ...

  10. 基于SVN提交历史筛选作者并修改文件内容

    笔者最近开发的项目中,是通过SVN做为版本管理工具的,因为需要创建的文件太多,所以有许多文件是在原有文件基础上拷贝过来修改的,这里就涉及到一个问题,原有文件中注释里填的JAVA类名.作者工号.创建时间 ...