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

63일차 머신러닝 - Logistic Regression / jQuery[JS] - 이벤트, AJax, 동기/비동기식 통신

by 밀키스 2021. 6. 9.

21.06.09

 Machine Learning 

 

@선형 모델을 이용한 분류 알고리즘( Logistic Regression ) 

  1. 학습 데이터의 특성과 분포를 나타내는 최적의 직선을 찾고( Linear Regression )
  2. 그 직선을 기준으로 데이터를 분류( Classification )
  3. Regression(회귀)가 붙지만 분류 모델
  4. Logistic Regression은 Classification 알고리즘 중에서도 정확도가 높은 알고리즘, 딥러닝에서 기본 구성 요소로서 사용되고 있음

 

 

 


 

% 선형 모델로 해결할 수 없는 경우!! 

   => 단적인 예로 흡연량과 폐암 발병의 관계가 있다.

 

 

 

   => 그냥 간단히 생각해도, 계속 늘어나는 흡연량과 폐암 발병률에 대해서 선형적인 선으로 나누기는 힘들것.

 


 

% Sigmoid - 선형 모델로 해결되지 않을 때

   => 위와 같은 과정으로 "선형 회귀로 풀리지 않는 분류 문제" 에 있어 사용할 수 있는 방법이 "Sigmoid"이다.

 

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

 jQuery 

 

@jQuery - 태그 추가 

  •  before / after : 선택한 태그 기준, 밖에서 앞/뒤에 지정한 데이터를 추가한다.
  •  prepend / append : 선택한 태그 기준, 안에서 앞/뒤에 지정한 데이터를 추가한다.
  •  html : 선택한 태그 안의 값을 지정한 data로 덮어 씌운다.

 


% after와 append 비교 

<body>
    <div class="temp">jQuery 사용해보기</div>
    <div class="temp">jQuery 사용해보기</div>
    <div class="temp">jQuery 사용해보기</div>
    <div class="temp">jQuery 사용해보기</div>
    <script src="js/jquery-3.6.0.js"></script>
    <script>
        $('div').css({
            'color':'red',
            'text-align' : 'center'
        })
        $('div').append('<h1>h1 태그를 body 태그에 추가하니 덮어 씌워지네요</h1>')
        $('div').after('<h1>h1 태그를 body 태그에 추가하니 덮어 씌워지네요</h1>')
    </script>
</body>

   => 위와 같이 코드를 작성했을 때, append/after의 차이 비교

 


 

좌: after / 우: append

  •  after 의 경우 지정한 태그 기준 밖에서 뒤에 작성되기 때문에, CSS가 적용되지 않는다.
  •  append 는 지정한 태그 기준 안에서 뒤에 작성되기 때문에, CSS가 적용된 모습이다.

 

 


@jQuery - animate 

<body>
    <div>jQuery를 더 재밌게 다뤄보자!</div>
    <script src="js/jquery-3.6.0.js"></script>
    <script src="js/jquery-ui.js"></script>
    <script>
        $('div').css('font-size','50px'
        ).css('border','1px dotted red'
        ).css('text-align', 'center'
        ).animate(   // ----------------->> animate 효과주기
        {'border-width':'40px', 'color':'blue'},1000  // ------->> 부여할 변화, 시간
        )
    </script>
</body>
  • 작성하는 법은 기존의 CSS를 주는 방식과 같다.
  • 기존에 설정한 CSS에서 내가 어떻게 변화시킬지를 작성, 몇초에 걸쳐 변화할지를 지정한다. (1000)
  • 시간은 기본적으로 1/1000초가 기준이다.  ==> 1ms

 


% 구현 결과 

  • 1000ms(1초) 동안 좌측에서 우측으로 변화한다.
  • 변화를 좀 더 확연히 보기위해 border를 40px로 변경, 글자색 또한 바꿔 보았다.

 

 


 

@jQuery 실습 - 캐릭터 움직이기 

animate를 통한 실습 진행

  1. LEFT or RIGHT를 누르면 캐릭터가 50px씩 움직인다.
  2. ATTACK을 누르면 공격을 하는데 해당 부분은 animate로 주어 움직이는것 처럼 해봤다.
  3. 공격 이미지가 출력되어 있을 때, LEFT or RIGHT를 누르면 이미지가 삭제되고, 움직이는 모션만 수행
  4. CSS를 외부 파일로 불러와서 버튼 및 캐릭터 위치 조정, 배경을 바꾸었다.

 


 

% HTML 작성 

  • 1개의 <div>태그에 3개의 Button, image(캐릭터)를 생성하였다.
  • button 및 image에 각각 Class 및 id 부여.
  • 제이쿼리 선언.

 


 

% 좌우 버튼 통한 이동 

  • btn 클래스 중에서 left and right인 태그에 클릭했을 경우의 이벤트 on 을 통해 걸어준다.
  •  num 이라는 변수를 최초에 0으로 초기화, 해당 값을 통해 캐릭터의 위치를 조정한다.
  • 캐릭터의 이동방향이 왼쪽이면 빼주고, 오른쪽은 더해준다
    • 캐릭터가 오른쪽에서부터 시작한다. 이는 CSS에서 right에 0px를 줬기 때문.
  • 두개의 function에서 각각의 조건문은 공격 이미지를 생성했을 경우이다. 해당 부분은 아래에서 설명.

 


 

% 공격 이미지 생성 및 삭제 - detach( ) 

  • 공격 이미지를 호출했을 때, 해당 값은"jQuery.fn.init" 라는 형태의 배열 형태로 리턴된다. 때문에 길이가 0이라는건 해당 값이 없다는 뜻 -> 공격한적이 없다.
    •  jQuery.fn.init  : 아직 제데로 이해하지 못했으나 가볍게 얘기하면 jQuery.function이란 객체에 내장된 "init"이란 함수에 의해 Array 형태로 리턴 된 값이다.
  • <div> 태그 안에 ID가 "dao"<img> 태그를 생성, 위치는 캐릭터의 최초 위치에 계속 누적된 num 값을 더한다.
    • <div> 태그를 호출할 때, 최초에는 "querySelector"를 사용했다. 근데, 에러도 안뜨고 걍 동작이 멈춘다.
    • 이에 대한 추리는 jQuery로 작성된 function 안에 JS만의 표현식을 사용했기 때문... 일까 라 생각한다.
    • 정확한건 아니다 추후 확인하자.
  • "detach"지정한 값을 삭제하는 구문으로, 그와 연관된 이벤트 등은 삭제하지 않는다.
    • 특정 변수에 담아서 다시 복귀 시킬 수도 있다.
    • 이와 비슷한 기능을 하는 "remove"의 경우는 연관된 Event를 모두 제거하며, 복귀도 안된다.

 


 

% Event - Keydown 

  • <body> 태그에서 키를 누른 경우 Event가 발생하도록 했다.
  • "event"라는 변수는 "keyCode"라는 구문을 통해 어떤 키가 눌렸는지 integer 값으로 받을 수 있다.
  • 37과 39는 각각 왼쪽, 오른쪽 방향키다.

 


 

@ jQuery 이벤트 종류 

 


@jQuery - AJAX 

AJX: Asynchronous Javascript and XML( 비동기 통신 )

  • 필요한 데이터만을 웹 서버에 요청해서 받은 후 클라이언트에서 데이터에 대한 처리를 진행하는 비동기적인 웹 어플리케이션을 제작하기 위한 웹 개발 기법

 

% Ajax의 필요성 

   => 서버로부터 응답받는 페이지의 중복되는 코드 발생 --> 네트워크 대역폭 자원 낭비

 


   => 위의 2가지의 경우, 지정된 작업을 수행하고 다시 또 같은 페이지를 불러온다. -> 페이지가 "갱신" 된다.

   => 이런 이유로 해당 페이지의 자원이 낭비 된다.

 


 

@ 비동기 vs 동기 식 통신 

  • "동기식 통신"은 내가 작성한 코드 순서대로 하나씩 작업을 수행하는 것
    • 응답이 들어와야 다음 작업을 수행할 수 있다.
  • "비동기식 통신"은 내가 작성한 코드의 순서와 별개로 하나의 작업을 수행 중 다른 작업도 함께 수행
    • 응답이 들어오지 않아도 다른 작업 수행 가능 -> 멀티태스킹이 가능하다.

 


% 동기식 통신 - ex) ID 중복 확인 

  • "Blocking" -> Client가 Server로 부터 어떤 정보 값을 받아오는 동안 해당 작업이 중단
  • 중단된 뒤에 같은 페이지를 다시 불러오면서 페이지 갱신 발생( 화면이 새로 켜지는 것 ) -> HTML Reloading
  • Check 과정뿐만 아니라 Insert 과정 또한 같은 오점이 존재
  • 코드 구성이 단순하고, 순차적으로 실행하지만 멀티 태스킹 X.

 


 

% 비동기식 통신 - ex) ID 중복 확인 

  • 동기식과 다르게 작업이 수행되는 도중 Check와 Insert의 과정 모두 수행한다. -> 멀티 태스킹
  • 페이지 갱신이 발생하지 않는다. -> HTML Reloading X
  • 멀티태스킹이 가능하기 때문에 성능이 좋아질 수 있으나, 일정 시간 동안 요청량이 많아져서 부하가 발생할 수 있다.

 


 

@ $.ajax 기본구조 

  •  url : 내가 호출할 url의 주소
  •  type : get 방식이냐 post 방식이냐를 기입한다. -> 전송방식
  •  data : 기존의 JSP나 Servlet을 통해 특정 값을 넘겨줬던것 처럼 내가 넘길 Data
  •  success : Ajax 호출이 성공했을 때 결과를 호출하거나, 특정 function을 선언/호출해도 된다.
  •  error : Ajax 호출이 실패한 경우, 결과 or 특정 function이 동작하게 한다.

 


!! 추가적으로

 complete : Ajax 호출의 성공 유무와 관계 없이 수행된다.

 async : Ajax의 통신 방식 결정. false로 주면 동기식 통신으로 전환된다. -> Default는 true.

반응형

댓글