我正在使用多类SVM训练我的数据,这是我的参考。每当我试图运行下面的行时,它都会给我一个内存错误。如何在不出现任何错误的情况下将df.iloc[:,:-1]
分配给变量?
x=df.iloc[:,:-1]
你可以试试这个:
x = df
y = x.pop(x.columns[-1])
这会将x
设置为对df
的引用,然后将df
的最右侧列(内容等效于df.iloc[:,-1]
(分配给y
并从x
中删除。
在熊猫源中,pop()
相当于:
item = x.columns[-1]
y = x[item]
del x[item]
因为del
是一个就地操作,所以pop()
在对输入数据帧进行更改之前不应该尝试对其进行复制。这可能比OP的代码占用更少的内存。
请注意,OP的评论中显示的df
的大小为5.6GB,这也表明尝试修改程序逻辑以划分输入并以较小的批处理它可能是谨慎的。