目前我的代码如下:
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}]
仅仅因为在阅读X[0]['avg']
而非X[0][0]
时,绘制树(如此处所述:http://scikit-learn.org/stable/modules/tree.html#classification)更有意义。可能吗?使用字典或熊猫?
答案 0 :(得分:3)
您可以使用DictVectorizer类将这样的dicts列表转换为稀疏矩阵或密集numpy数组。
scikit-learn永远不会使用dict对象作为内部存储记录的主要数据结构,因为与numpy数组或scipy稀疏矩阵相比,这根本不具有内存效率。
答案 1 :(得分:2)
Here是'larsmans'关于如何在数据上拟合模型之前构建特征字典并使用DictVectorizer的一个很好的例子。请注意,默认情况下,DictVectorizer类使用scipy.sparse矩阵(而不是numpy.ndarray)来使结果数据结构能够适合内存。由于并非所有sklearn学习模型都支持稀疏矩阵,因此您可能希望在构造函数中使用sparse = False选项来获取密集数组
dv = DictVectorizer(sparse=False)
答案 2 :(得分:2)
或者,您可以在使用export_graphviz
时指定功能名称。这将产生
在测试节点上具有更有意义的标签的树。
feature_names
参数