21.05.28
Machine Learning
@Kaggle( 캐글 ) 팀등록 및 참여
=> 내가 수업듣고있는 "스마트인재개발원" 자체적으로 캐글 대회를 진행하였다. 총 3개반 참여.
% 캐글 신청 및 데이터 다운
=> 빨간색 동그라미 친 부분이 현재는 참여 신청을 해버려서 저래 뜨지만 원래는 "Join Competition"라고있다.
=> 해당 문구를 클릭하면 참여할 수 있으며, 사진과 같이 "Data"탭을 통해 파일들을 다운, 설명을 볼 수 있다.
=> 아래로 스크롤을 내리면 다운로드 받을 수 있으며, 뭐... 별동의 동의를 해야하는데 그냥 누르고 다시 다운버튼
% 팀 등록 및 초대
=> "Team"태그에서 내가 팀을 만들 수 있으며( 좌측 ), 팀 멤버를 초대할 수 있다.( 우측 )
=> 단, 한명씩만 초대 할 수 있다. 상대방이 수락을 해야 함.
=> 그리고 친구 이름을 적었을 때 뜨는 목록에서 선택 해야 초대할 수 있다. (경쟁에 참여한 닉네임이여야...)
@Ensemble - Boosting( 부스팅 )
- 성능이 낮은 여러 개의 모델을 이용한다.
- 처음 모델이 예측을 하면 그 예측 결과에 따라 잘못 분류된 데이터에 가중치가 부여된다.
- 부여된 가중치가 다음 모델에 영향을 준다.
- 잘못 분류된 데이터에 집중하여 개선된 분류 규칙을 만드는 단계를 반복하며 성능이 높은 모델을 만든다.
- ex) AdaBoost, GradientBoost, XGBoost
@ AdaBoost( Adaptive Boosting )
==> RF처럼 의사결정 트리 기반의 모델 → 각각의 트리들이 독립적으로 존재하지 않음
==> RF는 독립적으로 성장하는 반면에 AB는 각 트리별 영향을 받는다.
==> "가중치"라는 값이 다음 모델(트리)에 영향을 줌.
==> "사전가지치기" 가 되지 않으며 , 후에 개선된 방법 존재 .
% 동작순서.1
- 첫 번째 의사결정 트리를 생성
- 위쪽 빨간 원이 3개 있는 곳을 대충 분류 시킴
- 2개의 빨간 원과 1개의 녹색 세모가 잘못 구분됨
% 동작순서.2
- 잘못된 2개의 빨간 원과 1개의 녹색 세모에 높은 가중치를 부여
- 맞은 것(빨간 원 3개와 녹색 세모 4개)에는 낮은 가중치 부여
% 동작 순서.3
- 가중치를 부여한 상태에서 다시 분류 시킴
- 잘못된 3개의 빨간 원에 높은 가중치를 부여하고 맞은 5개의 녹색 세모는 낮은 가중치를 부여
% 동작 순서.4
- 가중치를 부여한 상태에서 다시 분류 시킴
% 동작 순서.5
- 진행한 분류들을 결합한다.
% AdaBoost
- "AdaBoostClassifier"를 통해 해당 모델을 생성.
- Hyper Parameter인 "n_estimators"는 RF와 마찬가지로 결정트리의 갯수를 정한다.
- "lerning_rate"의 Default는 1로 가중치 갱신의 변동폭을 조정
- asd
================================================
JSP
@JSP - 인터페이스 적용 실습
package command;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public interface Command {
// 상수, 추상메서드만 선언가능
public abstract String execute(HttpServletRequest request, HttpServletResponse response);}
=> "HttpServlet Request/Response"를 호출하는 "excute" 추상 메서드를 생성한 인터페이스 파일
=> 24일차에 인터페이스에 대한 수업이 진행됐었다. 해당 부분에 대한 실습을 JSP를 통해 진행
=> 해당 실습에서 인터페이스를 적용하는게 좀 억지스러울 수 있다 . 다만, 2가지 특징을 알기 위한 실습이라고...
=> 인터페이스는 일종의 1. 설계도 역할을 한다 . / 2. 다형성의 특징을 갖는다 .
% Controller 통합
package frontController;
import command.Command;
@WebServlet("*.do")
//디렉토리 방식 : 경로
//확장자 방식 : .do로 끝나게 되면 모두 이 서블릿으로 요청이 오도록 한다.
public class FrontController extends HttpServlet {
protected void service(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// 인코딩
request.setCharacterEncoding("euc-kr");
//getRequestURI() : 어디에서 요청이 들어오는지 알기 위한 메소드
String URI = request.getRequestURI();
//getContextPath() : /프로젝트 이름
String path = request.getContextPath();
//subString
//subString(start) : start 위치부터 끝가지 문자열 자르기
//subString(Start, end) : start 위치부터 end위치까지 문자열 자르기
String resultURI = URI.substring(path.length()+1);
Command command = null;
if(resultURI.equals("loginServiceCon.do")) {
command = new LoginServiceCon(); // 업캐스팅
}else if(resultURI.equals("JoinServiceCon.do")) {
command = new JoinServiceCon(); // 업캐스팅
}else if(resultURI.equals("logoutServiceCon.do")) {
command = new LogoutServiceCon(); // 업캐스팅
}else if(resultURI.equals("DeleteServiceCon.do")) {
command = new DeleteServiceCon(); // 업캐스팅
}else if(resultURI.equals("UpdateServiceCon.do")) {
command = new UpdateServiceCon(); // 업캐스팅}
String moveURL = command.execute(request, response);
response.sendRedirect(moveURL);}}
- 어노테이션 부분의 "*.do"는 .do로 끝나는 경로는 모두 가져온다는 의미.
- "URI"와 "path"는 각각 (주석참고) 요청이 들어오는 경로 , 실행된 파일의 플젝폴더 이름 이다.
- 생성한 인터페이스 "Command"를 객체로 갖는 "command"라는 변수 생성, 각 요청에 따라 다르게 파일등을 변수에 담아 실행한다. -> 해당 과정에서 업캐스팅 발생( ex- Login 객체에서 command로) - 타입 통일 /다형성
- 각 경우에 따른 파일들은( ~Con ) 리턴 타입이 String으로 이동할 경로를 반환 한다.
- 반환된 경로를 sendRedirect( ) 를 사용해 전송한다.
% Controller 별 기능
public class LoginServiceCon implements Command{
@Override
public String execute(HttpServletRequest request, HttpServletResponse response) {
String moveURL = null;
String email = request.getParameter("email");
String pw = request.getParameter("pw");
MemberDAO dao = new MemberDAO();
MemberVO vo = new MemberDAO().login(email, pw);
if(vo!=null) {
HttpSession session = request.getSession();
session.setAttribute("member", vo);
}else {
System.out.println("로그인 실패");
}
moveURL = "main.jsp";
return moveURL}}
- 해당 코드는 Login 기능을 담당하는 로그인 파일로 "loginServiceCon.do"라는 경로 인식시 이동하는 파일이다.
- 위의 인터페이스 파일을 상속, 그에 따라 String을 반환하는 excute 메소드를 생성해야만 한다.
- 로그인을 위한 각 기능을 실행, 성공하면 Session값을 실행하며 성패 여부 상관 없이 메인 페이지로 이동.
% 기존의 로그인 파일과의 비교
- 빨간줄은 일치하는 부분, 파란줄은 다른 부분이다.
- 보는것과 같이, 기존의 Servlet파일로 만든것과 큰 차이는 없다.
- 차이점이 있다면, 바로 "sendRedirect"로 메인페이지 이동을 수행하였는데, 인터페이스 파일을 상속 받은 녀석은 이동할 경로의 String 값만을 반환하고 메서드를 종료한다.
- 설명이 많이 부실하지만.... 뭐 결국은 지금까지 해왔던 실습의 연장선.
- 굳이 인터페이스가 필요한 실습은 아니지만, 인터페이스가 어떤식으로 동작되는지 를
보기 위한 실습이라고 할 수 있다.
- 24일차에 인터페이스 관련 간단한 설명이 있으니 생각 안나면 보자.
- 봐도 잘모르겠다면 까먹은거 직접 해보기.
@ URL과 URI의 차이점
- 크게는 URI. 그 안에 URL과 URN이라는 녀석이 포함되어 있다.
- URI(Uniform Resource Identifier)는 단어 그대로 리소스 식별자... 즉, 브라우저의 독립적인 ID이다.
- URL(Uniform Resource Locator)는 직역으로, 자원 위치.. 해당 자원을 얻을 수 있는 위치(주소)를 말한다.
- 추가적인거지만 URN은 마지막이 이름으로, 해당 자원에 이름을 붙힌것을 말한다. (네이버의 게시판, 블로그 등..)
'국비교육기관 > 수업' 카테고리의 다른 글
57일차 JavaScript - 실습 , 변수, 연산자, 형변환 (0) | 2021.06.01 |
---|---|
56일차 머신러닝 - Adaptive Bootstrap / JSP - 시험 (0) | 2021.05.31 |
54일차 머신러닝 랜덤 포레스트 실습 / JSP 게시판페이지 (0) | 2021.05.27 |
53일차 머신러닝 - Importance, 시각화 / JSP - DAO 활용 페이지 실습 (0) | 2021.05.26 |
52일차 머신러닝 - 교차검증, GridSearchCV / JSP - 로그인페이지 (0) | 2021.05.25 |
댓글