본문 바로가기
국비교육기관/수업

51일차_머신러닝_인코딩 실습_Decsion Tree / JSP_Scope

by 밀키스 2021. 5. 24.

21.05.24

 Machine Learning 

 

@함수 - value_count( ) 

  => 데이터의 종류 및 갯수 확인

  - 위 사진 처럼 "cap_shape"라는 데이터의 각 종류 갯수 를 반환한다.

 

@데이터 전처리 - Encoding ( 인코딩 ) 

  => 2가지 종류 인 Label Encoding One-hot Encoding 이 있다.

 

% Label Encoding - 실습 

보는것과 같이 Dictionary 등을 활용하여, 각 Label들을 숫자로 변환한다 .

 

보는것과 같이 기존의 데이터인 "X" 는 그대로 보존하고 "X1"이라는 새로운 변수에 데이터를 복사한다.

  -  map( )  함수를 사용하여 기존의 "cap-shape" 칼럼의 값을 문자에서 숫자로 변경한다 .

  -  result3  변수에 "cap-shape" 칼럼의 데이터 종류 및 갯수를 담아 반환하여 확인한다.

 

 

% One-hot Encoding 실습 

  => 어떻게 보면  unique( )  함수의 결과 형태를 Table형태로 뽑는것. 이라 표현하면 적절할까?? 사진과 같이

       한 컬럼의 데이터 값에 대한 정보들을 0과 1만으로 표현 한다.

 

 

위의 Label Encoding과 마찬가지로 새로운 변수 생성하여 실습 진행한다.

  - Pandas 의  get_dummies( )  함수를 이용하여 one_hot Encoding 실행

  - 각 행별 칼럼에 대한 데이터 정보를 0과 1로 호출하기 때문에 기존의 22개였던 열이 117개로 늘어남 .

 

 

해당 칼럼이 너무 많이 출력되기 때문에 임의로 내가 보고 싶은 칼럼들만 인코딩 작업을 실행해보았다.

 

 

@ DecisionTree ( 의사결정나무 ) - 실습 

  => 48일차에 배웠었으나.... 내가 제데로 기록 못했던 의사결정나무에 대한 실습 내용

 

% 모델 생성 함수 호출 및 분류 모델 생성 

  - X와 y 에 대한 학습 데이터 ( train ) 및 기존의 데이터 ( test )를 생성한다.

  - 데이터를 집어 넣으며 학습시키고, 이에 대한 값을 비교해가면서 정확도를 보는 것.

  - train 데이터에는 One-hot Encoding 과정을 거친 값 을 집어 넣는다.

asd

ㅁㄴㅇ

 

% 학습 및 테스트 데이터에 대한 성능 확인 

  - 성능 확인을 위한 함수  accuracy_score 를 호출하여 성능을 확인한다.

  - 뭐... 아무짓도 하지 않았기 때문에 성능은 100퍼센트가 나온다.

 

% max_depth를 이용한 사전 가지치기 

  - 솔직히 이해 못했다... 뭐...  max_depth 라는 방법을 사용하여 가지치기를 진행한다.

  -  accuracy_score 를 통해 각 데이터별 성능을 구할 수 있다.

  - 여기서 train모델을 학습하는데 쓰인 것 , test모델이 학습하는데 있어 한번도 접해보지 못한 데이터 이다.

 

% max_leaf_nodes를 이용한 사전 가지치기 

 

  - 해당 결과 또한  max_leaf_nodes 라는 옵션을 통해 가지치기 작업을 한다.

 

위의 2가지 결과는 서로에게 아무 영향이 없으며 기존의 데이터 값을 다른 방법으로 가지치기를 진행

별개의 데이터 값들이다.

 

 

================================================

 

 

 JSP 

 

@ Page Scope 

=> 실제 선언된 JSP 페이지 내에서만 사용할 수 있는 것, 페이지 내에서 지역변수처럼 사용

 

  - 해당 페이지가 클라이언트에 서비스를 제공하는 동안에만 유효 

  - page Context 내장객체 로 사용

  -  Forward 가 될 경우 해당 Page Scope에 지정된 변수 사용할 수 없음 

  - 특정 페이지 실행되는 동안에만 정보를 유지하고 싶을 때 사용

 

@ Request Scope 

=> 클라이언트로부터 하나의 요청이 들어와서 서버가 응답을 보낼 때까지, 계속 사용할 수 있는 영역

  

  - 클라이언트의 요청이 처리되는 동안 유효

  - request 내장객체로 사용

  - Forwarding 될 경우 여러 페이지에서도 요청 정보가 유지되므로 request 영역의 속성을

    여러페이지에서 공유할 수 있음

 

@ Session Scope 

=> Session 객체가 생성되고 소멸될 때까지, 하나가 아닌 여러개의 요청이 들어와도 남아있음

 

  - 세션이 유지되는 동안 유효

  - 같은 웹 브라우저 내에서 실행되는 페이지들이 속성을 공유할 수 있음

  - Session 내장객체 사용

  - request 보다 정보를 오래 유지 ( 상태정보 유지 )

 

@ Application Scope 

=> Application 객체가 생성되고 소멸될 때까지 유지

 

  - 웹 어플리케이션이 실행되고 있는 동안 유효

  - 하나의 서버에는 여러 개 어플리케이션 존재 가능

  - Application 내장 객체 사용

  - 모든 클라이언트가 공통으로 사용해야할 값이 있을 때 사용

 

@ Scope 실습 

  - 위에서 언급한 4가지 영역의 Scope_Value  생성

  - 지금까지 쿠키나 세션 값을 생성했던듯, 키값과 value 값을 준다 .

  - 그리고 4개의 변수를 생성하여 만든 Scope 값을 담아준다 .

  - 표현식을 사용하여 호출한것 처럼 각 값들을 반환한다. ( 키 값이 아닌 Value 값이 표출 됨.)

 

  - 화면과 같이 현재는 4가지의 Scope 값이 모두 떠있다. 여기서 4개에 대한 영역에 대해 간단히 쓰면

 

Page : Scope 값을 생성한 페이지를 종료하면  값이 사라진다.

Request : Scope값을 생성한 파일에서의 request가 없어지고 새로운 요청이 발생하면  사라진다.

Session : 현재 호출된 브라우저를 종료하면 값이 사라진다.

Application : 값을 생성하며 사용했던 Server를 종료했다가 다시 실행하면 페이지를 키면 사라진다.

 

아래는 Page.2의 소스코드이다.

단순히 Page.1에서 넘겨 받은 각 Scope값들을 변수에 저장하고 페이지에 반환한다.

 

% Page & Request Value 

Page 1 및 Page 2

 

  - Page.1 에서는 모두 값이 있었으나, <a> 태그를 통해 이동한 Page2에서는 Page 및 Request가 null값 이 나옴.

 

% Session 

1. 해당 페이지의 주소를 복사 하여, 2. 크롬 창을 완전히 닫아 준다.

그리고 페이지를 재호출하면 아래와 같이 Session 값이 null임을 볼 수 있다.

% Application 

 

 Application 값의 경우 Server 자체를 다시 끄고 재실행 하여 Session때 처럼 다시 페이지로 돌아가본다.

그러면 아래와 같이 Application 값이 null이 됨을 볼 수 있다.

 

반응형

댓글