我正在尝试两种方法来最小化成本函数。第一个是optim(),第二个是优化包的optim_nm()部分。我面临的问题是我的错误函数有2个参数,
optim(par = variableParameters,fn = error_function,par2 = fixedParameters):
optim处理这个很好,因为第一个参数是变量参数,函数然后是一组可选参数,我可以传递固定参数。但是,这个功能很慢。
optim_nm(fun = error_function,k = 5,start = variable_parameters)
optim_nm,允许我调整优化函数,但是,我不确定如何传递固定参数。文档中的所有示例都带有可变参数。
这两种方法都实现了Nelder和Mead算法,该算法对于我所要求的不可区分的错误函数是健壮的。如果有其他软件包快速执行此操作,请同时提及它们!
如果有人使用过这个,或者可以更好地解释文档,我可以使用你的帮助。
答案 0 :(得分:2)
创建一个填充固定参数值的包装函数:
sub_ids = ["2ypash", "7ocvlb", "7okxkf"]
commentlist = []
for sub_id in sub_ids:
submission = reddit.submission(id=sub_id)
submission.comments.replace_more(limit=None, threshold=0)
comments = submission.comments.list()
for comment in comments:
commentsdata = {}
commentsdata["id"] = comment.id
commentsdata["subreddit"] = str(submission.subreddit)
commentsdata["thread"] = str(submission.title)
commentsdata["author"] = str(comment.author)
commentsdata["body"] = str(comment.body)
commentsdata["score"] = comment.score
commentsdata["created_utc"] = datetime.datetime.fromtimestamp(comment.created_utc)
commentsdata["parent_id"] = comment.parent_id
commentlist.append(commentsdata)
如果评估error_function <- function(variableParameters, fixedParameters) {
...
}
wrapper <- function(x) {
error_function(x, fixedParameters = 3)
}
optim_nm(fun = wrapper,
k = 5,
start = initial_parameter_values)
费用昂贵,您可能需要使用error_function
或rBayesianOptimization
个套餐来查看贝叶斯优化。