【问题标题】:'SVC' object has no attribute 'best_params_'“SVC”对象没有属性“best_params_”
【发布时间】:2020-04-20 00:48:44
【问题描述】:
def ParamSelection(X, Y, nfolds): 
    Cs = [0.0001, 0.001, 0.01, 0.1, 1, 10, 100]
    degrees = [1, 2, 3, 4, 5]
    param_grid = {'C': Cs, 'degree' : degrees}
    grid_search = GridSearchCV(svm.SVC(kernel = 'poly'), param_grid, cv = nfolds)
    grid_search = svm.SVC(gamma='scale')
    grid_search.fit(X, Y)
    grid_search.best_params_
    return grid_search.best_params_
ParamSelection(trainX, trainY, 10)

AttributeError: 'SVC' 对象没有属性 'best_params_'

我收到上述错误。我该怎么办?你能帮忙吗?

【问题讨论】:

    标签: python scikit-learn svc


    【解决方案1】:

    您将GridSearch 重新分配给svm,因此您的GridSearch 对象不是sklearn 对象。只需删除这一行:

    grid_search = svm.SVC(gamma='scale')
    

    然后它应该运行良好。您将收到弃用警告,因此在实例化 SVC() 时设置 gamma 参数:

    grid_search = GridSearchCV(svm.SVC(kernel = 'poly', gamma='scale'), param_grid, cv = nfolds)
    

    【讨论】:

    • 如果我删除这一行,我会得到这个错误; FutureWarning:在 0.22 版本中,gamma 的默认值将从“auto”更改为“scale”,以更好地考虑未缩放的功能。将 gamma 显式设置为 'auto' 或 'scale' 以避免出现此警告。 “避免这个警告。”,FutureWarning)
    • 这不是错误。这是一个弃用警告。它只是意味着:您可以执行此操作,但是当我们更新库时,您将无法再执行此操作。我编辑了答案来解释它。
    • ParamSelection(trainX, trainY, 10) 调用此函数但我无法获得任何输出
    • 您打印了结果吗?您是否将它们分配给新变量?无论哪种方式,最好在 S/O 上每个线程只保留一个问题。
    猜你喜欢
    • 2021-10-03
    • 2020-07-02
    • 2020-03-13
    • 2020-07-02
    • 2017-03-29
    • 1970-01-01
    • 2021-07-06
    • 1970-01-01
    • 2019-03-29
    相关资源
    最近更新 更多