我尝试对收入进行分类<;=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类”
subset_size
是一个浮点数。在这正是为什么需要整数的切片无法工作的原因,正如错误消息所述。我建议在尝试高级任务之前先学习一个快速、基本的Python教程。:)
假设您遇到了Python2中的一些示例代码,其中默认的除法行为是整数除法,现在尝试在Python3.x版本中执行它。您可以尝试
subset_size = len(X) // k_fold
,它强制整数除法。或者,您可以每次执行int(round(k*subset_size))
。我建议前者。在另外,由于您的训练数据
X_Train
似乎是一个合适的pandas.DataFrame
,您可能不得不使用.iloc
来使用显式整数切片。在相关问题 更多 >
编程相关推荐