如何在scikitlearn MLPrepressor中设置历元数?

2024-09-28 05:21:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用scikit learn mlprepressor进行一些有监督的学习。我想知道什么是时代数字在监督学习中的杠杆作用。在

但当我把MLP设置成这样:

mlp = MLPRegressor(max_iter=100, learning_rate_init=0.1)

然后这个:

^{pr2}$

然后这个:

mlp = MLPRegressor(max_iter=500, learning_rate_init=0.1)

预测分数保持不变。 我不知道用max_iter来设置epoch的数目是否正确,因为虽然我改变了max_iter的数目,但是预测分数是恒定的。 但是当我改变学习率的时候,分数也会改变,所以学习率有一些杠杆作用。在

有人能帮忙吗?谢谢


Tags: rateinit数字scikitlearn分数maxlearning
2条回答

使用max_iter确实是限制纪元数量的正确方法。根据^{}的文档:

max_iter : int, optional, default 200 Maximum number of iterations. The solver iterates until convergence (determined by ‘tol’) or this number of iterations. For stochastic solvers (‘sgd’, ‘adam’), note that this determines the number of epochs (how many times each data point will be used), not the number of gradient steps.

注意,它们的实现也有一个针对tol参数的收敛性检查,即,当两个迭代之间的代价变化小于tol时,学习将停止。tol默认设置为0.0001(10e-4),这可能对您的用例/训练数据有太大的容忍度,也可能不是太大。

在您的例子中,这个精度似乎在100次迭代之前就达到了(max_iter=100)。

粗略地说,通过使优化器能够在训练集中更长时间地搜索最优解决方案,时间的数量起到了杠杆作用。但是正如@fxx所说,如果两次迭代之间的成本变化不小于tol,mlprepressor实现将停止epoch的数量。在您的例子中,您可以减少tol参数,以迫使算法运行更长时间。

为了实现更好的性能,您还可以检查算法的learning_rate。0.1可能有点太多了,因此优化器可能会超调。

相关问题 更多 >

    热门问题