1. 程式人生 > 程式設計 >獲取python執行輸出的資料並解析存為dataFrame例項

獲取python執行輸出的資料並解析存為dataFrame例項

在學習xg的 時候,想畫學習曲線,但無奈沒有沒有這個 evals_result_

AttributeError: 'Booster' object has no attribute 'evals_result_'

因為不是用的分類器或者回歸器,而且是使用的train而不是fit進行訓練的,看過原始碼fit才有evals_result_這個,導致訓練後沒有這個,但是又想獲取學習曲線,因此肯定還需要獲取訓練資料。

執行的結果 上面有資料,於是就想自己解析螢幕的資料試一下,螢幕可以看到有我們迭代過程的資料,因此想直接獲取螢幕上的資料,思維比較low但是簡單粗暴。

獲取python執行輸出的資料並解析存為dataFrame例項

接下來分兩步完成:

1) 獲取螢幕資料

import subprocess
import pandas as pd
top_info = subprocess.Popen(["python","main.py"],stdout=subprocess.PIPE)
out,err = top_info.communicate()
out_info = out.decode('unicode-escape')
lines=out_info.split('\n')

注:這裡的main.py就是自己之前執行的python檔案

2) 解析檔案資料:

ln=0
lst=dict()
for line in lines:
 if line.strip().startswith('[{}] train-auc:'.format(ln)):
 if ln not in lst.keys():
  lst.setdefault(ln,{})
 tmp = line.split('\t')
 t1=tmp[1].split(':')
 t2=tmp[2].split(':')
 if str(t1[0]) not in lst[ln].keys():
  lst[ln].setdefault(str(t1[0]),0)
 if str(t2[0]) not in lst[ln].keys():
  lst[ln].setdefault(str(t2[0]),0)
 lst[ln][str(t1[0])]=t1[1]
 lst[ln][str(t2[0])]=t2[1]
 ln+=1
json_df=pd.DataFrame(pd.DataFrame(lst).values.T,index=pd.DataFrame(lst).columns,columns=pd.DataFrame(lst).index).reset_index()
json_df.columns=['numIter','eval-auc','train-auc']
print(json_df)

整體程式碼:

import subprocess
import pandas as pd
top_info = subprocess.Popen(["python",err = top_info.communicate()
out_info = out.decode('unicode-escape')
lines=out_info.split('\n')
 
ln=0
lst=dict()
for line in lines:
    if line.strip().startswith('[{}]    train-auc:'.format(ln)):
        if ln not in lst.keys():
            lst.setdefault(ln,{})
        tmp = line.split('\t')
        t1=tmp[1].split(':')
        t2=tmp[2].split(':')
        if str(t1[0]) not in lst[ln].keys():
            lst[ln].setdefault(str(t1[0]),0)
        if str(t2[0]) not in lst[ln].keys():
            lst[ln].setdefault(str(t2[0]),0)
        lst[ln][str(t1[0])]=t1[1]
        lst[ln][str(t2[0])]=t2[1]
        ln+=1
json_df=pd.DataFrame(pd.DataFrame(lst).values.T,'train-auc']
print(json_df)

看下效果:

獲取python執行輸出的資料並解析存為dataFrame例項

以上這篇獲取python執行輸出的資料並解析存為dataFrame例項就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。