【发布时间】:2015-06-27 10:15:08
【问题描述】:
我正在使用 Python 和 sk-learn 进行我的第一个项目。 在项目中,我必须根据可用数据进行预测。 为此,我想使用 DesicionTreeClassifier。 我确实加载并清理了数据并开始生成一些树。 在生成过程中,一些数据集确实无法生成树,而另一些则有效。 当我仔细观察时,我发现可以训练一棵树的数据集少于 30 行,每行 9 列。看来这棵树的深度不能超过 4。
Traceback (most recent call last):
File "/usr/local/bin/decisionTree/readAnPrepareData.py", line 57, in <module>
trainForest()
File "/usr/local/bin/decisionTree/readAnPrepareData.py", line 39, in trainForest
model.fit(X_train, Y)
File "/usr/lib/pymodules/python2.7/sklearn/tree/tree.py", line 524, in fit
X_argsorted=X_argsorted)
File "/usr/lib/pymodules/python2.7/sklearn/tree/tree.py", line 340, in build
recursive_partition(X, X_argsorted, y, sample_mask, 0, -1, False)
File "/usr/lib/pymodules/python2.7/sklearn/tree/tree.py", line 306, in recursive_partition
depth + 1, node_id, True)
File "/usr/lib/pymodules/python2.7/sklearn/tree/tree.py", line 306, in recursive_partition
depth + 1, node_id, True)
File "/usr/lib/pymodules/python2.7/sklearn/tree/tree.py", line 306, in recursive_partition
depth + 1, node_id, True)
File "/usr/lib/pymodules/python2.7/sklearn/tree/tree.py", line 306, in recursive_partition
depth + 1, node_id, True)
File "/usr/lib/pymodules/python2.7/sklearn/tree/tree.py", line 272, in recursive_partition
min_samples_leaf, max_features, criterion, random_state)
File "_tree.pyx", line 533, in sklearn.tree._tree._find_best_split (sklearn/tree/_tree.c:4812)
ValueError: ndarray is not Fortran contiguous
我是这样创建树的:
model = DecisionTreeClassifier()
model.fit(X_train, Y)
什么可能导致这种情况?这可能是因为溢出吗?那会是很奇怪的想法,因为这只是一点点数据……
Numpy 在 1.9.2 版本上运行 scikit-learn '0.16.1'
【问题讨论】:
-
您能否提及您正在运行的 sklearn 和 NumPy 版本?
-
我添加了版本。应该是当前的
-
@JohnGalt Ehm 我刚刚升级到这个版本。我看起来它现在可以工作了......但我会先仔细看看
-
@JohnGalt 是的,升级到当前版本就可以了。我以为我已经有了当前版本,但你却不这样认为。你会很好,可以把它变成一个答案,我很高兴将它标记为解决方案:)
标签: python pandas runtime-error scikit-learn decision-tree