R语言中的亲和力传播

时间:2014-12-19 04:49:32

标签: r

我是学生,我在研究中使用亲和传播。我在R中安装了apcluster个软件包。我想对CSV格式的NSL-KDD数据集进行亲和性传播。我使用以下方法上传了数据集:

smp<- read.csv("F:/nsl1.csv", header=FALSE)
decision.table <- data.frame(smp)
View(smp)

现在我想为数据集做AP。

我尝试了这个命令,但它没有帮助。

apcluster((s, smp, p=NA, q=NA, maxits=1000, convits=100, lam=0.9, 
          includeSim=TRUE, details=FALSE, nonoise=FALSE, seed=NA, ...))
你能帮帮我吗? 提前谢谢。

1 个答案:

答案 0 :(得分:3)

嗯,有以下问题:

  • 双括号在语法上是不正确的。
  • 什么是's'?您必须提供相似性度量或相似性矩阵作为参数's。
  • 你不能传递一个省略号参数'...',除了从一个也有这种省略号参数的函数内部(为了将任何其他参数传递给apcluster())。
  • 您无需指定所有参数,只需指定不使用默认参数的参数。

我的建议是从以下简单变体开始:

apcluster(negDistMat(r=2), smp)

我对NSL-KDD数据集有所了解,我认为你需要做更多的事情才能让apcluster在这些数据上合理地工作:

  • 数据集似乎包含分类列。如果您按照上面的示例应用apcluster(),则apcluster()将省略所有分类列(如果它们是数据框'smp'中的因子)。因此,您应首先将分类列转换为数字列,例如通过将每个因子扩展到尽可能多的二进制列,因为列具有不同的值(R lingo中的“级别”)。
  • 在我看来,数据集太大而无法运行标准AP。标准AP计算二次相似度矩阵,因此可以处理的限制类似于5,000个样本。如果你有更多,你必须采取一个子样本(其缺点是可能会丢失一些较小的集群)或使用杠杆AP。我在http://nsl.cs.unb.ca/NSL-KDD/看到的训练集有大约125,000个样本,即使对于杠杆AP也可能是一个很大的挑战。因此,我建议您从子样本开始,以了解AP在此数据集上的工作情况。

有关详细信息,请参阅包装插图。