Scikit Learn 中是否有与 caret 的 getmodelinfo() 函数等效的函数?
Is there an equivalent to caret's getmodelinfo() function in Scikit Learn?
我正在尝试使用 Scikit Learn 的所有算法以及每个算法的元数据创建数据框。在 R 中的 Caret 中,有一个名为 getmodelinfo()
的函数可以执行此操作。
Scikit Learn 中是否有等效项?
您可以通过 sklearn.utils
和 inspect
获得最接近您想要的内容。 E.g.you 可以获得所有 sklearn 类 的列表,或者只是像这样的分类器:
from sklearn.utils.testing import all_estimators
all_est = all_estimators(type_filter=None)
all_classifiers = all_estimators(type_filter="classifier")
然后在 inspect
的帮助下,您可以检索分类器的参数 .fit
方法,例如:
import inspect
all_classifiers_fit_args = {}
for name, clf in all_classifiers:
all_classifiers_fit_args[name] = inspect.signature(clf.fit)
最后你可以将信息放入 pandas df:
df = pd.DataFrame(all_classifiers_fit_args.items(), columns=["fit_classifier", "args"])
df
fit_classifier args
0 AdaBoostClassifier (self, X, y, sample_weight=None)
1 BaggingClassifier (self, X, y, sample_weight=None)
2 BernoulliNB (self, X, y, sample_weight=None)
3 CalibratedClassifierCV (self, X, y, sample_weight=None)
4 CategoricalNB (self, X, y, sample_weight=None)
5 CheckingClassifier (self, X, y, **fit_params)
6 ClassifierChain (self, X, Y)
7 ComplementNB (self, X, y, sample_weight=None)
8 DecisionTreeClassifier (self, X, y, sample_weight=None, check_input=T...
...
或者,您可以访问分类器本身的参数:
for name, clf in all_classifiers:
all_classifiers_args[name] = inspect.signature(clf)
df = pd.DataFrame(all_classifiers_args.items(), columns=["classifier", "args"])
df
classifier args
0 AdaBoostClassifier (base_estimator=None, n_estimators=50, learnin...
1 BaggingClassifier (base_estimator=None, n_estimators=10, max_sam...
2 BernoulliNB (alpha=1.0, binarize=0.0, fit_prior=True, clas...
3 CalibratedClassifierCV (base_estimator=None, method='sigmoid', cv=None)
4 CategoricalNB (alpha=1.0, fit_prior=True, class_prior=None)
5 CheckingClassifier (check_y=None, check_X=None, foo_param=0, expe...
6 ClassifierChain (base_estimator, order=None, cv=None, random_s...
7 ComplementNB (alpha=1.0, fit_prior=True, class_prior=None, ...
8 DecisionTreeClassifier (criterion='gini', splitter='best', max_depth=...
...
我正在尝试使用 Scikit Learn 的所有算法以及每个算法的元数据创建数据框。在 R 中的 Caret 中,有一个名为 getmodelinfo()
的函数可以执行此操作。
Scikit Learn 中是否有等效项?
您可以通过 sklearn.utils
和 inspect
获得最接近您想要的内容。 E.g.you 可以获得所有 sklearn 类 的列表,或者只是像这样的分类器:
from sklearn.utils.testing import all_estimators
all_est = all_estimators(type_filter=None)
all_classifiers = all_estimators(type_filter="classifier")
然后在 inspect
的帮助下,您可以检索分类器的参数 .fit
方法,例如:
import inspect
all_classifiers_fit_args = {}
for name, clf in all_classifiers:
all_classifiers_fit_args[name] = inspect.signature(clf.fit)
最后你可以将信息放入 pandas df:
df = pd.DataFrame(all_classifiers_fit_args.items(), columns=["fit_classifier", "args"])
df
fit_classifier args
0 AdaBoostClassifier (self, X, y, sample_weight=None)
1 BaggingClassifier (self, X, y, sample_weight=None)
2 BernoulliNB (self, X, y, sample_weight=None)
3 CalibratedClassifierCV (self, X, y, sample_weight=None)
4 CategoricalNB (self, X, y, sample_weight=None)
5 CheckingClassifier (self, X, y, **fit_params)
6 ClassifierChain (self, X, Y)
7 ComplementNB (self, X, y, sample_weight=None)
8 DecisionTreeClassifier (self, X, y, sample_weight=None, check_input=T...
...
或者,您可以访问分类器本身的参数:
for name, clf in all_classifiers:
all_classifiers_args[name] = inspect.signature(clf)
df = pd.DataFrame(all_classifiers_args.items(), columns=["classifier", "args"])
df
classifier args
0 AdaBoostClassifier (base_estimator=None, n_estimators=50, learnin...
1 BaggingClassifier (base_estimator=None, n_estimators=10, max_sam...
2 BernoulliNB (alpha=1.0, binarize=0.0, fit_prior=True, clas...
3 CalibratedClassifierCV (base_estimator=None, method='sigmoid', cv=None)
4 CategoricalNB (alpha=1.0, fit_prior=True, class_prior=None)
5 CheckingClassifier (check_y=None, check_X=None, foo_param=0, expe...
6 ClassifierChain (base_estimator, order=None, cv=None, random_s...
7 ComplementNB (alpha=1.0, fit_prior=True, class_prior=None, ...
8 DecisionTreeClassifier (criterion='gini', splitter='best', max_depth=...
...