删除 tflearn 中的列产生奇怪的输出
deleting columns in tflearn producing strange output
我正在使用 tflearn
并且我正在使用以下代码加载我的 csv 文件...
data, labels = load_csv('/home/eric/Documents/Speed 约会 Data.csv',
target_column=0, categorical_labels=假)
这是我的 csv 文件的片段(还有很多列)...
我想删除特定的列。例如,假设我删除了第 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 中的列数吗?
发生的事情是 [data.pop(col_del) for position in data]
行删除了一半的行,然后您显示的是剩下的前 20 行。 (它会删除所有行,但对 pop
的调用正在推进循环迭代器。)
如果您不需要某些列,您应该在调用 load_csv
时将 delete
列表传递给 columns_to_ignore
参数。请参阅 load_csv 处的函数说明。如果您需要从内存中的数据集中删除列,我认为值得花时间学习 Pandas 库的基础知识;它会让你的生活更简单。
如果您的目标标签是分类的,您将需要 n_classes
,以便告诉 load_csv
有多少类别。既然你有 categorical_labels=False
,你应该不需要它。
我正在使用 tflearn
并且我正在使用以下代码加载我的 csv 文件...
data, labels = load_csv('/home/eric/Documents/Speed 约会 Data.csv', target_column=0, categorical_labels=假)
这是我的 csv 文件的片段(还有很多列)...
我想删除特定的列。例如,假设我删除了第 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 中的列数吗?
发生的事情是 [data.pop(col_del) for position in data]
行删除了一半的行,然后您显示的是剩下的前 20 行。 (它会删除所有行,但对 pop
的调用正在推进循环迭代器。)
如果您不需要某些列,您应该在调用 load_csv
时将 delete
列表传递给 columns_to_ignore
参数。请参阅 load_csv 处的函数说明。如果您需要从内存中的数据集中删除列,我认为值得花时间学习 Pandas 库的基础知识;它会让你的生活更简单。
如果您的目标标签是分类的,您将需要 n_classes
,以便告诉 load_csv
有多少类别。既然你有 categorical_labels=False
,你应该不需要它。