如何在SciKitLearn中仅获取模型对象的名称?

Pau*_*Zen 7 python scikit-learn

我有一个愚蠢的问题。

我已经在scikit学习中完成了交叉验证,并希望使用我为每个模型获得的值做出更直观的信息。

但是,我不能仅访问要插入数据框的模板名称。总是随参数一起提供。是否创建了一些对象方法来仅访问模型名称而不访问其参数。还是我必须使用其名称创建一个外部列表?

我用:

for model in models:
   scores = cross_val_score(model, X, y, cv=5)
   print(f'Name model: {model} , Mean score: {scores.mean()}')
Run Code Online (Sandbox Code Playgroud)

但是我获得了带有参数的名称:

Name model: LinearRegression(copy_X=True, fit_intercept=True, n_jobs=1, normalize=False), Mean score: 0.8066782865537986
Run Code Online (Sandbox Code Playgroud)

实际上,我想通过以下方式获取信息:

Name Model: LinearRegression, Mean Score: 0.8066782865537986
Run Code Online (Sandbox Code Playgroud)

谢谢!

Jon*_*han 12

你可以这样做:

model_name = type(model).__name__
Run Code Online (Sandbox Code Playgroud)

Python 3.5.5 | packaged by conda-forge | (default, Jul 23 2018, 23:45:11) 
[GCC 4.2.1 Compatible Apple LLVM 6.1.0 (clang-602.0.53)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> from sklearn.linear_model import LinearRegression
>>> model = LinearRegression()
>>> model_name = type(model).__name__
>>> print(model_name)
LinearRegression
Run Code Online (Sandbox Code Playgroud)

  • 你也可以这样做:`model_name = model.__class__.__name__` (6认同)
  • 注意:模型必须是一个实例,而不是一个类,即 LinearRegression() 而不是 LinearRegression。否则你将得到父类的名称。 (2认同)