Python 寻找sklearn决策树分类器的随机状态

Python 寻找sklearn决策树分类器的随机状态,python,scikit-learn,decision-tree,Python,Scikit Learn,Decision Tree,我有一些数据,我正在安装一个sklearn DecisionTreeClassifier。因为分类器使用了一点随机性,我运行了几次并保存了最佳模型。但是,我希望能够重新训练数据,并在不同的机器上获得相同的结果 在我为每个分类器训练模型之后,有没有办法找出初始的随机状态 EDITsklearn模型有一个名为get_params()的方法,显示输入内容。但是对于random\u state它仍然表示None。然而,根据文档,在这种情况下,它使用numpy生成一个随机数。我试图弄清楚那个随机数是什么你

我有一些数据,我正在安装一个
sklearn DecisionTreeClassifier
。因为分类器使用了一点随机性,我运行了几次并保存了最佳模型。但是,我希望能够重新训练数据,并在不同的机器上获得相同的结果

在我为每个分类器训练模型之后,有没有办法找出初始的
随机状态


EDIT
sklearn
模型有一个名为
get_params()
的方法,显示输入内容。但是对于
random\u state
它仍然表示
None
。然而,根据文档,在这种情况下,它使用
numpy
生成一个随机数。我试图弄清楚那个随机数是什么

你必须把一个显式的随机状态传递给d-树构造函数:

>>> DecisionTreeClassifier(random_state=42).get_params()['random_state']
42

将其保留为默认值
None
意味着
fit
方法将使用
numpy.random
的单态随机状态,这是不可预测的,并且在运行中也不相同。

我建议您最好使用随机林,因为随机林包含许多树,这些树是根据您的预测因子子集建模的。 然后,只需使用
RandomForestVariableName.estimators\uu

我将在这里使用我的代码作为示例:

with open('C:\Users\Saskia Hill\Desktop\Exported\FinalSpreadsheet.csv', 'rb') as csvfile:
    titanic_reader = csv.reader(csvfile, delimiter=',', quotechar='"')
    row = titanic_reader.next()
    feature_names = np.array(row)

    # Load dataset, and target classes
    titanic_X, titanic_y = [], []
    for row in titanic_reader:  
    titanic_X.append(row)
    titanic_y.append(row[11]) # The target values are your class labels

    titanic_X = np.array(titanic_X)
    titanic_y = np.array(titanic_y)
    print titanic_X, titanic_y

print feature_names, titanic_X[0], titanic_y[0]
titanic_X = titanic_X[:, [2,3,4,5,6,7,8,9,10]] #these are your predictors/ features
feature_names = feature_names[[2,3,4,5,6,7,8,9,10]]

from sklearn import tree

rfclf = RandomForestClassifier(criterion='entropy', min_samples_leaf=1,  max_features='auto', max_leaf_nodes=None, verbose=0)

rfclf = rfclf.fit(titanic_X,titanic_y)

rfclf.estimators_     #the output for this is pasted below:

[DecisionTreeClassifier(compute_importances=None, criterion='entropy',
        max_depth=None, max_features='auto', max_leaf_nodes=None,
        min_density=None, min_samples_leaf=1, min_samples_split=2,
        random_state=1490702865, splitter='best'),
DecisionTreeClassifier(compute_importances=None, criterion='entropy',
        max_depth=None, max_features='auto', max_leaf_nodes=None,
        min_density=None, min_samples_leaf=1, min_samples_split=2,
        random_state=174216030, splitter='best') ......

因此,随机林将随机性引入到决策树文件中,并且不需要对决策树使用的初始数据进行调整,但它们作为交叉验证的方法,为您的数据准确性提供了更大的信心(特别是如果像我一样,您有一个小数据集).

在线文档表明默认的
random\u state
None
,因此这似乎是正确的。请看:我知道这是默认用法,我要问的是当我使用
random\u state=None
并且我符合模型时,拟合后有没有办法找出
numpy.random
的结果是什么?也许我没有正确回答我的问题。我想知道的是,如果我使用了
random\u state=None
,它应该使用
numpy.random
,有没有办法在模型适合后找出
numpy.random
的结果是什么?@sedavidw:在这种情况下,答案是“那是不可能的”。