DecisionTreeRegressor中的随机状态是什么?

2024-05-08 12:04:36 发布

您现在位置:Python中文网/ 问答频道 /正文

有什么区别: DecisionTreeRegressor(splitter='random')和DecisionTreeRegressor(splitter='best')

如果两者似乎都抛出随机预测,我不明白为什么两个实现都使用参数random_state

下面是一个例子:

import pandas as pd
from sklearn.tree import DecisionTreeRegressor

url = 'https://raw.githubusercontent.com/justmarkham/DAT8/master/data/vehicles_train.csv'
train = pd.read_csv(url)

train['vtype'] = train.vtype.map({'car':0, 'truck':1})
feature_cols = ['year', 'miles', 'doors', 'vtype']
X = train[feature_cols]
y = train.price

treereg = DecisionTreeRegressor(splitter='best')

for i in range(1, 10):
    treereg.fit(X, y)
    print treereg.predict([1994, 10000, 2, 1])

谢谢!在


Tags: csvimporturl参数trainrandomfeaturepd
1条回答
网友
1楼 · 发布于 2024-05-08 12:04:36

我不能肯定地回答,但我怀疑这是正在发生的事情:

即使对于splitter="best",决策树中使用的算法也会以随机的顺序探索特性(如您所见in the source)。如果max_features没有定义,那么只要存在一个唯一的最佳分割,它就应该探索所有特征,从而找到相同的最佳分割,而不管随机状态如何。在

我的怀疑是,对于您提供的数据,在某一点上,根据指定的标准,有两个可能的分割是一样好的,因此算法选择它首先看到的那一个。在

相关问题 更多 >