相关疑难解决方法(0)

为什么具有单个树的Random Forest比决策树分类器好得多?

我通过scikit-learn图书馆学习机器学习.我使用以下代码将决策树分类器和随机森林分类器应用于我的数据:

def decision_tree(train_X, train_Y, test_X, test_Y):

    clf = tree.DecisionTreeClassifier()
    clf.fit(train_X, train_Y)

    return clf.score(test_X, test_Y)


def random_forest(train_X, train_Y, test_X, test_Y):
    clf = RandomForestClassifier(n_estimators=1)
    clf = clf.fit(X, Y)

    return clf.score(test_X, test_Y)
Run Code Online (Sandbox Code Playgroud)

为什么随机森林分类器的结果更好(100次运行,随机抽样2/3的数据用于训练,1/3用于测试)?

100%|???????????????????????????????????????| 100/100 [00:01<00:00, 73.59it/s]
Algorithm: Decision Tree
  Min     : 0.3883495145631068
  Max     : 0.6476190476190476
  Mean    : 0.4861783113770316
  Median  : 0.48868030937802126
  Stdev   : 0.047158171852401135
  Variance: 0.0022238931724605985
100%|???????????????????????????????????????| 100/100 [00:01<00:00, 85.38it/s]
Algorithm: Random Forest
  Min     : 0.6846846846846847
  Max     : 0.8653846153846154
  Mean    : 0.7894823428836184
  Median  : 0.7906101571063208
  Stdev   : 0.03231671150915106
  Variance: 0.0010443698427656967 …
Run Code Online (Sandbox Code Playgroud)

python machine-learning decision-tree random-forest scikit-learn

9
推荐指数
1
解决办法
1441
查看次数

为什么该决策树每一步的值之和不等于样本数?

我正在阅读有关决策树和装袋分类器的内容,并且我试图展示装袋分类器中使用的第一个决策树。我对输出感到困惑。

from sklearn.model_selection import train_test_split
from sklearn.datasets import make_moons
from sklearn.ensemble import BaggingClassifier
from sklearn import tree
from sklearn.tree import DecisionTreeClassifier
from sklearn.tree import export_graphviz
from graphviz import Source

X, y = make_moons(n_samples=500, noise=0.30, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

bag_clf = BaggingClassifier(
    DecisionTreeClassifier(), 
    n_estimators=500,
    max_samples=100, 
    bootstrap=True, 
    n_jobs=-1)
bag_clf.fit(X_train, y_train)

Source(tree.export_graphviz(bag_clf.estimators_[0], out_file=None))
Run Code Online (Sandbox Code Playgroud)

这是输出的一个片段

在此输入图像描述

据我了解,value应该显示有多少样本被分类为每个类别。那么,value字段中的数字不应该加到字段中吗samples?为什么这里的情况不是这样呢?

python machine-learning decision-tree scikit-learn

5
推荐指数
1
解决办法
1786
查看次数

sklearn RandomForestRegressor 显示的树值中的差异

在使用 RandomForestRegressor 时,我注意到一些奇怪的事情。为了说明问题,这里有一个小例子。我在测试数据集上应用了 RandomForestRegressor 并绘制了森林中第一棵树的图。这给了我以下输出:

Root_node: 
mse=8.64
samples=2
value=20.4

Left_leaf: 
mse=0
samples=1
value=24

Right_leaf: 
mse=0
samples=1
value=18
Run Code Online (Sandbox Code Playgroud)

首先,我希望根节点的值为(24+18)/2=21。但不知何故,它是 20.4。但是,即使这个值是正确的,我如何获得 8.64 的 mse?从我的角度来看,它应该是:(1/2[(24-20.4)^2+(18-20.4)^2]=9.36假设根值 20.4 是正确的)

我的解决办法是:1/2[(24-21)^2+(18-21)^2]=9。如果我只使用 DecisionTreeRegressor,这也是我得到的结果。

RandomForestRegressor 的实现有什么问题还是我完全错了?

这是我的可重现代码:

import pandas as pd
from sklearn import tree
from sklearn.ensemble import RandomForestRegressor
import graphviz

# create example dataset
data = {'AGE': [91, 42, 29, 94, 85], 'TAX': [384, 223, 280, 666, 384], 'Y': [19, 21, 24, 13, 18]}
df = pd.DataFrame(data=data)
x = df[['AGE','TAX']]
y …
Run Code Online (Sandbox Code Playgroud)

python machine-learning random-forest scikit-learn

5
推荐指数
1
解决办法
197
查看次数

scikit-learn DecisionTreeClassifier.tree_.value有什么作用?

我正在研究DecisionTreeClassifier模型,我想了解模型选择的路径.所以我需要知道什么价值给了

DecisionTreeClassifier.tree_.value
Run Code Online (Sandbox Code Playgroud)

谢谢,

python machine-learning decision-tree scikit-learn

1
推荐指数
1
解决办法
654
查看次数