如何在 python 中检查模型对象是否为 Xgboost

How to check if the model object is Xgboost or not in python

我正在尝试评估模型对象是否为 xgboost,如果不是则引发错误

import pandas as pd
import xgboost as xgb
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

boston = load_boston()
X = pd.DataFrame(boston.data, columns=boston.feature_names)
y = pd.Series(boston.target)
regressor = xgb.XGBRegressor(
    n_estimators=100,
    reg_lambda=1,
    gamma=0,
    max_depth=3
)

regressor.fit(X, y)


type(regressor)


我尝试使用以下两个条件但都失败了 第一种方法

if type(regressor) == 'xgboost.sklearn.XGBRegressor':
    print("Xgboost Model")


第二种方法

if not isinstance(regressor,XGBRegressor):
    raise TypeError("wrong input ")

我需要评估 xgboost 的模型对象,无论它是分类器还是回归器,它应该检查两者的条件

您可以考虑(首选):

if isinstance(regressor, xgb.sklearn.XGBRegressor) or isinstance(regressor, xgb.sklearn.XGBClassifier):
    print("Xgboost Model")
else:
    raise TypeError("wrong input")

或者,鉴于您的评论:

if regressor.__class__.__name__ in ['XGBRegressor', 'XGBClassifier']:
    print("Xgboost Model")
else:
    raise TypeError("wrong input")