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



我有一些数据适合sklearn DecisionTreeClassifier。 由于分类器使用了一些随机性,因此我多次运行它并保存最佳模型。 但是,我希望能够重新训练数据并在不同的机器上获得相同的结果。

有没有办法找出我为每个分类器训练模型后的初始random_state是什么?

编辑 sklearn模型有一个名为 get_params() 的方法,用于显示输入的内容。 但对于random_state来说,它仍然说None. 但是,在这种情况下,它使用numpy来生成随机数。 我试图弄清楚那个随机数是什么

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

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

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

我建议你最好使用随机森林来实现这个目的 - 随机森林包含许多基于预测因子子集建模的树。然后,您只需使用RandomForestVariableName.estimators_即可查看模型中已使用random_states

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

with open('C:UsersSaskia HillDesktopExportedFinalSpreadsheet.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') ......
因此,随机

森林将随机性引入决策树文件,并且不需要对决策树使用的初始数据进行调整,但它们充当交叉验证的方法,让您对数据的准确性更有信心(特别是如果像我一样,您有一个小数据集)。

相关内容

  • 没有找到相关文章

最新更新