概述
load("C:/Users/pc/Documents/毕设/data/rdmTweets.Rdata")
library(NLP)
library(SnowballC)
library(RColorBrewer)
library(wordcloud)
library(tm)
library(twitteR)
library(ggplot2)
rdmTweets[11: 15]
#10.2 Transforming Text
#把推文转换成数据框类型
df <- do.call("rbind", lapply(rdmTweets, as.data.frame))
dim(df)
#构建一个语料库,并将源指定为字符向量
dongCorpus <- Corpus(VectorSource(df$text))
#转换成大写字母
dongCorpus <- tm_map(dongCorpus, tolower)
#去掉标点符号
dongCorpus <- tm_map(dongCorpus, removePunctuation)
#移除数字
dongCorpus <- tm_map(dongCorpus, removeNumbers)
#设置超链接的模式
removeURL <- function(x) gsub("http[[:alnum:]]*", "", x)
#移除超链接
dongCorpus <- tm_map(dongCorpus, removeURL)
#使用英文停词表,并加入“avaliable”和“via”
dongStopwords <- c(stopwords('english'), "availale", "via")
#给停词表加入“big”
dongStopwords <- setdiff(dongStopwords, c("big"))
#移除停词表中的单词
dongCorpus <- tm_map(dongCorpus, removeWords, dongStopwords)
#10.3 Stemmin Words
#先做一份拷贝,便于比较前后差异
dongCorpusCopy <- dongCorpus
#去掉词缀
dongCorpus <- tm_map(dongCorpus, stemDocument)
#for (i in 11: 15) {
# cat(paste("[[", i, "]]", sep = ""))
# writeLines(strwrap(myCorpus[[i]], width = 73))
#}
#myCorpus <- tm_map(myCorpus, stemCompletion, dictionary = myCorpusCopy)
#比较前后差异
inspect(dongCorpusCopy[11: 15])
inspect(dongCorpus[11: 15])
#10.4 Building a Term-Document Matrix
#选取任意长度的单词建立单词-文本矩阵
dongTdm <- TermDocumentMatrix(dongCorpus, control = list(wordLengths = c(1, Inf)))
dongTdm
#10.5 Frequent Terms ans Associations
#显示频数不低于10的词汇集
findFreqTerms(dongTdm, lowfreq = 10)
#对每个单词的个数进行计数
termFreQuency <- rowSums(as.matrix(dongTdm))
#筛选,只留下频数大于10的单词
termFreQuency <- subset(termFreQuency, termFreQuency >= 10)
termFreQuency
qplot(names(termFreQuency), termFreQuency, xlab = "Terms") + geom_bar(stat= 'identity') + coord_flip()
#barplot(termFreQuency, las = 2)
findAssocs(myTdm, 'r', 0.25)
findAssocs(dongTdm, 'mine', 0.25)
#10.6 word cloud
#转化成常规矩阵
m <- as.matrix(dongTdm)
#统计词频
wordFreq <- sort(rowSums(m), decreasing = TRUE)
#设置随机种子
set.seed(375)
#计算灰度值
grayLevels <- gray( (wordFreq+10) / max(wordFreq + 10) )
#绘制词云
wordcloud(words = names(wordFreq), freq = wordFreq, min.freq = 3, random.order = F, colors = grayLevels)
#10.7 Clustering Words
#移除空项,压缩矩阵
dongTdm2 <- removeSparseTerms(dongTdm, sparse = 0.95)
#把矩阵转化为常规矩阵
m2 <- as.matrix(dongTdm2)
#生成单词距离矩阵
distMatrix <- dist(scale(m2))
#使用“ward.D”方法进行单词聚类
fit <- hclust(distMatrix, method = "ward.D")
#绘制分类图
plot(fit)
#加入分类框,设置类别数10,使得分类图看起来更加直观
rect.hclust(fit, k = 10)
#显示各单词类别序号
(group <- cutree(fit, k = 10))
#10.8.1 Clustering Tweets with the k-means Algorithm
#将矩阵转化为文本集群
m3 <- t(m2)
#设置集群数目为8
k <- 8
#使用kmeans算法聚类分析
kmeansResult <- kmeans(m3, k)
#生成聚类中心
round(kmeansResult$centers, digits = 3)
for (i in 1 : k) {
cat(paste("cluster ", i, ": ", sep = ""))
s <- sort(kmeansResult$centers[i, ], decreasing = T)
cat(names(s)[1:3], "n")
}
#10.8.2 Clustering Tweets with the k-medoids Algorithm
#在估计聚类数量的情况下围绕中心点进行分区
pamResult <- pamk(m3,metric = "manhattan")
#获取集群数目
(k <- pamResult$nc)
pamResult <- pamResult$pamobject
#打印每个集群中心点
for (i in 1: k) {
cat(paste("cluster", i, ": "))
cat(colnames(pamResult$medoids)[which(pamResult$medoids[i, ] == 1)], "n")
}
#同时显示两个图
layout(matrix(c(1, 2), 2, 1))
#绘制聚类结果图
plot(pamResult, color = F, labels = 4, lines = 0, cex = .8, col.p = pamResult$clustering)
最后
以上就是鳗鱼爆米花为你收集整理的R语言数据挖掘样例的全部内容,希望文章能够帮你解决R语言数据挖掘样例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复