RandomForest IndexError:只有整数、切片(`:`)、省略号(`...`)、numpy.newaxis(`None`)和整数或布尔数组是有效的索引

Posted

技术标签:

【中文标题】RandomForest IndexError:只有整数、切片(`:`)、省略号(`...`)、numpy.newaxis(`None`)和整数或布尔数组是有效的索引【英文标题】:RandomForest IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices 【发布时间】:2017-11-24 12:55:49 【问题描述】:

我正在与sklearnRandomForestClassifier 上合作:

class RandomForest(RandomForestClassifier):

    def fit(self, x, y):
        self.unique_train_y,  y_classes = transform_y_vectors_in_classes(y)
        return RandomForestClassifier.fit(self, x, y_classes)

    def predict(self, x):
        y_classes = RandomForestClassifier.predict(self, x)
        predictions = transform_classes_in_y_vectors(y_classes, self.unique_train_y)
        return predictions

    def transform_classes_in_y_vectors(y_classes, unique_train_y):
        cyr = [unique_train_y[predicted_index] for predicted_index in y_classes]
        predictions = np.array(float(cyr))
        return predictions

我收到此错误消息:

IndexError: only integers, slices (`:`), ellipsis (`...`), numpy.newaxis (`None`) and integer or boolean arrays are valid indices

【问题讨论】:

哪一行引发异常? 错误来自 cyr = [unique_train_y[predicted_index] for predicted_index in y_classes] y_classes 拥有哪些值?是整数吗? 【参考方案1】:

似乎y_classes 包含无效索引的值。

当您尝试使用 predicted_index 访问 unique_train_y 时,您会得到异常,因为 predict_index 不是您认为的那样。

尝试执行以下代码:

cyr = [unique_train_y[predicted_index] for predicted_index in range(len(y_classes))] 
# assuming unique_train_y is a list and predicted_index should be integer.

【讨论】:

以上是关于RandomForest IndexError:只有整数、切片(`:`)、省略号(`...`)、numpy.newaxis(`None`)和整数或布尔数组是有效的索引的主要内容,如果未能解决你的问题,请参考以下文章

IndexError:索引 10 超出轴 0 的范围,大小为 10

Weka 3.7 中 RandomForest 的精确实现

R中RandomForest包中的RandomForest函数中的参数'classwt'代表啥?

csv,IndexError:列表索引超出范围

如何解决“IndexError:数组索引过多”

IndexError:列表索引超出范围(打印整数)