我正在一个音频分类器项目上,当前,当我实时运行预测器时,它会捕获一小段音频,然后启动预测过程,然后通过终端将结果撒出来,如下所示:
[INFO] 2020-08-07 14:49:20,695: Predictions: Dog: 1.00
[INFO] 2020-08-07 14:49:20,698: Stop processing.
[INFO] 2020-08-07 14:49:21,707: Start processing.
[INFO] 2020-08-07 14:49:21,847: Predictions: Cat: 0.98
[INFO] 2020-08-07 14:49:21,849: Stop processing.
所以,我想要将这些结果保存到CSV文件中。
我到目前为止所做的事情:
这是我的剧本:
def _process_loop(自己):
with WavProcessor() as proc:
self._ask_data.set()
while True:
if self._process_buf is None:
time.sleep(self._processor_sleep_time) #Waiting for data to process
continue
logger.info('Start processing.')
predictions = proc.get_predictions(
self._sample_rate, self._process_buf)
logger.info(
'Predictions: {}'.format(format_predictions(predictions))
)
prediction = pd.DataFrame(predictions, columns=['Predicted Class', 'Accuracy']).to_csv('predictions.csv')
logger.info('Stop processing.')
self._process_buf = None
self._ask_data.set()
我已在上面的代码中将此行添加到我的代码(prediction = pd.DataFrame(predictions, columns=['Predicted Class', 'Accuracy']).to_csv('predictions.csv'))
中,并开始在此处获取内容。我得到的只是在csv文件中保存的一个结果。具体来说,它仅保存最后检测到的结果。
Predicted Class Accuracy
Cat 0.98
所以,我目前的问题是如何将所有预测结果保存到CSV文件中。
如果有人能帮助我解决此问题,我将不胜感激。
答案 0 :(得分:1)
您将在每次迭代中重写文件。
您可以指定熊猫mode
函数的写to_csv
。如果将其设置为a
,则可以附加到现有文件。
类似这样的东西:
pd.DataFrame(predictions, columns=['Predicted Class', 'Accuracy']).to_csv('predictions.csv', mode='a', header=False)
一些不错的参考文献:
https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.to_csv.html
https://tutorial.eyehunts.com/python/python-file-modes-open-write-append-r-r-w-w-x-etc/