Python 了解SVR scikit learn中收敛所需的迭代次数

Python 了解SVR scikit learn中收敛所需的迭代次数,python,scikit-learn,svm,Python,Scikit Learn,Svm,我试图优化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

我试图优化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笔记本、spyder中查看,或者写入外部文件,因为如果您想查看SVR的进度,verbose选项似乎只适用于IPython IDE

,向SVR的构造函数输入
verbose=2
请注意,这会使进度减慢一个数量级

from sklearn.svm import SVR
import numpy as np

n_samples, n_features = 10, 5
np.random.seed(0)
y = np.random.randn(n_samples)
X = np.random.randn(n_samples, n_features)
clf = SVR(C=1.0, epsilon=0.2,verbose=2)
clf.fit(X, y)
输出将是

optimization finished, #iter = 4
obj = -4.366801, rho = -0.910470
nSV = 7, nBSV = 5

其中,您要寻找的是iter(国际热核试验堆)

(1)一般来说,您应该使用更多的调节,并进行完全收敛(2)没有办法预先计算所需的迭代次数(当然,这也严重依赖于使用的算法)。(3) 在a-posteriori设置中,我在API中没有看到任何东西(我认为SGD方法不同;但是SVR在内部使用liblinear/libsvm,在您的例子中是libsvm,因为rbf内核),但是您可以尝试修改代码或为此激活详细性(我认为)。(4)当然:始终使用交叉验证。谢谢您的回答。我已经尝试了你的代码,但我没有得到你得到的信息。我正在使用Anaconda和scikit学习版0.18.1的jupyter笔记本。你认为这是什么原因?你说的“没有得到信息”是什么意思?你把
verbose=2
放在构造函数中了吗,没有得到我输出的代码..?我得到的输出是:SVR(C=1.0,cache_size=200,coef0=0.0,degree=3,epsilon=0.2,gamma='auto',kernel='rbf',max_iter=-1,sking=True,tol=0.001,verbose=5)我在聊天室找不到你。。。请进入chat.stackoverflow.com,查找房间“SVR迭代”,然后输入它。很高兴我提供了帮助,如果您将其标记为回答“v”,我将不胜感激,这刚好低于评分-面向未来用户。我不知道为什么Jupyter不显示它,但这是另一个问题:)