TypeError:无法对<class'执行切片索引pandas.core.索引.numeric.int64索引'>使用这些索引器[0.0]的<class'float'>

2024-04-27 00:11:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我尝试对收入进行分类<;=50k或>;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

以上都可以

但是在

^{pr2}$

类型错误:无法对执行切片索引 “班级”pandas.core.索引.numeric.int64索引'的索引器[0.0] “float类”


Tags: 函数testltgtdfagesize分类
1条回答
网友
1楼 · 发布于 2024-04-27 00:11:38

subset_size是一个浮点数。在

这正是为什么需要整数的切片无法工作的原因,正如错误消息所述。我建议在尝试高级任务之前先学习一个快速、基本的Python教程。:)

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

另外,由于您的训练数据X_Train似乎是一个合适的pandas.DataFrame,您可能不得不使用.iloc来使用显式整数切片。在

相关问题 更多 >