【问题标题】:TypeError: cannot do slice indexing on <class 'pandas.core.indexes.numeric.Int64Index'> with these indexers [0.0] of <class 'float'>类型错误:无法使用 <class 'float'> 的这些索引器 [0.0] 对 <class 'pandas.core.indexes.numeric.Int64Index'> 进行切片索引
【发布时间】:2017-11-01 12:46:35
【问题描述】:

我正在尝试对收入50k 进行分类并编写交叉验证函数以获得每个准确度

X = df[['age','workclass','fnlwgt','education','marital_status','occupation','relationship','race','sex']]
y = df['income']
k_fold = 10


def k_fold_generator(X, y, k_fold):
subset_size = len(X) / k_fold  
for k in range(k_fold):
    X_train = X[:k * subset_size] + X[(k + 1) * subset_size:]
    X_test = X[k * subset_size:][:subset_size]
    y_train = y[:k * subset_size] + y[(k + 1) * subset_size:]
    y_test = y[k * subset_size:][:subset_size]

    yield X_train, y_train, X_test, y_test

以上都可以

但在

for X_train, y_train, X_test, y_test in k_fold_generator(X, y, k_fold):
        print("Error")

TypeError: 不能对切片索引 “类'pandas.core.indexes.numeric.Int64Index'”与这些索引器[0.0] “类'浮动'”

【问题讨论】:

    标签: python cross-validation


    【解决方案1】:

    subset_size 是一个浮点数。

    正如错误消息告诉您的那样,这正是需要整数的切片不起作用的原因。在尝试高级任务之前,我建议您通过快速、基本的 Python 教程来学习。 :)

    您大概在 Python 2 中遇到了一些示例代码,其中默认除法行为是整数除法,现在尝试在 Python 3.x 版本中执行它。您可以尝试 subset_size = len(X) // k_fold 强制整数除法。或者你可以每次都做int(round(k*subset_size))。我建议前者。

    此外,由于您的训练数据X_Train 似乎是正确的pandas.DataFrame,您可能不得不使用.iloc 进行显式整数切片。

    【讨论】:

      猜你喜欢
      • 2020-09-13
      • 2017-08-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      • 1970-01-01
      相关资源
      最近更新 更多