R语言学习20150414

来源:互联网 发布:心动网络 绑定手机 编辑:程序博客网 时间:2024/06/08 06:44

2015/4/14

今天编写R语言程序,新学到的要点有:

1 (kmeans.result=kmeans(data,3))

    在代码外面加上括号,就可以直接运行出对象的结果

2 在R中写代码,要各种注意大小写的问题,例如赋予空值,必须是NULL,尤其在引用数据行列名的时候更要注意。随时检查改变后的数据

3 plot 的用法

   plot(iris2[c("Petal.Length","Sepal.Width")],col=kmeanss.result$cluster)

   可以直接按照列名选择数据,并且颜色可以按照某个对象分别着色

   还可以注意到,在矩阵的列选择中,如果采用x[,2] 选择出的是第二列向量,如果采用x[2]选择出的是只包含第二列的数据框

4 聚类中的kmeans算法

kmeanss.result<-kmeans(iris2,3)
plot(iris2[c("Petal.Length","Sepal.Width")],col=kmeanss.result$cluster)
points(kmeanss.result$centers[,c("Petal.Length","Sepal.Width")],col=3:5,pch=4,cex=5)    #后两个参数分别定义,点的形状,大小

table(iris$Species,kmeanss.result$cluster)

经典的做法,聚类出结构-----在一个图中显示出聚类结果----画出类的中心点----列表对比聚类的结果和原始的标签

 

5 聚类中的层次聚类法

idx=sample(1:dim(iris)[1],40)
irissam=iris[idx,]
irissam$Species=NULL
hc=hclust(dist(irissam),method="ave")
plot(hc,hang=-1,labels=iris$Species[idx])

rect.hclust(hc,k=5)
groups=cutree(hc,k=3)

核心的代码是hclust(dist())

精妙之处:在plot中,加入hang即设定悬定在哪个纵坐标上比较好,同时如果已经有分类标签的话,也可以作为labels来设定,更好对比

rect.hclust 在层次聚类图中画方框,区别出类别来

groups函数则可以提取出类别数(层次聚类法中竟然木有像 kmeans&cluster 那样的参数!!!)

 

6 DBSCAN 基于密度聚类,这个方法可以标记出这种方法识别出的异常点

library(fpc)

iris2=iris[-5]

ds=dbscan(iris2,eps=0.42,MinPts=5) #这里如何选择 eps 和MinPts是个大学问)

#维数较多时,plot 负责画出所有变量两两之间的关系

plot(ds,iris2)

#只画出固定的两个维度

plot(ds,iris2[c(1,4)])

 

 

 

 

 

 

 

 

0 0
原创粉丝点击