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

49일차_JSP_MVC Model.1_쿠키 / 머신러닝_결측치_시각화

by 밀키스 2021. 5. 21.

21.05.21

 JSP 

@JSP 오류 정리 

1. 404Error : 서버에서 해당페이지를 찾을 수 없다는 오류 
 = 1_1. 보내려고 하는 서버페이지나 HTML페이지의 이름이 잘못됐을 때
    1_2 . 만든 HTML/JSP페이지가 webapp폴더 아래에 있는지 확인
    1_3 . 만든 HTML/JSP페이지가 같은 프로젝트 안에 있는지 확인 
 
 2. 500Error : Servlet을 먼저 실행하고 HTML / JSP를 실행하지 않았을 때 
 = 먼저 HTML/JSP(사용자에게 값을 입력받는 페이지) 실행
 
 3. 페이지가 실행이 안되고 Tomcat경고창 나왔을 때 
 = 3_1 . Tomcat이 설치된 경로를 변경했을 때
    3_2 . URL Mapping 값이 중복해서 지정이 됐을 때**
    3_3 . Tomcat이 실행되는데 또 실행을 시켰을 때(Port번호변경)
   
 4. Save Problems 오류 : 입력한 한글에 오류 
 = Select Char..3번째 버튼을 클릭하고 잘못된 한글을 찾아서 수정
 
 5. JDBC연동할 때 많이나는 오류 
  = java.sql.SQLSyntaxErrorException(SQL문 확인할 것)
 
 6. HTML / JSP에서 서버페이지를 호출 시 (submit버튼을 클릭했을 때) 무한로딩일 때 / 

    sql Developer에서 검색한 값과 Servlet에서 검색한 값이 다를 때 
  = sql Command line에서 로그인 후 commit 명령어 입력
 
 7. HTML에서 수정한 태그가 실행하면 반영이 안될 때 
  = HTML파일을 새로고침 -> Server를 재시작 -> 컴퓨터 재부팅

@sendRedirect 실습 - QueryString 방식 Data전송 

 

특별하다면 특별하다만... 무튼! 48일차에 진행했던 실습. "loginProgram.jsp" 파일에 그대로 진행 하였다.

  - 우....선 인코딩 작업을 진행해준다. "URLEncoder.encode" 명령어로 값과 인코드할 타입 지정

  - 기존에  sendRedirect 를 사용하던것에 더해 전송할 데이터를 적어준다.

     => 원레는 파일 이름( URL )만을 보냈지만 데이터 값을 더해 "URI"를 보내준것이라고 한다.

    => 그래서 보면 "QueryString" 형태로 Data가 전송됨을 볼 수 있다.

 

@Model 2 실습 

  => Model.2 실습은 "Controller"에 해당하는 부분은 Servlet 파일로, "View"단에 속하는 부분은 변경X.

 

본래는 "Model"에 해당하는 < DAO/DTO >를 생성해야하나 Controller에서 다 수행해버렸다.

 

추가적으로 특별한 점은 없다. "JSP" 파일이 아닌 "Servlet"파일이 "Controller"인 점 만 다르고

코드 자체는 완전히 일치하다.

 

 

@쿠키와 세션의 필요성 

위와 같은 특징이 있고, 쿠키에 대해 간단히 정리

 

%쿠키 

   =>  클라이언트(브라우저)에 저장되는  키와 값이 들어있는 작은 데이터 파일

   => ID저장, 로그인 상태 유지의 작업 수행

   => 일주일간 다시 보지 않기 / 장바구니 기능 등에 쓰일 수 있다.

 

 단점 

  - 보안에 취약

  - 작은 허용 용량 

  - 브라우저를 변경할 경우 다른 브라우저에서 저장한 쿠키 값을 사용할 수 없음

 

아래는 쿠키의 동작 방식에 대한 내용이다.

 

 

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

 Machine Learning 

 

@머신러닝 실습 - 타이타닉 

<%> 명령어 종류 

%head / tail 명령어 

각각 상위 및 하위 5개의 데이터를 노출시킨다.

 -  tail( )  명령어 처럼 특정 숫자를 입력해 출력할 데이터의 갯수도 정해줄 수 있다. ( 5개 이상도 상관X )

 - 첫번째 or 마지막 순서부터 지정 갯수만큼 데이터 출력 ( 지정하지 않으면 기본으로 5개 )

 

% drop - axis / inplace 

"axis"는 축 옵션으로, 1은 행방향, 0은 열방향을 뜻한다.

"inplace" drop( )  명령어에 있어 Default가 False로, True를 주면 해당 결과값이 변수에 반영된다.

 (False를 주면 출력했을 때 지워서만 나오지 Data값은 변하지 않는다.)

 

% info( ) 

 

 info( )  명령어는 해당 테이블의 칼럼 정보를 불러온다.

 shape( )  명령어로 해당 테이블의 행열 수를 호출해보면 알겠지만, 갯수가 부족하면 결측치가 존재한단 뜻 .

asd

asd

asd

 

@실습과정 ( 머신러닝의 과정 ) 

 1.  문제 정의

       => 탑승객의 정보를 바탕으로 생존/사망자 예측 

 2.  데이터 수집 

       => kaggle 사이트로부터 다운로드 

 3.  데이터 전처리

       => 불필요한 컬럼 삭제 
       => 결측치 채우기(데이터 삭제, 기술통계, 상관계수를 통해 대체값) 

       => 특성 공학 

       => 새로운 컬럼 만들기 

       => 범주형 데이터로 바꾸기 .

 4.  탐색적 데이터 분석 (EDA)

       => train 데이터를 이용해 탐색 .

 5.  모델 선택

 6.  학습

 7.  평가

 

아래의 실습 과정에서는 3번과 4번 조금..만 진행하였다.

 

@ [3]. 데이터 전처리 - 결측치 채우기 < fiilna / corr ( 상관관계 ) > 

% fillna( ) 

 

결측치를 채우는 과정을  fillna( )  를 이용하여 진행한다.

  -  value_counts( ) 를 이용하여 해당 칼럼의 각 데이터 값들의 갯수를 구한다.

  -  fillna( )  명령어를 통해 결측치 값을 어떤 값으로 채울지 지정 , 해당 Data값을 inplace에 True를 주어 반영한다.

  - 채운 다음 해당 칼럼의 각 데이터 값 갯수를 불러오면 "S" 값이 2개 늘어남을 볼 수 있다.

      => 총 데이터 값이 889개에서 891개로, 결측치가 정상적으로 채워짐을 알 수 있다 .

 

<shape: 해당 테이블의 행수, 열수를 불러온다.>

 

% corr( ) - 상관관계 ( Correlation ) 

 corr( ) 이란 명령어를 통해 각 칼럼들이 다른 칼럼들과 갖고 있는 상관관계를 수치화하여 Table로 나타낸다.

각 값들에 대해서는 절대값이 높음이 높은 관계도를 갖는다 . 양수냐 음수냐는 그저 양/음 적 관계도가 높다 는 뜻이다.

 

때문에 만일 "Fare" 열의 결측치를 채우려 한다면 절댓값이 가장 높은 "Pclass" 열을 사용 한다.

 

 

 pivot_table  명령어를 사용하여 위와 같은 표를 만든다. 각 옵션은 다음과 같다.

  - "index"는 내가 집계함수("aggfunc")를 이용하여 연산할 Column을 기입한다.

  - 본래는 모든 열에 대한 값을 반환하지만 특정 열에 대한 값만을 출력하기 위해 "values"를 사용한다.

  - 집계함수 ( "aggfunc" )에는 위에서 평균을 사용했으나, 여러개를 쓸 수도 있다.

 

 

 

위에서 연관도가 높은 <Pclass>와 값을 구별하기 위한 <Sex> 열에 대한 평균값을 구하였다.

이번엔 "Fare"열이 결측치인 행을 호출한다.

해당 작업을 위해  isnull( )  명령어를 사용하였으며, 해당 명령어를 사용하면 다음과 같이 boolean 형태로 반환한다.

 

보면 위에는 일단 다 False이긴 한데... 무슨 값이 null이라면 True를 반환한다. 이를 위의 사진 처럼

 test[test['Fare'].isnull( )] 를 호출하면 True인 모든 행들을 반환한다.

 

 

 

 

그리고 <Pclass>는 3, 성별은 male이므로 상관관계 표에 따라 "12.661633" 값으로  fillna( )  명령어를 

이용하여 결측치를 채워준다. "inplace"옵션은 fillna 또한 호출한 순간만 보여주는 값이므로, 해당 값을 저장하기 위해 True를 준다 .

 

 

그리고 확인해보면 딱 1개 있었던 결측치 값이 채워짐을 볼 수 있다.

 

@ [4].탐색적 데이터 분석 - 시각화 

% train의 Cabin & Pclass 시각화 

a. x축 기준 - Cabin 

 

  - "sns"seaborn Library를 호출했다 .

  -  countplot  명령어를 통해 Bar 차트를 만들었으며. "data"train 테이블 , " x "축은 "Cabin" 으로 지정하였다.

  - "hue" 옵션의 경우 예로 Matlab 언어에서 legend x/y Label 등의 추가 작업 없이 Bar 구분이 가능하다.

 

 

b. y축 기준 - Pclass 

y축 기준으로 만든 Chart 또한 특별한건 없다. 그저 x축에 값을 주지 않고 y에만 값을 주어 y축을 기준으로 값을 표출함.

  - 위와 동일하게 "hue" 옵션은 Survived 를 주었다. ( 그냥 바를 구분해 내가 이름 지은게 Survived )

  - " y "축에 Pclass 를 주고, " x "축은 자동으로 해당 값에 대한 counting을 표출 한다.

반응형

댓글