如何通过名称字符串动态实例化sklearn分类器

我想通过名称来实例化一个sklearn估计器。例如:

name = 'RandomForestClassifier'clf = BaseEstimator(name)print(clf) # 返回类似于 RandomForestClassifier(...) 的内容

我尝试过使用 clf = eval(name),但我无法执行 clf.fit(X, y),因为 clf 是 <class 'sklearn.ensemble._forest.RandomForestClassifier'>,而不是类似于 RandomForestClassifier() 的实例。

我找不到如何通过名称创建sklearn估计器的方法。


回答:

据我所知,你想要实现的是基于用户输入的字符串动态实例化现有的分类器。BaseEstimator 是所有估计器的基础类,所以我认为你应该仅在计划构建自己的估计器时使用它。


现在我不知道你是如何运行上述代码的,因为 BaseEstimator() 不接受任何参数:

clf = BaseEstimator('RandomForestClassifier')Traceback (most recent call last):  File "/usr/local/lib/python3.7/site-packages/IPython/core/interactiveshell.py", line 3331, in run_code    exec(code_obj, self.user_global_ns, self.user_ns)  File "<ipython-input-6-59dd1a62618a>", line 1, in <module>    clf = BaseEstimator('RandomForestClassifier')TypeError: BaseEstimator() takes no arguments

无论如何,你可以实现分类器动态实例化的方法如下:

from sklearn.tree import DecisionTreeClassifierfrom sklearn.ensemble import RandomForestClassifierdef get_clf(name):    if name not in ('RandomForestClassifier', 'DecisionTreeClassifier'):        raise ValueError(f"{name} is not a recognised option")        classifiers = {        "DecisionTreeClassifier": DecisionTreeClassifier,        "RandomForestClassifier": RandomForestClassifier    }    classifier = classifiers[name]    return classifier()

或者,你可以选择一个更直接的解决方案:

def get_clf(name):        if name not in ('RandomForestClassifier', 'DecisionTreeClassifier'):        raise ValueError(f"{name} is not a recognised option")    if name == 'RandomForestClassifier':        return RandomForestClassifier()    elif name == 'DecisionTreeClassifier':        return DecisionTreeClassifier()    else:         raise RuntimeError()

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注