python 에서 출력 을 실행 하 는 데 이 터 를 가 져 오고 dataFrame 인 스 턴 스 로 분석 합 니 다.

xg 를 공부 할 때 학습 곡선 을 그리고 싶 었 지만 어 쩔 수 없 이 이 evals 가 없 었 습 니 다.result_
AttributeError: 'Booster' object has no attribute 'evals_result_'
분류 기 나 회귀 기 를 사용 하 는 것 이 아니 라 fit 가 아 닌 train 을 사용 하여 훈련 하 는 것 이기 때문에 소스 코드 fit 를 봐 야 evals 가 있 습 니 다.result_이 때문에 훈련 후 에는 이것 이 없 지만 학습 곡선 을 얻 으 려 면 훈련 데이터 가 필요 할 것 이다.
실행 결과 에 데이터 가 있 기 때문에 화면의 데 이 터 를 스스로 분석 하고 싶 습 니 다.화면 은 우리 가 교체 하 는 과정 이 있 는 데 이 터 를 볼 수 있 기 때문에 화면의 데 이 터 를 직접 얻 으 려 면 생각 이 비교적 낮 지만 간단 하고 거 칠 습 니 다.

다음은 두 단계 로 나 누 어 완성 합 니 다.
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('
')
주:이곳 의 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", "main.py"], stdout=subprocess.PIPE)
out, err = top_info.communicate()
out_info = out.decode('unicode-escape')
lines=out_info.split('
') 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)
효과 보기:

이 편 은 python 에서 출력 을 실행 하 는 데 이 터 를 가 져 오고 dataFrame 인 스 턴 스 로 해석 하 는 것 이 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시기 바 랍 니 다.여러분 들 이 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기