【发布时间】:2015-11-06 19:56:40
【问题描述】:
我有以下代码
from sklearn.ensemble import ExtraTreesClassifier
from sklearn.cross_validation import cross_val_score
#split the dataset for train and test
combnum['is_train'] = np.random.uniform(0, 1, len(combnum)) <= .75
train, test = combnum[combnum['is_train']==True], combnum[combnum['is_train']==False]
et = ExtraTreesClassifier(n_estimators=200, max_depth=None, min_samples_split=10, random_state=0)
min_samples_split=10, random_state=0 )
labels = train[list(label_columns)].values
tlabels = test[list(label_columns)].values
features = train[list(columns)].values
tfeatures = test[list(columns)].values
et_score = cross_val_score(et, features, labels, n_jobs=-1)
print("{0} -> ET: {1})".format(label_columns, et_score))
检查数组的形状:
features.shape
Out[19]:(43069, 34)
和
labels.shape
Out[20]:(43069, 1)
我得到了:
IndexError: too many indices for array
以及追溯的相关部分:
---> 22 et_score = cross_val_score(et, features, labels, n_jobs=-1)
我正在从 Pandas 数据框创建数据,我在这里搜索并看到一些通过这种方法可能出现的错误的参考,但不知道如何纠正? 数据数组的样子: 特点
Out[21]:
array([[ 0., 1., 1., ..., 0., 0., 1.],
[ 0., 1., 1., ..., 0., 0., 1.],
[ 1., 1., 1., ..., 0., 0., 1.],
...,
[ 0., 0., 1., ..., 0., 0., 1.],
[ 0., 0., 1., ..., 0., 0., 1.],
[ 0., 0., 1., ..., 0., 0., 1.]])
标签
Out[22]:
array([[1],
[1],
[1],
...,
[1],
[1],
[1]])
【问题讨论】:
-
请发布完整的回溯。你在哪个版本的 scikit-learn 上?你可以尝试通过
labels.ravel()来代替吗? -
labels.ravel() 做到了!只是在阅读另一个错误,这表明使用不同的代码,我在 Scikit learn 17 dev0
-
@AndreasMueller 非常感谢您的快速回复!如果你能做出回答,可能会帮助其他一些人..
-
我不认为这是一个好的错误。你能在问题跟踪器中打开一个问题吗?
-
MMM 我应该将错误发布到哪里? Pandas 还是 scikit-learn?
标签: python pandas scikit-learn