【发布时间】:2020-09-24 23:21:37
【问题描述】:
我是 python 新手。我读了这个Kaggle kernel。
在那个内核中,他使用了块大小为 150_000 的训练数据
train = pd.read_csv('../input/train.csv', iterator=True, chunksize=150_000, dtype={'acoustic_data': np.int16, 'time_to_failure': np.float64})
我使用 python 可视化了 X_train(统计特征)和 y_train(给定 time_to_failure)。它给了我很好的可视化效果
train = pd.read_csv('../input/train.csv', iterator=True, chunksize=150_000, dtype={'acoustic_data': np.int16, 'time_to_failure': np.float64})
X_train = pd.DataFrame()
y_train = pd.Series()
for df in train:
ch = gen_features(df['acoustic_data'])
X_train = X_train.append(ch, ignore_index=True)
y_train = y_train.append(pd.Series(df['time_to_failure'].values[-1]))
#Visulization function
plotstatfeature(X_train,y_train.to_numpy(dtype ='float32'))
对于测试数据,使用相同的函数在 X_test(statistical features) 和 y_hat(calculated time_to_failure) 之间绘制相同的可视化效果
submission = pd.read_csv('../input/sample_submission.csv', index_col='seg_id')
X_test = pd.DataFrame()
# prepare test data
for seg_id in submission.index:
seg = pd.read_csv('../input/test/' + seg_id + '.csv')
ch = gen_features(seg['acoustic_data'])
X_test = X_test.append(ch, ignore_index=True)
X_test = scaler.transform(X_test)
X_test = X_test.reshape(X_test.shape[0], X_test.shape[1], 1)
y_hat = model.predict(X_test)
submission['time_to_failure'] = y_hat
submission.to_csv('submission.csv')
#Visulization function
plotstatfeature(X_test,y_hat.to_numpy(dtype ='float32'))
问题 1:
可视化X_test(statistical features)和y_hat(calculated time_to_failure)有意义吗
问题 2(主要问题):
测试数据的可视化不如训练数据好。因为训练数据以 150000 的块大小读取,可视化清晰,而测试数据是完整数据,可视化更密集,不清晰。 如何将测试数据转换为 150000 的相同块大小以实现相同的统一可视化 就像训练数据可视化一样?
为了将测试数据转换为150000相同的chunksize,我尝试通过在代码中引入iterator和chunksize来修改这一行
第一种情况:
submission = pd.read_csv('../input/sample_submission.csv', index_col='seg_id' , iterator=True, chunksize=150_000)
但它给了我这个错误
Traceback(最近一次调用最后一次):
文件“”,第 1 行,在 runfile('D:/code.py', wdir='D:/')
文件 "C:\Users\abc\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", 第 827 行,在运行文件中 execfile(文件名,命名空间)
文件 "C:\Users\abc\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", 第 110 行,在 execfile 中 exec(编译(f.read(),文件名,'exec'),命名空间)
文件“D:/code.py”,第 299 行,在 主要()
文件“D:/code.py”,第 239 行,在 main 测试(X_train,y_train)
文件“D:/code.py”,第 168 行,正在测试中 对于submission.index 中的seg_id:
AttributeError: 'TextFileReader' 对象没有属性 'index'
第二种情况
seg = pd.read_csv('test/' + seg_id + '.csv' , iterator=True, chunksize=150000)
它给了我这个错误
Traceback(最近一次调用最后一次):
文件“”,第 1 行,在 runfile('D:/code.py', wdir='D:/')
文件 "C:\Users\abc\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", 第 827 行,在运行文件中 execfile(文件名,命名空间)
文件 "C:\Users\abc\Anaconda3\lib\site-packages\spyder_kernels\customize\spydercustomize.py", 第 110 行,在 execfile 中 exec(编译(f.read(),文件名,'exec'),命名空间)
文件“D:/code.py”,第 299 行,在 主要()
文件“D:/code.py”,第 239 行,在 main 测试(X_train,y_train)
文件“D:/code.py”,第 170 行,正在测试中 ch = gen_features(seg['acoustic_data'])
TypeError: 'TextFileReader' 对象不可下标
如何在测试数据中引入块大小?
【问题讨论】:
-
对于分块问题 - 请务必发布有关堆栈溢出的任何问题的完整回溯,因为 they're extremely helpful in debugging your issue。查看iterating through files chunk by chunk 上的 pandas 文档。你需要遍历
submission。 -
为了可视化非常大的数据集,您可能需要查看用于此目的的包,例如 holoviews 或 datashader。您当然可以按照您的建议将数据子集成块并每次创建一个图,只需在迭代您的块的 for 循环中包含绘图创建步骤。每一个都不能代表整个数据集,但这可能有助于理解样本。
标签: python python-3.x pandas