python - 模型定义没有给出任何输出
问题描述
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)
我究竟做错了什么?
解决方案
这是由于从 scikit-learn v0.23 开始更改了默认配置设置;来自变更日志:
默认设置
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)
推荐阅读
- python - 在python中不使用[::-1]检查字符串是否为回文
- node.js - 如何连接前端和后端
- python - 使用 for 循环填充 python 字典列表
- html - 如何防止 CSS 网格布局中的项目增长以适应其内容?
- java - 如何在类似 Map 的结构中复制值并以简单的方式获取所有键
- python - 当我尝试使用 simpleJWT 4.6.0 版部署到 Heroku 时出现错误
- python - 如何将多目标二进制分类器优化(多类)从 matlab 转换为 python(使用 pymoo)?
- react-native - react native 获取以前连接的蓝牙设备
- javascript - 由于我的组件,无法将属性“srcObject”设置为 null
- java - 是否所有 AdMob 插页式广告都默认静音?