如何检查sklearn模型是分类器还是回归器

Posted

技术标签:

【中文标题】如何检查sklearn模型是分类器还是回归器【英文标题】:How to check if sklearn model is classifier or regressor 【发布时间】:2020-01-30 19:10:57 【问题描述】:

是否有一种简单的方法可以检查模型实例是否解决了 scikit-learn 库中的分类或回归任务?

【问题讨论】:

这是一件有趣的事情,无法想象在实际拟合模型之前该信息不可用的场景。我只能想到检查模型预测的数据类型 【参考方案1】:

使用sklearn.base.is_classifier 和/或is_regressor

from sklearn.base import is_classifier, is_regressor
from sklearn.linear_model import LinearRegression
from sklearn.ensemble import RandomForestRegressor
from sklearn.ensemble import RandomForestClassifier

models = [LinearRegression(), RandomForestClassifier(), RandomForestRegressor()]

for m in models:
    print(m.__class__.__name__, is_classifier(m), is_regressor(m))

输出:

# model_name is_classifier is_regressor
LinearRegression False True
RandomForestClassifier True False
RandomForestRegressor False True

【讨论】:

谢谢,这正是我想要的!我不知道它存在于基础包中。【参考方案2】:

我猜你问这个是因为你有一个你不知道类型的序列化模型。打开文件并执行

mlType = type(variable_name)

其中 variable_name 是反序列化模型的句柄。

输出例如

class 'sklearn.linear_model.base.LinearRegression'

【讨论】:

以上是关于如何检查sklearn模型是分类器还是回归器的主要内容,如果未能解决你的问题,请参考以下文章

逻辑回归推导

随机森林回归器的特征选择

在sklearn python中处理逻辑回归分类器中的极端不平衡多类

如何在 Sklearn 的随机森林分类器中将训练模型用于另一个数据集?

sklearn库学习----随机森林(RandomForestClassifier,RandomForestRegressor)

Sklearn 逻辑分类器的 L1 和 L2 惩罚