R语言中的亲和力传播

  • 本文关键字:亲和力 传播 语言 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, ...))

你能帮帮我吗?
提前谢谢你。

嗯,有以下问题:

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

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

apcluster(negDistMat(r=2), smp)

我看了一下 NSL-KDD 数据集,我认为你还需要做一些事情才能使 apcluster 在这些数据上合理地工作:

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

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

最新更新