【问题标题】:Model definition does not give any output模型定义没有给出任何输出
【发布时间】:2021-02-07 11:58:49
【问题描述】:
from sklearn.linear_model import LogisticRegression
logmodel = LogisticRegression()
logmodel

上面代码的输出只是

LogisticRegression()

但我希望得到更详细的信息,包括模型参数,即:

LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                   intercept_scaling=1, l1_ratio=None, max_iter=100,
                   multi_class='auto', n_jobs=None, penalty='l2',
                   random_state=None, solver='lbfgs', tol=0.0001, verbose=0,
                   warm_start=False)

我做错了什么?

【问题讨论】:

    标签: python scikit-learn


    【解决方案1】:

    这是由于从 scikit-learn v0.23 开始更改了默认 configuration settings;来自changelog

    默认设置 print_changed_only 已从 False 更改为 True。这意味着估计器的repr 现在更加简洁,并且仅显示在打印估计器时其默认值已更改的参数。您可以使用sklearn.set_config(print_changed_only=False) 恢复以前的行为。另外请注意,使用est.get_params(deep=False) 始终可以快速检查任何估算器的参数。

    也就是说,在v0.23之前的版本中,代码如下:

    import sklearn
    sklearn.__version__
    # 0.22.2
    
    from sklearn.linear_model import LogisticRegression
    lr = LogisticRegression()
    lr
    

    使用所有模型参数生成以下输出:

    LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                       intercept_scaling=1, l1_ratio=None, max_iter=100,
                       multi_class='auto', n_jobs=None, penalty='l2',
                       random_state=None, solver='lbfgs', tol=0.0001, verbose=0,
                       warm_start=False)
    

    但是从 v0.23 开始的相同代码:

    import sklearn
    sklearn.__version__
    # 0.23.2
    
    from sklearn.linear_model import LogisticRegression
    lr = LogisticRegression()
    lr
    

    只会产生:

    LogisticRegression()
    

    在像这里这样的情况下,即没有明确定义参数,并且所有参数都保持默认值。这是因为print_changed_only 参数现在默认设置为True

    sklearn.get_config()
    
    # result:
    
    {'assume_finite': False,
     'working_memory': 1024,
     'print_changed_only': True,
     'display': 'text'}
    

    要在较新的 scikit-learn 版本中打印所有参数,您应该这样做

    lr.get_params()
    
    # result
    
    {'C': 1.0,
     'class_weight': None,
     'dual': False,
     'fit_intercept': True,
     'intercept_scaling': 1,
     'l1_ratio': None,
     'max_iter': 100,
     'multi_class': 'auto',
     'n_jobs': None,
     'penalty': 'l2',
     'random_state': None,
     'solver': 'lbfgs',
     'tol': 0.0001,
     'verbose': 0,
     'warm_start': False}
    

    或更改设置(最好,因为它会影响之后使用的所有模型):

    sklearn.set_config(print_changed_only=False) # needed only once
    lr # as defined above
    
    # result
    
    LogisticRegression(C=1.0, class_weight=None, dual=False, fit_intercept=True,
                       intercept_scaling=1, l1_ratio=None, max_iter=100,
                       multi_class='auto', n_jobs=None, penalty='l2',
                       random_state=None, solver='lbfgs', tol=0.0001, verbose=0,
                       warm_start=False)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-07
      • 2012-09-03
      • 2021-12-24
      • 2020-09-15
      • 2023-03-17
      • 1970-01-01
      相关资源
      最近更新 更多