zoukankan      html  css  js  c++  java
  • R对term进行kmeans聚类完整实例(tm包)

    ##连接数据库,将数据库中的文件读取出来
    #加载包
    library(RMySQL) 
    #建立连接
    conn <- dbConnect(dbDriver("MySQL"), dbname = "eswp", user="root", password="root")
    #读取 表2008yearnew
    text = dbReadTable(conn, "2008yearnew")[100:102,2:2]#只读取mesh词的那一列,通过前面的第一个下标修改读取的行数,读取20行
    
    #加载tm包
    library(tm)
    #建立语料库
    corpus=Corpus(VectorSource(text))
    #从语料库建立词-文档矩阵,用tf-idf来表示,stopwords = stopwords("mesh")#表示使用mesh停用词表,停用词表放在tm包中的stopwords文件夹中,目前停用词表中只有aged一词
    tdm = TermDocumentMatrix(corpus,control = list(stopwords=stopwords("mesh"), weighting = weightTfIdf))
    
    ##词太多,需要在这里进行筛选,初步根据tf-idf值进行筛选
    
    
    #进行kmeans聚类,可以使用的距离算法有"Hartigan-Wong", "Lloyd", "Forgy","MacQueen"四种
    km <- kmeans(tdm, 2, iter.max = 10, nstart = 1, algorithm = "Hartigan-Wong")
    
    #查看聚类结果
    km$size#查看聚类结果统计信息,每一类的个数
    km[km$cluster==3]#查看第三类结果
    
    #画图——如果类数目较多,则会重合看不清楚,使用下列方法画出大像素图形
    png("test.png",width=3000,height=3000) #将输出设备改为png,像素尽可能的大,但是如果改的过大容易出现问题。
    #画出空白图形,待在上面添加文本标签,下列方法在http://statmath.wu.ac.at/courses/multverf2/tutorien/kmeans.pdf看到的,好像是主成分分析,暂时不明白其意义
    tdm.pca =  prcomp(tdm, scale = TRUE)
    plot(predict(tdm.pca)[, 1:2], type = "n")
    #画出聚类后的图形,并加上文本标签
    text(predict(tdm.pca)[, 1:2], rownames(tdm), col = km$cluster)
    #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()
  • 相关阅读:
    数据库课程设计报告学生学籍管理信息系统
    C++ 指针
    解决知乎推荐视频问题
    踩坑指南接口返回前端json数据报错前端无法接收到
    java的接口如何设计异常的理解
    关于webapp项目打war包的问题
    关于继承的一点理解
    hadoop简介
    杨卫华:新浪微博的架构发展历程(转)
    linux server 配置vim编程位置
  • 原文地址:https://www.cnblogs.com/todoit/p/2601012.html
Copyright © 2011-2022 走看看