Scikit set_params()

fle*_*xup 5 python scikit-learn

我想使用 set_params() 设置 SVC 的参数,如下面的示例代码所示。

from sklearn.svm import SVC

params = {'C': [.1, 1, 10]}

for k, v in params.items():
    for val in v:
        clf = SVC().set_params(k=val)
        print(clf)
        print()
Run Code Online (Sandbox Code Playgroud)

如果我运行代码,我会收到以下错误:

ValueError: Invalid parameter k for estimator SVC
Run Code Online (Sandbox Code Playgroud)

如何将密钥正确放入 set_params() 中?

yan*_*jie 9

问题实际上是如何使用字符串作为关键字参数。您可以构造一个参数 dict 并将其传递给set_params使用**语法。

from sklearn.svm import SVC

params = {'C': [.1, 1, 10]}

for k, v in params.items():
    for val in v:
        clf = SVC().set_params(**{k: val})
        print(clf)
        print()
Run Code Online (Sandbox Code Playgroud)

出去:

SVC(C=0.1, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,
  kernel='rbf', max_iter=-1, probability=False, random_state=None,
  shrinking=True, tol=0.001, verbose=False)

SVC(C=1, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,
  kernel='rbf', max_iter=-1, probability=False, random_state=None,
  shrinking=True, tol=0.001, verbose=False)

SVC(C=10, cache_size=200, class_weight=None, coef0=0.0, degree=3, gamma=0.0,
  kernel='rbf', max_iter=-1, probability=False, random_state=None,
  shrinking=True, tol=0.001, verbose=False)
Run Code Online (Sandbox Code Playgroud)


Kam*_*Sen 5

虽然前一个答案工作正常,但用多个参数覆盖这种情况可能会很有用。在这种情况下,sklearn 也有一个很好的便利功能来创建参数网格,这使它更具可读性。

from sklearn.model_selection import ParameterGrid
from sklearn.svm import SVC
param_grid = ParameterGrid({'C': [.1, 1, 10], 'gamma':["auto", 0.01]})

for params in param_grid:
    svc_clf = SVC(**params)
    print (svc_clf)
Run Code Online (Sandbox Code Playgroud)

这给出了类似的结果:

SVC(C=0.1, cache_size=200, class_weight=None, coef0=0.0,In [235]: 
  decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False)
SVC(C=0.1, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape=None, degree=3, gamma=0.01, kernel='rbf',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False)
SVC(C=1, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False)
SVC(C=1, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape=None, degree=3, gamma=0.01, kernel='rbf',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False)
SVC(C=10, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape=None, degree=3, gamma='auto', kernel='rbf',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False)
SVC(C=10, cache_size=200, class_weight=None, coef0=0.0,
  decision_function_shape=None, degree=3, gamma=0.01, kernel='rbf',
  max_iter=-1, probability=False, random_state=None, shrinking=True,
  tol=0.001, verbose=False)
Run Code Online (Sandbox Code Playgroud)