【发布时间】:2017-05-20 02:08:39
【问题描述】:
我正在尝试优化 SVR 模型,但由于过度拟合而面临问题,为了克服这个问题,我尝试减少迭代次数,而不是让它直到收敛。
要比较这两种模型,我需要两种情况的迭代次数。 在开放的情况下如何知道收敛所需的迭代次数(max_iter=-1)?
这是我的代码:
model_1=SVR(kernel='rbf', C=316, epsilon=0, gamma=0.003162,max_iter=2500)
model_1.fit(tr_sets[:,:2],tr_sets[:,2])
print(model_1.score)
model_2=SVR(kernel='rbf', C=316, epsilon=0, gamma=0.003162,max_iter=-1)
model_2.fit(tr_sets[:,:2],tr_sets[:,2])
print(model_2.score)
编辑:现在通过设置 verbose=2 解决了 IPython IDE 的问题,但仍需要在 Jupyter notebook、spyder 中查看或写入外部文件,因为详细选项似乎只有使用 IPython IDE
【问题讨论】:
-
(1) 一般来说,你应该使用更多的正则化并实现完全收敛 (2) 没有办法先验计算所需的迭代次数(当然这也很大程度上取决于使用的算法)。 (3) 在 a-posteriori 设置中,我在 API 中看不到任何内容(我认为 SGD 方法不同;但 SVR 在内部使用 liblinear/libsvm,在您的情况下是 libsvm,因为 rbf 内核),但您可以尝试为此修改代码或激活详细程度(我认为)。
-
(4) 当然:总是使用交叉验证。
标签: python scikit-learn svm