![](/img/trans.png)
[英]Recursive Feature Elimination and Grid Search for SVR using scikit-learn
[英]Knowing the number of iterations needed for convergence in SVR scikit-learn
我正在嘗試優化 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
如果您想查看 SVR 的進度,請在 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
是您要查找的內容
在現代版本的 Scikit-learn 中,您有n_iter_
屬性 ( docs ),它是一個形狀為n_classes * (n_classes - 1) // 2
的 ndarray,其中包含所有需要的迭代以適合每個類的所有模型:
import numpy as np
model = SVR(...parameters)
model.fit(x, y)
print('Iterations needed:', np.sum(model.n_iter_))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.