类型错误:'float'对象不能被解释为索引。

5

我遇到了一个之前没有发生过的问题,可能是一些规则被更改了。

    Traceback (most recent call last)
    <ipython-input-3-f47687e192a7> in <module>()
          5 n_examples = X.shape[0]
          6 n_train = n_examples * 0.5
    ----> 7 train_idx = np.random.choice(range(0,n_examples), size=n_train, replace=False)
          8 test_idx = list(set(range(0,n_examples))-set(train_idx))
          9 X_train = X[train_idx]

    mtrand.pyx in mtrand.RandomState.choice (numpy/random/mtrand/mtrand.c:18822)()

    TypeError: 'float' object cannot be interpreted as an index

5
只是猜测,但n_train = n_examples * 0.5可能不是整数。尝试使用n_train = int(n_examples * 0.5) - fredtantini
1个回答

9
问题可能出在Python自带的`range`函数上。它的参数必须是整数。当`n_examples`乘以`0.5`后,`n_train`会变成浮点数。您只需要像这样重新转换为整数:`int(n_examples * 0.5)`。实际上,这样做是正确的。如果您有11个示例,那么将5.5个示例分配给训练和测试集就没有意义。

2
如果这是正确答案,请标记它,这样Horia就可以获得他甜蜜的声誉积分。 - Marijn van Vliet

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接