如何手动更改scikit-learn中决策树的特征值?

在scikit-learn中,如果我从

RandomForestClassifer().estimators_

中提取了一个决策树,我能否手动更改其中的一些特征?我可以使用以下方式遍历它们:

for estimator in rfc.estimators_:    for feature in estimator.tree_.feature:

但在这种情况下,我希望手动更改特征。我该如何操作呢?


回答:

如果我正确理解了您的问题,那么您是想更改随机森林中决策树的参数?我不太确定您为什么要这样做。

我将解决方案分为两部分

首先我们尝试更改决策树的参数

from sklearn.tree import DecisionTreeClassifierfrom sklearn.datasets import load_irisclf = DecisionTreeClassifier(random_state=0)iris = load_iris()clf.fit(iris.data,iris.target)#DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=None,#       max_features=None, max_leaf_nodes=None,#        min_impurity_decrease=0.0, min_impurity_split=None,#        min_samples_leaf=1, min_samples_split=2,#        min_weight_fraction_leaf=0.0, presort=False, random_state=0,#        splitter='best')#现在提取参数parameters_dt = clf.get_params()#现在更改您想要的参数parameters_dt['max_depth'] = 3#现在创建一个新的分类器new_clf = DecisionTreeClassifier(**parameters_dt)#DecisionTreeClassifier(class_weight=None, criterion='gini', max_depth=2,#        max_features=None, max_leaf_nodes=None,#        min_impurity_decrease=0.0, min_impurity_split=None,#        min_samples_leaf=1, min_samples_split=2,#        min_weight_fraction_leaf=0.0, presort=False, random_state=0,#        splitter='best')

现在让我们回到随机森林

from sklearn.ensemble import RandomForestClassifierfrom sklearn.tree import DecisionTreeClassifierfrom sklearn.datasets import make_classificationX, y = make_classification(n_samples=1000, n_features=4,                        n_informative=2, n_redundant=0,                       random_state=0, shuffle=False)clf = RandomForestClassifier(max_depth=2, random_state=0)clf.fit(X, y)clf_list = clf.estimators_for idx in range(0,len(clf_list)):    #获取随机森林中的当前决策树    estimator = clf_list[idx]    #获取参数    temp_params = estimator.get_params()    #更改您想要的参数    temp_params['max_depth'] = 3    #创建一个新的决策树    temp_decision_tree = DecisionTreeClassifier(**temp_params)    #移除旧的决策树    clf.estimators_.pop(idx)    #然后在当前位置插入新的决策树    clf.estimators_.insert(idx, temp_decision_tree)

注意:这可能不会产生您想要的效果。我的意思是,它可能不会产生您期望的精确分类器。

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中创建了一个多类分类项目。该项目可以对…

发表回复

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