1

目前我的代码如下所示:

clf = RandomForestClassifier(n_estimators=10, criterion='entropy')
clf = clf.fit(X, Y)

然而 X 是一个数组,如:

X = [[0, 1], [1, 1]]

我更喜欢像这样使用 X:

X = [{'avg': 0, 'stddev': 1}, {'avg': 1, 'stddev': 1}]

仅仅因为在阅读时绘制一棵树(如此处所述:http: //scikit-learn.org/stable/modules/tree.html#classificationX[0]['avg']X[0][0]. 可能吗?使用字典或熊猫?

4

3 回答 3

3

您可以使用DictVectorizer类将这样的字典列表转换为稀疏矩阵或密集的 numpy 数组。

scikit-learn 永远不会使用 dict 对象作为内部存储记录的主要数据结构,因为与 numpy 数组或 scipy 稀疏矩阵相比,这根本没有内存效率。

于 2013-10-13T16:46:21.957 回答
2

是 'larsmans' 的一个很好的例子,它介绍了如何在数据上拟合模型之前构建特征字典和使用 DictVectorizer。请注意,DictVectorizer 类默认使用 scipy.sparse 矩阵(而不是 numpy.ndarray)来使生成的数据结构能够适合内存。由于并非所有 sklearn 学习模型都支持稀疏矩阵,因此您可能希望在构造函数中使用 sparse=False 选项来获得密集数组

dv = DictVectorizer(sparse=False)
于 2013-10-14T16:29:29.657 回答
2

或者,您可以在使用export_graphviz. 这将在测试节点生成具有更有意义标签的树。

请参阅http://scikit-learn.org/dev/modules/generated/sklearn.tree.export_graphviz.html#sklearn.tree.export_graphvizfeature_names中的参数

于 2013-10-16T13:00:02.030 回答