删除tflearn中的列,产生奇怪的输出

时间:2017-11-03 21:24:58

标签: python csv tensorflow tflearn

我正在使用tflearn,我使用以下代码加载我的csv文件...

data,labels = load_csv(' / home / eric / Documents / Speed Dating Data.csv',                             target_column = 0,categorical_labels = False)

以下是我的csv文件的片段(还有更多列)...

enter image description here

我想删除特定列。例如,我们说我删除了第1列,然后打印出第1列到第5列的数据...

def preprocess(cols_del):
data, labels = load_csv('/home/eric/Documents/Speed Dating Data.csv',
                        target_column=0, categorical_labels=False)

for col_del in sorted(cols_del):
    [data.pop(col_del) for position in data]

for i in range(20):
    print(data[i][0:5])

def main(_):
    delete = [0]
    preprocess(delete)

这是结果......

['9', '1', '18', '2', '11']
['9', '1', '18', '2', '11']
['9', '1', '18', '2', '11']
['9', '1', '18', '2', '11']
['9', '1', '18', '2', '11']
['9', '1', '18', '2', '11']
['9', '1', '18', '2', '11']
['9', '1', '18', '2', '11']
['9', '1', '18', '2', '11']
['9', '1', '18', '2', '11']
['9', '1', '18', '2', '11']
['10', '1', '20', '2', '11']
['10', '1', '20', '2', '11']
['10', '1', '20', '2', '11']
['10', '1', '20', '2', '11']
['10', '1', '20', '2', '11']
['10', '1', '20', '2', '11']
['10', '1', '20', '2', '11']
['10', '1', '20', '2', '11']
['10', '1', '20', '2', '11']

数据明显不同。到底是怎么回事?是否删除行而不是列?如何在不更改任何其他列的情况下完全删除整个列?

另外,我知道这是一个单独的问题,但如果我在我的加载csv函数中使用n_classes,我该怎么做?这是我的CSV中的列数吗?

1 个答案:

答案 0 :(得分:1)

正在发生的是[data.pop(col_del) for position in data]行删除了一半的行,然后你显示了剩下的20行。 (它将删除所有行,但是对pop的调用正在推进循环迭代器。)

如果您不想要某些列,则在致电delete时,应将columns_to_ignore列表传递给load_csv参数。请参阅load_csv处的功能说明。如果您需要从内存中的数据集中删除列,我认为值得您花时间学习Pandas库的基础知识;它会让你的生活更加简单。

如果目标广告属于分类标准,则需要n_classes,以便告知load_csv有多少类别。由于您有categorical_labels=False,因此您不需要它。