使用pandas进行ML模型预测-删除'X'和'y'列的最佳方法是什么?

okxuctiv  于 2023-06-04  发布在  其他
关注(0)|答案(1)|浏览(173)

我是一个业余的程序员。我想了解以下两者之间的区别:

X = np.array(df.drop([predict], 1))
y = np.array(df[predict])

和我以前在ML模型中使用的常规代码

X= data.drop(columns=[predict])
y=data[predict]

我试图预测学生的成绩,最后我遵循的代码使用下面的预测,然后是原始属性和实际分数:

for x in range(len(predictions)):
    print(predictions[x], x_test[x], y_test[x])

但这似乎只在第一组代码用于删除列时才起作用,而不是第二组代码,因为我得到KeyError = 0?

vh0rcniy

vh0rcniy1#

让我解释一下

X = np.array(df.drop([predict], 1)) 
y = np.array(df[predict])

在第一行中,它从dataframe df中删除predict列,然后将剩余的dataframe转换为numpy数组并分配给变量X。类似地,dfpredict列被选择并转换为numpy数组并分配给变量y
现在让我们看看评分代码:

for x in range(len(predictions)): 
  print(predictions[x], x_test[x], y_test[x])

这是试图打印三个numpy数组的元素,我假设它们是从早期的Xy numpy数组中获得的。在循环中,x用于索引所有三个numpy数组。由于代码是以索引和获取每个元素的方式编写的,因此我们需要numpy数组格式的Xy
让我们看看第二个代码:

X = data.drop(columns=[predict]) 
y = data[predict]

这里的X是pandas dataframe,y是pandas series。因此,我们不能像索引numpy数组那样索引它们,所以它不起作用。

相关问题