R 文本挖掘 Part2--几个聚类分类算法以及应用
来源:互联网 发布:淘宝绽放茉莉恶心 编辑:程序博客网 时间:2024/05/21 02:21
一、一些聚类,分类算法
1.k-means
http://blog.sina.com.cn/s/blog_4ac9f56e0101h8xp.html
2.系统 层次
http://blog.sina.com.cn/s/blog_615770bd01018dnj.html
3.文本分类 knn
http://blog.csdn.net/cl1143015961/article/details/44413631
二、例子:k-means, 系统,k-中心,knn,svm,kernel聚类
其中knn方法可以替代一中的3方法
1.层次聚类
library(tm) reut21<-system.file('texts','crude',package = 'tm') reuts<-Corpus(DirSource(reut21),readerControl = list(reader = readReut21578XML) ) data(crude) data(acq) #词条文档 crudeTDM<-TermDocumentMatrix(crude,control = list(stopwords = TRUE)) inspect(crudeTDM) ##dissimilarity(crudeTDM,method ='cosine') 新版没有了 #crudeDTM <- removeSparseTerms(crudeDTM, 0.8) #可以选择去除权重较小的项 crudeTDM.matrix <- as.matrix(crudeTDM) ##距离矩阵 dist(crudeTDM.matrix,method = 'euclidean') inspect(acq) m<-c(acq,crude) ##组合 dtm<-DocumentTermMatrix(m) dtm<-removeSparseTerms(dtm,0.8) inspect(dtm) ditm<-dist(dtm,method = 'euclidean') hc<-hclust(ditm,"average") plot(hc,xlab = 'xzhou') re<-rect.hclust(hc,k=2,border="red")
2.K-means聚类
kmeans R中不用提供距离矩阵
k<-kmeans(dtm,2) summary(k) mode(k) #kmeansRes的内容 names(k) k$cluster #聚类结果 k$size #每个类别下有多少条数据
#sort(kmeansRes$cluster) #对分类情况进行排序'''"cluster"是一个整数向量,用于表示记录所属的聚类 "centers"是一个矩阵,表示每聚类中各个变量的中心点"totss"表示所生成聚类的总体距离平方和"withinss"表示各个聚类组内的距离平方和"tot.withinss"表示聚类组内的距离平方和总量"betweenss"表示聚类组间的聚类平方和总量"size"表示每个聚类组中成员的数量'''
3.k中心聚类
注意这个x可以是数据矩阵或者距离矩阵
library(cluster) pa<-pam(ditm,2) #分两类 summary(pa)
4.knn算法 最近邻算法 做分类
library('class') #knn所在包 library('kernlab') install.packages('kernlab') data(spam) View(spam) ##训练集,垃圾邮件和非垃圾邮件 train <- rbind(spam[1:1360, ], spam[1814:3905, ]) trainCl <- train[,"type"] ##分类,就是给加了一个分类的列 View(train) test <- rbind(spam[1361:1813, ], spam[3906:4601, ]) trueCl <- test[,"type"] ##去除原来有分类的列 knnCl <- knn(train[,-58], test[,-58], trainCl) ##table("1-NN" = knnCl, "Reuters" = trueCl)对角线 (nnTable <- table("1-NN" = knnCl, "Reuters" = trueCl)) sum(diag(nnTable))/nrow(test) #查看分类正确率 #提取对角线或者构造对角线矩阵 diag
5.支持向量机svm
##type ~ .表示,用type来分类
ksvmTrain <- ksvm(type ~ ., data = train) svmCl <- predict(ksvmTrain, test[,-58]) (svmTable <- table("SVM" = svmCl, "Reuters" = trueCl)) sum(diag(svmTable))/nrow(test)
5.软件包kernlab中的specc()方法可以实现kernel聚类算法。用这个聚类可能效果不是很理想
例子:
a=c(3,3,3,5,5,6,6,3,5,3,7,9,5,7) data<-matrix(data=a,ncol=2,byrow=FALSE) library(kernlab) stringkern <-stringdot(type="string") kernelRes <-specc(data,centers=2,kernel=stringkern) mode(kernelRes)
阅读全文
0 0
- R 文本挖掘 Part2--几个聚类分类算法以及应用
- 文本挖掘之文本聚类的介绍以及应用
- R文本挖掘之四文本分类
- R语言做文本挖掘 Part2分词处理
- R语言做文本挖掘 Part2分词处理
- R语言做文本挖掘 Part2分词处理
- R语言做文本挖掘 Part2分词处理
- R语言:文本挖掘 主题模型 文本分类
- R语言做文本挖掘 Part4文本分类
- R语言做文本挖掘 Part4文本分类
- R语言做文本挖掘 Part4文本分类
- R语言-文本挖掘 主题模型 文本分类
- R语言做文本挖掘 Part3文本聚类
- R语言做文本挖掘 Part3文本聚类
- R文本挖掘之三文本聚类
- R语言做文本挖掘 Part3文本聚类
- R语言|文本挖掘应用|标签云
- 数据挖掘算法-聚类的分类
- 一个可供参考的Java高并发异步应用案例--转
- 通俗理解决策树中的熵&条件熵&信息增益
- Day11-38.Iteration
- Java Socket 实现HTTP与HTTPS协议发送POST/GET请求
- iOS 发布程序~笔记
- R 文本挖掘 Part2--几个聚类分类算法以及应用
- B: 字符串的展开
- Joint Cascade Face Detection and Alignment流程
- Android 轮番图
- VS2013之c++调用Lua5.3.x方法
- Day12-39.Foreach syntax
- MailBee.NET Objects退回邮件教程(二):POP3部分
- 三种常见的部署Kubernetes的方式
- #笔记 简单使用flex与sticky footer方式解决底部固定在底栏的问题