220824 수요일 TIL

DanA·2022년 8월 24일
1

TIL

목록 보기
1/2

오늘의 기록


"연구에 집중한 날: 데이터불균형, 멀티프로세싱, ndarray 차원, unlabeled false data 생성"

  • 클래스로 모듈화, 독스트링 작성
  • 데이터불균형
  • 멀티프로세싱 처리
  • ndarray 차원 다루기
  • 서버 간 파일 전송

클래스로 모듈화, 독스트링 작성

링크로 첨부

데이터불균형 처리

  • 연구기록 : True과 False의 비율이 너무 차이가 나서 데이터 불균형이 문제가 됨. 데이터 불균형 처리에 대해서 더 공부해보자.
    - oversampling, undersampling, smote, aumentation, class weight, focal loss
  • 김성범 교수님 강의 보기 : http://t2m.kr/yaegu
    - 관련 블로그글 : http://t2m.kr/MKX2P

Semi-Supervised Learning (SSL)을 도입하여 reliable한 artificial false data sets 구축하기

TODO. 아직 연구 중인 주제라 비공개, 논문 투고 후에 링크 걸기!

멀티프로세싱 처리

  • 그동안 이용해오던 parmap 기록
  • 요즘은 parmap 보다 다른 거 더 많이 쓴다던데, 나중에 업데이트하자
def make_false_set(_allele_list, _random_peptide_sequence_list, _length):
    af_arr = np.empty((0, 3))

    for allele, peptide in tqdm(itertools.product(*[_allele_list, _random_peptide_sequence_list])):
        time.sleep(1)
        af_arr = np.append(af_arr, np.array([[allele, peptide, allele+'_'+peptide]]), axis=0)

    return af_arr    
    
input = allele_list
split_input = np.array_split(np.array(input), num_cores)
split_input = [x.tolist() for x in split_input]
af_arr = parmap.map(make_false_set, split_input, random_pepseq_9mer, '9', pm_pbar=True, pm_processes=num_cores)

기본 사용방법은 다음과 같이.. 자세한 건 https://pypi.org/project/parmap/ 참고

parmap.map(function, input, argument1, argument2)

ndarray 값 추가 및 차원 다루기

차원을 늘리면서 ndarray에 값 추가하기 (=list의 append와 유사)

ndarray에 [이름, 나이, 성별, 학교]로 된 요소를 추가해봅시다.
먼저 numpy.empty 함수를 사용하여 빈 ndarray를 만든다.

shape argumemet는 tuple을 받는다.

>>> array = np.empty((0, 4))
>>> array = np.append(array, ['Minwoo', '26', 'man', 'KHU'])
>>> array
array(['Minwoo', '26', 'man', 'KHU'], dtype='<U32')
>>> array.shape
(1, 4)

>>> array = np.append(array, [['Dongjun', '24', 'man', 'Postech']], axis=0)
>>> array
array([['Minwoo', '26', 'man', 'KHU'],
       ['Dongjun', '24', 'man', 'Postech']], dtype='<U32')
>>> array.shape
(2, 4)

ndarray 모양바꾸기

리눅스 scp 명령어 (서버 간 파일 복사)

scp로 터미널에서 서버에서 서버로 파일 및 폴더를 전송할 수 있었는데, 나는 그동안 바보같이 filezile를 이용해서
[서버A -> 로컬로 다운로드 후 -> 서버B로 업로드] 의 방법으로 해왔다 ㅠ

scp -P 포트번호 파일경로 원격지id@원격지ip:복사할파일경로
scp -P 0011 /home/hb/file.py hb@163.180.14.11:/home/hb/dir/file.py

scp -r 폴더경로 원격지id@원격지ip:복사할파일경로
scp -r /home/hb hb@163.180.14.11:/home/hb/dir

회고


아쉬운 점

  • SSL 공부 좀 더 하려 했는데 못했음 ㅜ ㅜ 논문읽기는 왜이렇게 어려운 것인가...
  • 머신러닝 결정트리 정리못함 실습 준비해야되는데 언제까지 미룰 수가 없음. 빨리 하자 ㅜㅜ

칭찬

  • 데이터 핸들링하기 좀 어려웠는데 그래도 잘 했다
  • TIL한 게 어디야 !

내일 계획


  • 연구 : 학습 완료된 걸로 confidence 높은 unlabeled data 선별 후 계속해서 재학습
    => 나중에... 1. 불균형 데이터 처리를 위한 여러가지 샘플링 기법 적용
    2. 또한 SOTA급 SSL 논문에서 제시하는 방법을 활용
  • 실습준비 : Random Forest 실습 노트북 만들기
  • numpy : ndarray 차원 바꾸는 거 복습하기
  • CNN 부족한 부분 다시 공부하기 (모델 구조 바꿔야될 수도...)
profile
단아와라라

3개의 댓글

comment-user-thumbnail
2022년 8월 25일

와우 !! 오늘 하루 정말 많은 것을 공부하셨군요 !! 그리고 혹시 포항공과대학교 다니는 24살의 동준씨를 아시나요?

1개의 답글
comment-user-thumbnail
2022년 8월 25일

*filezile -> filezila 수정 바랍니다.

답글 달기