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

53일차 머신러닝 - Importance, 시각화 / JSP - DAO 활용 페이지 실습

by 밀키스 2021. 5. 26.

21.05.26

 Machine Learning 

 

@ Series - info / 칼럼 및 인덱스 확인 

 

위와 같이 Series의 경우 는 Column을 확인하는  colums  index( ) ,  info( ) 와 같은 함수를 사용할 수 없다 .


하지만 아래와 같이 정의할 때 값을 칼럼으로 주면 결과를 확인할 수 있다.

 

좌측과 같이 data안의 값을 칼럼이 아닌 List 형태로 주게 되면  DF와 같이 정의 된다.

해당 값을 담고 칼럼, 인덱스, 정보를 확인한다.


@중요도 ( Importance ) 

 

  •  Model이름.feature_importances_  는 해당 모델의 각 칼럼별 데이터들이 갖는 중요도 를 표기한다.
  • 출력된 결과는 몇개인지 보이진 않지만 총 117개이다. 이는 Data를 One-hot Encoding한 결과와 같다.

아래는 Model에 넣은 Data를One-hot Encoding한 결과이다.

위 사진을 보면 "Importance"를 출력한 결과의 수와 같음을 볼 수 있다.


% 중요도 -DataFrame 생성 

  • 중요도의 값들은 모두 One-hot Encoding한 결과의 값들에 대해 표현한다.
  • 때문에 각 값들이 어떤 컬럼의 어떤 데이터를 말하는지 보기 위해 정의한다.
  • 데이터들이 어떤것에 대해 말하는지 보기 위해 "index"옵션에 데이터를 One-hot EncodingX_one_hot을 줌.
  • "columns" 옵션은 DF의 칼럼들을 리스트 형태로 넣어준다.

% 중요도 Data Frame - 시각화 

  • 총 6개의 0이 아닌 중요도 값을 산출하였다. 해당 값들에 대한 시각화를 위해 "df2"라는 변수를 생성한다.
  • 위에서 만든 중요도 값을 담은 변수 "tmf".sort_values( ) 명령어로 정렬시킨다.
  • 해당 명령어의 "by" 옵션은 정렬한 칼럼의 이름을 List 형태나 문자 형태로 받는다.
  • "ascending" 옵션은 내가 오름차순인지 내림차순인지를 결정한다. ( ascend는 상승을 뜻. False니 내림차순 )
  • 생성한 값을 출력하는데 나머지는 모두 0이므로 필요한 값 6개만 출력하기 위해  head( )  명령어를 사용.

  • 위에서 산출한 결과를 "df3"라는 변수에 담는다.
  • "df3"를 시각화 하기 위해, 각 Data의 index Index별 Values 를   .index  /  .values 로 불러낸다.<( )는 쓰지X>

  • Data Frame을 시각화 하기 위한 Liabrary인  seaborn  matplotlib.pyplot 을 호출한다.
  • <seaborn>은 <matplotlib>과 마찬가지로 시각화에 쓰이는 도구이지만 매트플랏 보다 쉽게 그래프를 그리고 스타일을 설정할 수 있다 는 장점이 있다.
  •  figure( ) "figsize" 옵션을 통해 plot 크기를 변경한다.
  • x축은 데이터의 인덱스 값 , y축은 데이터의 각 이름(values)로 설정한다.
  •  barplot( ) 명령어는 바 그래프를 만드는 <seaborn> 함수의 명령어이다.
  • 결과적으로 출력된 그래프를 보면 색 별로 시각화 됨을 확인할 수 있다.

@앙상블 ( Ensemble ) 

   => 여러 개의 머신 러닝 모델을 연결하여 더 강력한 모델을 만드는 기법.

  • 간단한 비유로 매우 똑똑한 한 사람 보다, 여러 사람이 모인 집단이 더 폭발적인 수행 능력을 보일 것.
  • 같은 뜻으로 여러개의 모델을 집단으로 구성, 연결한 것이 하나보다 더 좋은 성능을 보일 것이다.

% Bagging 

   => 같은 알고리즘으로 여러 개의 모델을 만들어서 투표를 통해 최종 예측 결과를 결정하는 방식

  • "Ensemble"의 기법 중 하나인 Bagging 으로 54일차 수업에 더 이어서 진행할 것 이다.
  • 복원 추출 : Sample 데이터에 만일 10개의 데이터 중 하나를 줘야하는데, 1번에 3을 주고 3이란 데이터를 다시 목록안에 있도록 하는것. 그니까 하나한테 줬다고 해서 9개의 목록중 주는게 아니라 다시 10개의 목록 중주는것
  • 데이터를 샘플에 부여하고 나서 다시 원데이터를 복원 하고 다른 샘플들에 나눠준다.
  • "투표"라는 작업은 데이터를 모두 부여하고 나서 이뤄진다.

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

 

 JSP 

=> 52일차에 이어 로그인 페이지 실습을 이어한다. / DAO를 생성, 기존의 코드 수정 작업 

 

@DAO 생성 / 로그인 페이지 수정 

%MemberDAO - select Method 생성 ( Login ) 

loginService.jsp

  • 기존에 만든 Login 페이지( loginService.jsp )는 위의 빨간 부분을 제외 모두 삭제한다.
  • 그리고 "MemberDAO" Class 파일을 생성, 로그인을 위한 "login" 메소드를 만든다.

  • JDBC 동적 로딩 하는 부분은  conn( )  이라는 메소드로 생성한다.
  • JDBC를 실행한 뒤 "finally"에서 Connect과 PreparedStatement 닫아주는 부분  close( )  메소드로 생성
  • 기존에 "requst"로 받아왔던 email 및 pw 값은 select 메소드의 매개변수 로 받는다.
  • 로그인에 필요한 email과 pw가 일치하는 회원정보의 값을 모두 받아 "MemberVo" 객체의 생성자에 담는다.
  • 해당 생성자의 값을 메소드의  return 으로 지정.

%loginService.jsp에 Select Method 적용 

  • "MemberVO" 객체 변수인 "vo"에 DAO 파일에서 생성한 "login" 메소드를 담는다.
  • "request"를 통해 전달 받은 email 과 pw 값을 매개변수로서 집어 넣는것.
  • 후에 받은 값을 "member"라는 이름의 세션으로 main페이지에 전송한다.

결국 해당 실습에서는 DAO 및 DTO를 활용하여 Model ( MVC ) 형태로 페이지를 제작 하는 것.

    --> 전에 1차 프로젝트를 진행하면서 지겹게 진행했던 과정이다. 해당 실습을 통해 다시 복기.


@ Inserte & Delete & Update 수정 

   => 위의 Login 페이지와 마찬가지로 기존에 사용했던 코드를 수정.

   => DAO에 필요한 DB 메소드를 구성, 기존의 코드를 수정하여 적용한다.


% Inserte 

   => 코드 자체는 Select문과 크게 다르지 않기에 굳이 리뷰는 하지 않는다.

  • Inserte 문 부분은 결국 Join, 회원가입 페이지이다.
  • DAO 페이지에서 회원가입 창에서 요청에 의해 전달 받은 값을 매개변수로 갖는 Join 메소드를 생성한다.
  • 해당 메소드를 통해 테이블에 행을 추가하고,  RequestDispatcher 를 활용하여 회원가입 성공 페이지로 이동.
  • 회원가입 성공 페이지에는 가입한 회원의 정보를 표시하며, 메인 페이지로 돌아가는 버튼 하나 만든다.

% 관리자 - Delete 

   => Delete 페이지, 회원 삭제 페이지는 "관리자" 전용 페이지라 생각 .

   => "admin"이란 아이디를 갖는 회원은 기존의 회원이 보는 정보 수정이 아닌 회원 삭제 버튼을 표기토록 한다.


  • 위와 같이 관리자냐 아니냐에 따라 다른 버튼을 표시하도록 설정한다.

  • 해당 페이지는 Main 페이지의 부분이다. 관리자의 아이디인 "admin"과 일치하면 회원 삭제 , 아니면 수정.
  • 관리자던 개인 회원이던 로그아웃 버튼은 로그인이 됐다면 표기 토록 한다.

ㅁㄴㅇ

ㄴㅁㅇ

ㅁㄴㅇ

ㅁㄴㅇ

ㅁㄴㅇ

asd

asd

asd

asd

반응형

댓글