LD调整包
LDAtuning Package
我尝试在 LDA 算法中为我的数据库找到最佳主题数。为此,我尝试使用包“ldatuning”。在使用“gibbs”方法实现 LDA 算法后,我尝试使用函数:
Griffiths2004(模型,对照)
论点应该是:
models class 的对象“LDA
控制用于估计的控制参数的命名列表或class“LDAcontrol”的对象。
我是这样用的:
Griffiths2004(lda_5, lda_5@control)
R 只是在这之后说:
as.list.default(X) 中的费勒:
无法更改向量中的 S4 Klasse
有人可以解释一下我需要更改什么才能使用此功能吗?我不明白。
亲切的问候
汤姆
问题可能在于您如何将控制参数列表传递给 Griffiths2004 函数。
在 Griffiths2004 函数中,参数在使用 control$param
的列表中寻址。但是,lda_5@control
returns 一个 S4 对象,其中参数应使用 control@param
寻址。 (An S4 object 是 R 中的高级 class,但此应用程序的唯一重要区别是,我们使用 @ 而不是 $ 来处理这些列表中的对象)
调用时可以看到lda@control
是一个S4对象:
> lda@control
An object of class "LDA_Gibbscontrol"
Slot "delta":
[1] 0.1
Slot "iter":
[1] 2100
Slot "thin":
[1] 2000
Slot "burnin":
[1] 100
...
它拥有所谓的插槽而不是简单的列表名称。
您可以通过将控制参数作为列表传递给 LDA 模型来避免遇到的问题。
这是一个例子:
library('Rmpfr')
library("topicmodels")
library("ldatuning")
# create LDA model with Gibbs sampling
data("AssociatedPress", package="topicmodels")
dtm <- AssociatedPress[1:10, ]
# pass controls as a list (otherwise it does not work!)
controls = list(burnin = 100, iter = 2000, keep = 500, alpha = 0.1)
# get model and pass controls list
lda <- LDA(AssociatedPress[1:20,], k = 2, method = "Gibbs",
control = controls)
# Griffith score:
Griffiths2004(list(lda), controls)
# Output:
[1] -30355.28
在列表中传递 lda 模型也很重要,因为 Griffiths2004 函数会迭代模型列表。
还要确保您已经安装了 ldatuning 包中使用的 Rmpfr 包的所有附加依赖项。
我尝试在 LDA 算法中为我的数据库找到最佳主题数。为此,我尝试使用包“ldatuning”。在使用“gibbs”方法实现 LDA 算法后,我尝试使用函数:
Griffiths2004(模型,对照) 论点应该是: models class 的对象“LDA 控制用于估计的控制参数的命名列表或class“LDAcontrol”的对象。
我是这样用的:
Griffiths2004(lda_5, lda_5@control)
R 只是在这之后说: as.list.default(X) 中的费勒: 无法更改向量中的 S4 Klasse
有人可以解释一下我需要更改什么才能使用此功能吗?我不明白。
亲切的问候 汤姆
问题可能在于您如何将控制参数列表传递给 Griffiths2004 函数。
在 Griffiths2004 函数中,参数在使用 control$param
的列表中寻址。但是,lda_5@control
returns 一个 S4 对象,其中参数应使用 control@param
寻址。 (An S4 object 是 R 中的高级 class,但此应用程序的唯一重要区别是,我们使用 @ 而不是 $ 来处理这些列表中的对象)
调用时可以看到lda@control
是一个S4对象:
> lda@control
An object of class "LDA_Gibbscontrol"
Slot "delta":
[1] 0.1
Slot "iter":
[1] 2100
Slot "thin":
[1] 2000
Slot "burnin":
[1] 100
...
它拥有所谓的插槽而不是简单的列表名称。
您可以通过将控制参数作为列表传递给 LDA 模型来避免遇到的问题。
这是一个例子:
library('Rmpfr')
library("topicmodels")
library("ldatuning")
# create LDA model with Gibbs sampling
data("AssociatedPress", package="topicmodels")
dtm <- AssociatedPress[1:10, ]
# pass controls as a list (otherwise it does not work!)
controls = list(burnin = 100, iter = 2000, keep = 500, alpha = 0.1)
# get model and pass controls list
lda <- LDA(AssociatedPress[1:20,], k = 2, method = "Gibbs",
control = controls)
# Griffith score:
Griffiths2004(list(lda), controls)
# Output:
[1] -30355.28
在列表中传递 lda 模型也很重要,因为 Griffiths2004 函数会迭代模型列表。
还要确保您已经安装了 ldatuning 包中使用的 Rmpfr 包的所有附加依赖项。