gpt4 book ai didi

python - Scikit-learn 交叉验证分数 : too many indices for array

转载 作者:IT老高 更新时间:2023-10-28 20:24:39 24 4
gpt4 key购买 nike

我有以下代码

 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 中进行交叉验证时,该过程需要一个 (R,) 形状标签而不是 (R,1)。尽管它们在某种程度上是相同的东西,但它们的索引机制是不同的。所以在你的情况下,只需添加:

c, r = labels.shape
labels = labels.reshape(c,)

在将其传递给交叉验证函数之前。

关于python - Scikit-learn 交叉验证分数 : too many indices for array,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31995175/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com