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

64일차 머신러닝 - 이진분류, 정밀도, 재현율 / AJAX

by 밀키스 2021. 6. 10.

21.06.10

 Machine Learning 

 

@분류 평가 지표 

 

@Confusion Matrix(혼돈or오차 행렬) - 이진분류 

   => 단적인 예로 True는 암환자, False는 정상인. 이라 구분지어 보면 좀 더 이해하기 쉬울 것.

  • TP : 암이라고 예측했는데, 실제로 암. -> 예측값과 실젯값이 동일하다 -> True Positive
  • FN: 정상이라 예측, 실제로는 암. -> 예측값과 실제값이 불일치 -> False Negative
  • FP: 암이라 예측, 실제로는 정상 -> 예측값, 실제값 불일치 -> False Positive
  • TN: 예측과 실제값이 일치 -> 둘 다 정상 -> True Negative
  • 전체적으로 좀 이해가 어려운데, 그냥 간단히 내가 True라 예상했으면 Positive, False라 예상하면 Negative가 붙는다. 예측값과 실제값이 다르면 False, 같으면 True가 붙는다.

 

 


 

@분류 평가 지표 - 정확도 

정확도  => 내가 예측한게 맞은 경우를 말한다. --> 앞의 True는 예측값과 실제값이 일치하는 경우

 


 

@분류 평가 지표 - 재현율 

재현율 => 실제값이 True인것에 대한 내 예측이 맞은 경우 --> PositiveTrue, NegativeFalse라고 예측한것.

 


 

@분류 평가 지표 - 정밀도 

정밀도 => 내가 True(Positive)라고 예측해서 실제값과 일치한 경우

 


 

@분류 평가 지표 - [F1-Score] 

   => 정밀도와 재현율의 조화(산술) 평균 --> 걍 합쳐서 합친 갯수로 나눈거

 


 

@분류 평가 지표 - 재현율과 정밀도 

 

 

 

 

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

 

 Ajax 

 

@Ajax로 데이터 전송해보기 

   => 63일차 마지막에 Ajax의 구조에 대해 가볍게 보고 넘어갔는데, 금일은 이에 대한 실습 진행

   => VSCodeEclipse간의 데이터 주고 받는 실습 진행.

   => 위 사진 처럼 "datatype"을 지정해주지 않으면 자동으로 Get 방식이 된다.

 


 

%VS Code 작성 

<body>
    <button>서버 요청</button>
    <script src="js/jquery-3.6.0.js"></script>
    <script>
        $('button').on('click',function(){
            // button을 클릭했을 때 실행할 로직
            $.ajax({
                // 서버의 주소값
                url : 'http://125.136.57.29:8081/Ajax/ex01Ajax?',
                // data : {"num1": 'Bbo2Bbo2' , "num2":'bigiditi'},
                data : 'num1=Bbo2Bbo2&num2=bigiditi',
                success : function(res){
// function() -> 매개변수를 지정하면 서버에서 보내준 데이터를 받아올 수 있음
                    alert('요청 성공!');
                    alert(res)
                },error : function(){
                    alert('요청 실패쓰');
                }
            })
        })
    </script>
</body>
  •  url : 실습 진행하는 컴퓨터의 IPv4 주소에 이클립스 프로젝트 명 뒤 파일명을 붙혀 설정.
    • 이클립스 파일의 경우 annotation이 설정되었기 때문에, 간단하게 호출 가능하다
  •  data : 이는 내가 넘겨줄 데이터. 간단하게 2개의 변수에 정의하였다.
    • 이유는 잘 모르겠는데... 띄어쓰기를 하면 null값이 나온다. 잘은.. 모르겠다.
    • 혹은, 위에 주석처리된것 처럼 Dictionary의 형태로 키와 Value값을 정해 보내줘도 됨
  •  success / error : 성공, 실패시 처리될 부분을 기입. 매개변수 지정시, 이클립스에서 보내줄 데이터를 받을 수 있다.

 


 

 

% 이클립스 코드 작성 

@WebServlet("/ex01Ajax")
public class ex01Ajax extends HttpServlet {
	private static final long serialVersionUID = 1L;

	protected void service(HttpServletRequest request,
			HttpServletResponse response) 
					throws ServletException, IOException {
		response.addHeader("Access-Control-Allow-Origin", "*");
		System.out.println("요청이 들어옴");
		
		String s1 = request.getParameter("num1");
		String s2 = request.getParameter("num2");
		
		// 요청한 곳에 응답 데이터를 보내주고 싶다면
		// PrintWriter 객체를 사용하면 된다.
		PrintWriter out = response.getWriter();
		out.print("h1");	// print한 데이터를 요청한 페이지에 돌려준다!!!
		out.print("h2");	// print한 데이터를 요청한 페이지에 돌려준다!!!
		out.print("h3");	// print한 데이터를 요청한 페이지에 돌려준다!!!
		out.print("h4");	// print한 데이터를 요청한 페이지에 돌려준다!!!}}
  • "ex01Ajax"라는 이름의 Servlet 파일 생성
  • 이클립스에서 "Tomcat"을 통해 Server를 구현, "Client"에 해당하는 VSCode로 부터 요청을 받는다.
  • 이에 대한 응답으로 "Access-Control-Allow-Origin"라는걸 주는데, 이는 "모든(*) 도메인을 허용"한다는 뜻.
  • 그리고 "응답"을 통해 데이터를 전송, 이는 VSCode에서 매개변수로 값을 받아 알림창으로 띄웠으니 확인 가능하다.

 

 


 

@JSON( JavaScript Object Notation ) 

   => 속성-값 쌍으로 이루어진 데이터를 전달하기 위한 개방형 표준 포맷.

   => Ajax전송 가능한 데이터 형식인 3가지(CSV / XML / JSON) 중 한 가지.

 

 

  • 사진과 같이 "Key"값과 "Value"값으로 이뤄진 파이썬에서의 Dictionary 형태이다.

 


 

% 실습 - HTML 파일 생성 

<body>
  <button>클릭요청</button>
  <table border="1px">
    <tr>
      <th>이름</th>
      <th>나이</th>
      <th>성별</th>
    </tr>
  </table>
  <script src="js/jquery-3.6.0.js"></script>
  <script>
    // ex02Ajax 서버로 들어갈 수 있는지 확인
    //button을 클릭했을 때 콘솔창에 요청이 들어옴이 출력되도록 만들기
    $('button').on('click',function(){
    $.ajax({
      // 같은 프로젝트 폴더 내부에 있기 때문에 servlet이 가지고 있는 mapping 값 사용 가능!
      // POST방식으로 json구조를 전송할 때 에러가 뜨는 순간이 있을거다!
      // JSON.tostringify(내가 전송할 json 구조 데이터)
      url : 'ex02Ajax',
      dataType : "json",
      contentType: 'application/x-www-form-urlencoded; charset=euc-kr',
      success : function(res){
        alert("asd");
        // res -> JSON Array 형태로 구성이 되어있다.
        // for-each문 역할을 하는 함수
        $('table tr+tr').empty(); // 내가 선택한 태그 비우는 기능
        $.each(res, function(index, p) {
          // res 배열 안에있는 데이터가 하나씩 뽑히면서 p에 담긴다.
          $('table').append(
            '<tr><td>'+ p.name +'</td><td>'+
            p.age+'</td><td>'+p.gender+'</td></tr>');
          // append -> 선택한 태그 내부에 데이터를 추가하는 방법
          })},
      error : function() {
      	alert("안된디");}})})
  </script>
</body>

ㅁㄴㅇ

ㅁㄴㅇ

ㅁㄴㅇ

ㅁㄴㅇ

asd

@JSON - 실습

ㅁㄴㅇ

%제이쿼리에서의 반복문 each

 

asd

asd

asd

asd

반응형

댓글