zoukankan      html  css  js  c++  java
  • 用R进行文档层次聚类完整实例(tm包)

    ##R对文档进行层次聚类的尝试
    #
    #连接数据库,将数据库中的文件读取出来 #加载包 library(RMySQL) #建立连接 conn <- dbConnect(dbDriver("MySQL"), dbname = "eswp", user="root", password="root") #读取 表2008yearnew text = dbReadTable(conn, "2008yearnew")[,2:2]#只读取mesh词的那一列,通过前面的第一个下标修改读取的行数 #加载tm包 library(tm) #建立语料库 corpus=Corpus(VectorSource(text)) #从语料库建立文档-词矩阵,用tf-idf来表示,stopwords = stopwords("mesh")表示使用mesh停用词表,停用词表放在tm包中的stopwords文件夹中 dtm = DocumentTermMatrix(corpus,control = list(stopwords=stopwords("mesh"), weighting = weightTfIdf)) #用夹角余弦计算文档之间相似度 dist_dtm <- dissimilarity(dtm, method = 'cosine') #根据相似度进行层次聚类,距离使用average即类平均法距离,可以使用的其他距离有,single,complete,median,mcquitty,average,centroid,ward等 hc <- hclust(dist_dtm, method = 'ave') #聚类图 plot(hc) #如果类数目较多,则会重合看不清楚,使用下列方法画出大像素图形 png(width=4000,height=3000) #将输出设备改为png,像素尽可能的大,这个是200个文档的看着很清楚的设置 #cex为标签的大小,同时,可以使用cex.axis属性来改变坐标系上数字的大小,使用cex.lab改变下面矩阵名字的大小 #使用cex.main改变上方标题的大小,使用cex.sub改变下方聚类方法名称的大小,lwd是图形中线的宽度,此时图形将会在工作目录中看到 plot(hc,cex=2,cex.axis=3,cex.lab=3,cex.main=3,cex.sub=3,lwd=1.5) dev.off() #使用cutree函数查看聚类结果,k=2表示将结果分成2类,这种方式效果不好,往往是某一类特别多,某一类特别少 ct = cutree(hc,k=2) #使用cutree函数按高度查看聚类结果 ct1 = cutree(hc,h=0.9) #结果统计信息 table(ct) #查看第一类中的文档,如果要查看其他类,以此类推 ct1 <- ct[ct==1];ct1
  • 相关阅读:
    Fastify 系列教程四 (求对象、响应对象和插件)
    Fastify 系列教程三 (验证、序列化和生命周期)
    Fastify 系列教程二 (中间件、钩子函数和装饰器)
    Fastify 系列教程一 (路由和日志)
    使用 Vuejs 开发 chrome 插件的注意事项
    五十行javascript代码实现简单的双向数据绑定
    markown编辑器截图粘贴预览,并将图片传至七牛云
    线程与进程的区别
    TeamViewer卡在正在初始化显示参数
    Chrome 字体模糊解决
  • 原文地址:https://www.cnblogs.com/todoit/p/2599640.html
Copyright © 2011-2022 走看看