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()
  • 相关阅读:
    Populating Next Right Pointers in Each Node II
    Populating Next Right Pointers in Each Node
    Construct Binary Tree from Preorder and Inorder Traversal
    Construct Binary Tree from Inorder and Postorder Traversal
    Path Sum
    Symmetric Tree
    Solve Tree Problems Recursively
    632. Smallest Range(priority_queue)
    609. Find Duplicate File in System
    poj3159最短路spfa+邻接表
  • 原文地址:https://www.cnblogs.com/todoit/p/2601012.html
Copyright © 2011-2022 走看看