Запись результатов прогнозирования в отдельные файлы для каждой группы с использованием цикла for в Python - PullRequest
0 голосов
/ 28 января 2019

У меня есть Dataframe "c", который имеет атрибут UNITID.Я разделил фрейм данных по разным UNITID и запустил модель нейронной сети для каждого из UNITID.Пожалуйста, см. Ниже для того же.Я пометил их как c1, c2, ... cn, используя функцию перечисления, и сохранил в 'c_new'

c_count = c['UNITID'].nunique()
c_new={"c{0}".format(i+1):j[1]for i,j in enumerate(c.groupby('UNITID'))}
for i in range(c_count):
    i = i+1
    c_data = 'c'+str(i)
    print("==============================-------{}-------===========================".format(i))
    c_new[c_data] = c_new[c_data].set_index('DATETIME')
    values = c_new[c_data].values
    # Encoding categorical data
    ..
    #Convert Categories in Text into numbers using Label encoder/ OneHotEncoding
    ..
    # split into train and test sets
    ..
    # reshape input to be 3D [samples, timesteps, features]
    ..
    #Scale and Normalize inputs
    ..
    # Deep Neural Network model
    ..
    # fit network
    ..
    # make a prediction
    ..

    #performance metrics: MAE, MSE, RMSE, Rsq
    ... 

Каждый раз, когда модель запускается для каждого из UNITID, генерируются новые результаты прогнозирования,но мой текущий код только перезаписывает результаты в один и тот же файл с тем же именем (имеет смысл, поскольку именно так работает df.to_csv).

Я хочу записывать результаты в отдельный файл каждый раз, когда генерируются новые результаты.Для каждого c {i}, где i = 1,2 .. n.;выходной файл прогноза для каждого должен быть c_out_ {i}, как показано ниже.

i/p file --> o/p

c1 --> c_out_1
c2 --> c_out_2
c3 --> c_out_3
.
.
cn --> c_out_n

Как мне этого добиться?

#Write  predictions to file
test_y = pd.DataFrame(test_y) #Actual values
yhat = pd.DataFrame(yhat) #predicted values using the model

test_y.rename(columns= {0: 'Actual value'}, inplace = True)
yhat.rename(columns = {0: 'Pred value'}, inplace = True)

new = pd.concat([test_y, yhat], axis = 1)
#print(('ct'+ str(i)))
new.to_csv('c_out_{i}.csv') #I want to write a different output csv file for each UNITD's prediction; 

Любая помощь будет принята с благодарностью.Спасибо!

1 Ответ

0 голосов
/ 28 января 2019

внутри вашего цикла for:

new.to_csv('c_out_' + str(i) + '.csv')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...