大家好,今天来为大家解答高效数据分析:R语言实现数据挖掘算法详解这个问题的一些问题点,包括也一样很多人还不知道,因此呢,今天就来为大家分析分析,现在让我们一起来看看吧!如果解决了您的问题,还望您关注下本站哦,谢谢~
基本思想:
假设每个类包含多个训练数据,并且每个训练数据都有唯一的类别标签。计算每个训练数据与待分类元组之间的距离,选择距离待分类元组最近的k个训练数据。 k个数据中哪一类训练数据占大多数,则待分类的元组就属于该类别。
主要功能:
knn()
在R 中加载类库:
图书馆(类)
例子:
数据(iris3)
#选择前30条数据作为训练数据
train-rbind(虹膜[1:30,1],虹膜[1:30,2],虹膜[1:30,3])
#剩下的作为测试数据
测试-rbind(虹膜[31:50,1],虹膜[31:50,2],虹膜[31:50,3])
c1-因子(c(rep("s",30),rep("c",30),rep("v",30)))
#进行KNN算法分类
knn(训练,测试,c1,k=3,prob=TRUE)
属性(.Last.value)
2、决策树算法(C4,5)
主要功能:
J48()
准备:
安装.packages("rJava")
install.packages("派对")
install.packages("RWeka")
install.packages("partykit")
图书馆(RWeka)
图书馆(党)
例子:
oldpar=par(mar=c(3,3,1.5,1),mgp=c(1.5,0.5,0),cex=0.3)
数据(虹膜)
m1-J48(物种~.数据=鸢尾花)
米1
表(鸢尾花$物种,预测(m1))
写入点(m1)
if(require("party",quietly=TRUE)) 情节(m1)
生成树如下:
C4,5
3、CART算法
CART生成的决策树(Classification and Regression Tree,分类回归树)。
主要功能:
树()
准备:
install.packages("树")
图书馆(树)
例子:
#设置窗口参数
oldpar=par(mar=c(3,3,1.5,1),mgp=c(1.5,0.5,0),cex=0.7)
数据(虹膜)
#CART品种分类
ir.tr=树(物种~.鸢尾花)
摘要(ir.tr)
#绘制决策树图
情节(ir.tr):文本(ir.tr)
生成树如下:
CART
4、BP神经网络算法
生成的决策树主要功能:
网络()
准备:
安装.packages("nnet")
图书馆(网络)
例子:
数据(iris3)
ir-rbind(iris3[,1],iris3[,2],iris3[,3])
目标类.ind(c(rep("s",50),rep("c",50),rep("v",50)))
#提取25个样本
samp-c(样本(1:50,25),样本(51:100,25),样本(101:150,25))
ir1-nnet(ir[samp,],目标[samp,],大小=2,范围=0.1,衰减=5e-4,maxit=200)
test.c1-function(true,pred){
true-max.col(true)
cres-max.col(pred)
表(真,cres)
}
#对样本外的数据进行测试
test.c1(目标[-samp,],预测(ir1,ir[-samp,]))
聚类
1、K-means算法
K-means 算法是典型的基于距离的聚类算法。它以距离作为相似度的评价指标,即认为两个对象之间的距离越近,相似度就越大。
主要功能:
公里平均值()
例子:
#随机生成样本数据
x-rbind(矩阵(rnorm(10000,sd=0.3),ncol=10),矩阵(rnorm(10000,平均值=1,sd=0.3),ncol=10))
colnames(x)-c("x1","x2","x3","x4","x5","x6","x7","x8","x9","x10")
#调用K-means算法
c1-Kmeans(x,2)
pch1=rep("1",1000)
pch2=rep("2",1000)
绘图(x,col=c1 $簇,pch=c(pch1,pch2))
点(c1$centers,col=3,pch="*",cex=3)
2、PAM算法
PAM(Partitioning around Medoid,围绕中心点分区)是最早提出的k-medoids算法之一。它尝试对n 个对象进行k 个分区。在最初随机选择k 个中心点后,算法会反复尝试找到更好的中心点。
主要功能:
帕姆()
准备:
库(集群)
例子:
pamx=pam(x,2)
摘要(pamx)
plot(pamx,main="pam渲染") #数据集同上
3、Clara算法
主要思想:不管整个数据集,选择一小部分实际数据作为数据的样本,然后使用PAM方法从样本中选择中心点。如果样本是随机选择的,则它应该足以代表原始数据集。从中选择的代表对象(中心点)很可能与从整个数据集中选择的对象非常相似。 Clara提取数据集的多个样本,对每个样本应用PAM算法,并返回最好的聚类结果作为输出。
主要功能:
克拉拉()
准备:
库(集群)
例子:
克拉克斯=克拉拉(x,2)
克拉克斯
clarax$clusinfo
plot(clarax,main="clara graph") #数据集同上
层次聚类
1、AGNES算法与DIANA算法
AGNES(Agglomerative Nesting)算法是一种凝聚层次聚类方法。最初将每个对象视为一个簇,然后根据一定的标准将这些簇逐步合并,直到所有对象最终合并为一个簇或满足某种终止条件。
DIANA(Divisive ANAanalysis)算法是一种分裂层次聚类方法。采用自上而下的策略,首先将所有对象放入一个簇中,然后逐渐将其细分为越来越小的簇,直到每个对象形成自己的簇或满足某个终止条件。
主要功能:
艾格尼丝(),戴安娜()
准备:
库(集群)
例子:
AGNES 和DIANA 算法比较
#将图形显示区域分为两部分
par(mfrow=c(1,2))
数据(花)
dai.f=雏菊(花,类型=列表(asymm=3,orratio=7))
agn.f=agnes(dai.f,method="ward")
plot(agn.f,which.plot=2,cex=0.7,yaxt="n",main="agnes算法聚类图")
dia.f=diana(dai.f) #注意这里的dia.f与dai.f不同
plot(dia.f,which.plot=2,main="戴安娜算法的聚类图")
结果图如下:
agnes 和diana 算法对比(这张图有点丑,大家可以自己尝试一下.)
基于密度聚类
主要思想:只要相邻区域的密度(物体或数据点的数量)超过一定门槛,继续聚善。
优点:可以过滤“嘈杂”的孤立点数据并找到任意形状的簇。
1、DBSCAN算法
DBSCAN (Density-Based Spatial Clustering of Application with Noise) 是一种代表性的基于密度的方法,它根据密度阈值控制簇的增长。
主要功能:
数据库扫描()
准备:
库(集群)
例子:
dflower-daisy(花,类型=列表(asymm=c("V1","V3"),symm=2,正常=4,序数=c(5,6),orratio=7,logratio=8))
DBF=DBSCAN(dflower,eps=0.65,MinPts=5,距离=T)
数据库文件
基于模型聚类
1、COBWEB算法
COBWEB 是一种流行的简单增量概念聚类算法。它以分类树的形式创建层次聚类,其中每个节点对应一个概念,包含该概念的概率描述,并总结该节点下分类的对象。
主要功能:
蛛网()
准备:
install.packages("RWeka")
图书馆(RWeka)
例子:
com=rbind(cbind(rnorm(20,0,0.5),rnorm(20,0,0.5)),cbind(rnorm(30,5,0.5),rnorm(30,5,0.5)))
类=因子(代表(2:1,c(20,30)))
dcom=data.frame(com,class)
c1-蛛网(dcom)
c1
c1$class_ids
表(预测(c1),dcom$clas)
模糊聚类
1、FCM算法
FCM(Fuzzy C-Means)算法是一种模糊聚类算法。与硬划分不同,模糊聚类方法是一种软划分。对于模糊集,一个数据点在一定程度上属于某个类,也可以同时不同程度地属于多个类。
主要功能:
舳()
准备:
库(集群)
例子:
z=rbind(cbind(rnorm(100,0,0.5),rnorm(100,0,0.5)),cbind(rnorm(150,5,0.5),rnorm(150,5,0.5),cbind(rnorm(300) ,3.2,0.5),rnorm(300,3.2,0.5))))
z
fannyz=fanny(z,3,metric="SqEuclidean")
摘要(范妮兹)
plot(fannyz,main="模糊算法聚类图")
参考
方匡南。基于数据挖掘的分类聚类算法研究及R语言实现[D].暨南大学,2007。
【高效数据分析:R语言实现数据挖掘算法详解】相关文章:
2.米颠拜石
3.王羲之临池学书
8.郑板桥轶事十则
用户评论
一直想学习一下数据挖掘,看样子R语言挺合适的
有16位网友表示赞同!
这篇文章刚好能帮我入门啊!终于找到学习资料了
有13位网友表示赞同!
R语言真强大,可以用来做很多应用
有10位网友表示赞同!
最近在学统计分析,这种算法应该还挺实用的
有11位网友表示赞同!
对数据挖掘的概念比较朦胧,看这篇文章希望能更清晰一些
有7位网友表示赞同!
我手头有一些数据集需要处理,感觉R语言的数据挖掘功能挺有帮助的
有20位网友表示赞同!
学习R语言可以让我更好地理解数据的内涵
有19位网友表示赞同!
这个标题很吸引人,我想了解一下数据挖掘的具体应用
有16位网友表示赞同!
数据挖掘算法和机器学习好像很有关系吧?
有5位网友表示赞同!
希望这篇文章能提供一些具体的代码案例
有6位网友表示赞同!
要学会使用R语言还需要一些时间练习
有13位网友表示赞同!
我对数据分析领域挺感兴趣,希望能通过这个文章学到更多
有12位网友表示赞同!
学习新的编程语言总是充满挑战和乐趣!
有5位网友表示赞同!
希望文章能讲清楚算法的工作原理,这样理解起来更清晰
有20位网友表示赞同!
R语言是一个开源的统计软件包吧?
有14位网友表示赞同!
数据挖掘在各个行业都有应用,很有借鉴意义
有15位网友表示赞同!
学习完这些算法之后能做哪些实际项目呢?
有18位网友表示赞同!
这个话题听起来非常专业!我会好好阅读文章学习。
有12位网友表示赞同!
希望这篇文章能够让我了解到R语言的数据挖掘应用领域
有7位网友表示赞同!
数据挖掘的未来趋势是什么?很想知道.
有9位网友表示赞同!