Day77

김재현·2023년 9월 11일

JUPYTER/DL/ML

목록 보기
50/73

분석순서

사내 서버를 통해 pip 설치가 불가능한 경우.
중소기업은 인터넷 사용에 제한이 없으나 일정 규모의 프로그래밍 회사(연구소)는 보안에 민감하기 때문에 외부 인터넷, 데이터 접속을 차단. -> pip 설치 불가
보안 책임자/부서를 통해 반출 문의.

pip freeze 사용
1) 현재 설치된 목록을 텍스트 파일로 저장

pip freeze > 텍스트파일경로

2) 텍스트 파일에 명시된 패키지들을 일괄 설치

pip install --upgrade -r 텍스트파일경로

(단, 이 방법은 네트워크가 가능한 환경에서만 동작)

3) 외부컴퓨터에서 pip를 통해 패키지들을 특정 폴더에 다운로드받기

pip download -d 폴더경로 -r 텍스트파일경로

ex) pip download -d ./hello -r pypackage.txt

다운로드 후 패키지 목록이 백업된 텍스트 파일을 패키지 폴더안에 함께 보관

---> 이 폴더를 통째로 USB에 담아서 설치하고자하는 PC에 가져감

설치시에는 패키지와 텍스트파일이 포함된 폴더 위치에서 명령프롬프트를 실행

pip install --no-index --find-links -r 텍스트파일경로

ex) pip install --no-index --find-links -r pypackage.txt


연습문제 풀이

명목형 처리(더미변수/카테고리화)

  • 더미변수변수의 값이 최소 2개를 초과할 경우 수행. 아니면 단순 category 타입으로 변경.

범주형(명목형) 데이터(카테고리가 1~3등급)를 각 카테고리별로 나누어 표현 - 명목형은 계산할 수 있는 값이 아니기 때문

명목형 변수 : 변수의 값이 고유한 순위가 없는 범주를 나타내는 경우 해당 변수

ex) 태아의 성별, 위암 등급, 승무원의 등급

명목형 확인을 위해서는 데이터의 종류가 몇 가지인지 확인.
즉, 명목형으로 의심되면 일단 value_counts()로 확인.
type, shape, info 등을 사용해 객체 형태 및 정보를 확인 가능.

sigmoid는 이항분류, softmax는 다항분류(원핫인코딩 즉, 더미변수화)

종속변수 카테고리의 기준

탐색적 데이터 분석에서 사용하기 위해 카테고리화를 진행 - (단, 통계에서는 카테고리 형식으로 데이터를 분석하지 않고 int 형식으로 사용)

정석대로라면 카테고리로 변경하지 않음.
단, 탐색적 데이터 분석을 한다면 명목형 변수를 제거해야 하는데 명목형을 카테고리로 변경하면 자동으로 제거해주기 때문에 카테고리 형식으로 변환 후 진행.

category 대신 더미변수로 변경하면 int로 돌아오므로 더미변수화를 추천.

모델 정의

relu, sigmoid, rmsporp, binary_crossentropy, acc

  • input_shape은 독립변수 수
  • Dense(출력 수) 신경망 개수의 수에 따라서 모델의 성능에 차이가 발생
    • 직감으로 맞춤(다른 방법 없음) 보통 16 또는 32 이상
    • 최적의 값을 직접 탐색(너무 많으면 컴퓨터 다운)
  • activation은 모델과 분석 종류에 따라서 다름
    • 보통 시작은 relu, 분류는 sigmoid, 회귀는 linear
  • optimizer은 모르면 Adam
  • epochs는 많아도 크게 상관이 없음
  • 2차항을 하고 싶다면 sklearn으로 2차항 생성 후 Sequential에 입력

종속변수에 대한 one-hot-encoding

sigmoid는 이항분류, softmax는 다항분류(one-hot-encoding-즉, 더미변수화)


진도 합성곱신경망(CNN)

CNN은 속도는 느리지만 정확도는 높은 만큼 영상, 이미지 분석에서는 CNN이 많이 사용되고 있음.

모델 개발(모델 정의)

(Conv2D 적용 [-> BatchNormalization층 적용] -> MaxPool2D 적용 [-> Dropout])의 과정을 n번 반복 -> Flatten 레이어 추가 -> Dense층 n개 추가

  • Conv2D 층
    • 영상이나 이미지의 특징을 확인하기 위한 함수
    • filters: 필터(커널)의 개수
    • kernel_size: 필터의 크기
    • strides: 필터의 이동 간격
    • padding: valid(패딩 없음), same(인풋과 아웃풋이 같도록 패딩)
    • activation: 활성화 함수
    • input_shape: 첫 레이어에 인풋으로 들어오는 크기
  • BatchNormalization (배치정규화)
    • 신경망 입력데이터를 평균 0, 분산 1로 정규화해서 학습이 잘 이루어지도록 하는 방법
    • BatchNormalization 층에서 정규화를 수행하므로 별도의 정규화를 적용할 필요가 없다.
    • 만약 이 층을 적용하지 않는다면 학습 전에 별도의 정규화를 수행하는 것이 좋다.
  • MaxPool2D
    • 컨볼루션 레이어의 출력 이미지에서 주요값만 뽑아 크기가 작은 출력 영상을 만든다.
    • pool_size: 축소시킬 필터의 크기(비율)
    • strides: 필터의 이동 간격. 기본값으로 pool_size를 갖는다.
    • 일반적으로 strides는 pool_size와 동일하게 적용되므로 생략하는 편.

0개의 댓글