개발 335

하이퍼파라미터, GridSearchCV

GridSearchCV 에 대해서 알아보겠습니다. GridSearchCV는 scikit-learn의 하이퍼파라미터 튜닝하는 도구입니다. 일단 하이퍼파라미터라는 것을 알고 가겠습니다. 파라미터는 저희 매개변수라는 값으로 많이 들어봤는데 하리퍼 파라미터(Hyper parameter)라는 애는 무엇일까요? 하이퍼파라미터라는 애는, 머신러닝을 할 때 많이 듣게 되는데, 머신러닝을 배울 때 데이터를 주면서 모델을 학습시켜야 합니다. 하이퍼파라미터 머신러닝을 하는 모델을 만들 때, 사용자가 직접 세팅해주는 값을 말합니다. 자, 그렇다면 다시 돌아와서 GridSearchCV라는 것은 또 무엇이냐? 교차검증에서 이것저것 학습 데이터들을 바꿔가면서 학습과 테스트를 진행했는데, GridSearchCV이름처럼 격자(Grid..

교차검증

교차검증(KFold) 이라는 것을 알아보겠습니다. 교차검증이라는 말 처럼 여러번 비교하면서 검증해보는 것입니다. 예를 들어 볼까요? 150개의 데이터를 기존의 방식대로 120 : 30개로 나눕니다. 120개로 학습을 진행하고 30개로 테스트를 진행합니다. 일반적으로 고르게 분포된 데이터에서 이렇게 학습을 해도 전혀 문제가 생기지 않습니다. 다만 조금 다른 경우에, 120개 중 error데이터가 10개가 들어가 있다면 어떻게 될까요? 120개 중 error데이터가 10개 들어간 모델로 컴퓨터가 학습을 하기 시작하면 30개의 테스트셋을 테스트 할 때 정확도가 낮아질 수 밖에 없습니다. 때문에, 교차검증을 통해 여러번 비교하는 과정을 가집니다. 아래의 그림처럼 30개씩 나누는 과정을 거쳐서, 여러번 학습용 데..

학습데이터 테스트 데이터

머신러닝 알고리즘을 구현할 때, 학습에 필요한 데이터들이 있습니다. 머신러닝에서는 컴퓨터에게 무엇인가를 가르쳐줘야하는데, 가르쳐주는 데이터가 필요합니다. 예를 들면, 컴퓨터에게 이렇게 생긴 애가 고양이다 라고 알려주려면 고양이 사진을 엄청나게 보여주고 이 것이 고양이다 라고 알려줘야합니다. 이 것을 학습용 데이터라고 하는데, 컴퓨터를 학습시킬 데이터를 주고, 일부는 테스트 데이터로 분리해서 학습용 데이터로 학습한 컴퓨터가 테스트 데이터를 보고 제대로 고양이로 인식할 수 있는지를 테스트해봐야 합니다. X_train, X_test, y_train, y_test = train_test_split(data, target, test_size,reandom_state) X_train.y_train 은 학습용 데이터..

머신러닝이란

많이 듣는 인공지능 딥러닝 머신러닝에 대해서 들어보는데 과연 정확히 머신러닝과 딥러닝이 무엇이 다른가에 대해서 알아보겠습니다. 인공지능이라는 커다란 분류 안에, 머신러닝 딥러닝이 들어있는데 인공지능에 대해서 부터 알아보겠습니다. 인공지능 : 인공지능이라는 것은 매우 범위가 넓습니다. 그냥 기계가 사람처럼, 지능을 가진 것과 같이 사고하여 판단하는 모든 것을 인공지능이라고 통틀어서 이야기합니다. 머신러닝 : 데이터를 학습하여, 새로운 데이터가 들어왔을 때 결과값을 판단하는 방법입니다, 예를 들면 가로가 10~12센치고 세로 15~20센치로 있는 직사각형 모양의 "박스"사진을 굉장히 많이 보여주고, 이게 박스다 라고 컴퓨터에게 알려주면, 컴퓨터는 가로 10~12센치 세로 15~20센치의 네모난 모양이 들어오..

넘파이 Numpy

python을 이용해서 데이터 분석을 할 때 주로 사용되는 라이브러리인 Numpy에 대해서 알아보겠습니다. 행렬 연산을 할 때 주로 사용하는 라이브러리이고, 행렬 연산을 굉장히 쉽게 할 수 있습니다. 대량의 데이터를 가져와서 array형태로 가공할 때 주로 사용됩니다. 아래와 같이 주피터 노트북에서 몇가지 넘파이 배열을 이용하는 방법을 실습해봤습니다. -- 참조 https://gomguard.tistory.com/147

주피터 노트북

주피터 노트북이란 아래 보이는 웹 브라우저에서 코드를 칠 수 있는 도구입니다. 왜 다른 코드 에디터(pycharm)에서 코딩을 하지 않고, 주피터 노트북에서 할까요? 왜냐하면 주피터 노트북에서는 line by line 형태로 코드를 볼 수 있습니다. 예를 들면, 파이참에서는 코드 100줄을 코딩 했으면 -- 코드 10줄 print("point") 코드 50줄 print("point2") 코드 40줄 print("point3) -- 와 같은 형태로, 디버깅을 위한 포인트들을 print문으로 해줘야 했다면, 주피터 노트북에서는 위의 이미지처럼 내가 원하는 라인 만큼의 결과를 보면서 바로바로 코딩할 수 있습니다. 아나콘다 - https://www.anaconda.com/distribution/ 를 다운 받으면..

Python Class, Object, Instants, Method

자주 보지만 애매한 개념인 class, object, instants, object에 대해서 알아보겠습니다. 흔히들 비유하는 붕어빵 기계에 대해서 예를 들어보겠습니다. 일단을 붕어빵을 만든다고 가정합니다. 그러면 붕어빵 틀에 넣고 팥 붓고 뒤집고 이런 저런 기능을 해야 합니다. 붕어빵 틀이 Class라고 생각했을 때 뒤집기, 팥붓기 등등이 method라고 생각하시면 됩니다. 그러면 클래스에서 봣던 self라는 애와, __init__은 무엇인가? self라는 애는, 자기 자신입니다 말 그대로(물을 셀프로 드세요의 셀프) self.변수 라고 해서, class 안의 변수에 접근합니다. __init__ 이라는 애는 클래스가 생설 될 때 변수를 초기화하는 애라고 생각하시면 됩니다. 인스턴트는 a = Class 붕..

개발/잡다개발 2020.01.21

GET vs POST

흔히들 쓰는 GET과 POST에 대해 차이를 한마디로 설명하는 글이 없어서 정리해봅니다. GET은 "주세요"라고 요청하는 것 POST는 "가지세요"라고 던지는 것 이 정도로만 생각하면 될 것 같습니다. GET으로 요청하면 아래와 같이 url에 요청하는 값이 나타나면서 정보를 받아옵니다. 그렇다면, 가지세요 라는 POST를 어디서 쓸까요? 아이디와 비밀번호를 서버에 던져주고, 로그인하거나 회원가입할 때 POST를 주로 사용합니다. 아이디와 비밀번호로 로그인할 때 url에 비밀번호가 노출되면 큰일나겠죠? 그래서 POST형태로 url에 아이디와 비밀번호가 노출되지 않은 타입 POST로 요청을 합니다. 정말정말 간단한 GET POST에 대한 설명이었습니다.

개발/잡다개발 2020.01.10

FireWall

Firewall : 방화벽 1세대 방화벽 - 패킷 필터링 IP 헤더와 TCP헤더를 체크하여 필터링하는 방식이다. 장점 : 다른 방식보다 빠르고, 하드웨어에 의존적이지 않고, 기존 프로그램과 연동이 쉽다 단점 : 헤더 패킷 조작이 가능하고, 2,3세대 방화벽에 비해 사용자 인증 기능이 약하다. 2세대 방화벽 : - TCP 헤더에서 SYN값을 확인 후 처리 header안의 data까지 확인하여 처리.세션처리 SPI(Statefull packet inspection) 장점 : Session 정보 추적이 가능하다. 프록시 서버를 통해 연결되기 떄문에 내부 네트워크에 대한 정보를 숨길 수 있다. 단점 : 응용 계층에서 동작해서 네트워크에 부하가 갈 수 있고, 미리 정의된 애플리케이션에서만 수용 가능하고, 새로운 ..