Эффективная запись в файл после предсказания python - PullRequest
0 голосов
/ 05 августа 2020

Я новичок в программировании и пытаюсь сократить время, затрачиваемое на запись моих данных в файл, и обнаружил, что часть записи является основной проблемой.

Следующее - часть моей код для программы машинного обучения:

filename="data.csv"
f=open(filename,"w")
headers="row,open\n"
f.write(headers)

for i in range (0,55970):
    score=rf.predict(edit[i].reshape(1, -1))
    score=str(score).replace('[','').replace(']','')
    f.write(str(i) +","+ score +"\n")
    
f.close()

Я понимаю, что должен записывать данные только после того, как получу их все, но я не уверен, go как это сделать - учитывая, что я знаю только f.write (). Могу ли я создать функцию для моего прогноза и вернуть оценку, а затем создать список для хранения всех оценок и записать его? (если это возможно)

[Изменить]

score=rf.predict(edit)
with open('data.csv', 'w',newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['row', 'open'])
    for i in range(55970):
        writer.writerow([i,str(score[i])])

^ добавлено на основе нового предложения. Обнаружил, что мне нужно просто сделать прогноз, а затем написать строки, которые значительно сократили затраченное время!

Спасибо за вашу помощь !!

1 Ответ

1 голос
/ 05 августа 2020

Модуль CSV - лучший инструмент для этого. В частности, writerows() - это то, что вы ищете.

https://docs.python.org/3/library/csv.html#csv .csvwriter.writerows

Вот пример из документации:

import csv
with open('some.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerows(someiterable)
import csv

with open('data.csv', 'w') as csv_file:
    writer = csv.writer(csv_file)
    writer.writerow(['row_id', 'open_flag'])
    for i in range(55970):
        score = str(rf.predict(edit[i].reshape(1, -1)))
        score.replace('[', '').replace(']', '')
        writer.writerow([i, score])
...