2장. 간단한 분류 알고리즘 훈련 길벗출판사의 머신러닝 교과서 실습입니다 수학적 배경 인공뉴런 : 두개의 클래스가 있는 이진분류 작업으로 볼 수 있다. 여기서 두개의 클래스를 -1, 1이라고 한다. 입력값 x와 벡터 w의 선형 조합으로 결정함수 phi(z)를 나타낸다. 선형 조합이란 구성하는 요소끼리 계수를 곱해서 더해서 나올수 있는 조합니다. 다르게 표 현하면 span이라고 볼수 있을것 같다. 최종입력 z는 x, z의 선형조합니다. $$ z = w_1 x_1 + ... + x_m w_m $$ 선형 조합을 각 집합 X, W의 행렬곱으로 표현할수 있다. $ W = [ w_0 w_1 w_2 .. . w_m ] $는 가중치입니다. x가 주어졌을때, 그 결과를 예측하기 위해서 단순히 x에다가 어떤 수를 곱한다고..
1일차 - 7/11 하루에 2시간 이상(3시간 권장) 공부하기로함. 1장은 개념과 용어이고 2장부터 실습을 포함한다. 파이썬 관련 공부도 별도로 진행되어야함. 1. 실습환경 설치 아나콘다 대신, virtualenv로 가상환경을 만들고 필요한 라이브러리를 pip로 모두 설치했다. 이대로 문제없이 실습이 가능할지는 모르겠지만, 문제가 생기면 해결하는 과정에서 배우는것이 또 있을것같다. 2. 실습 코드 다운로드 실습 코드와 노트가 제공되어서 다운받았다. 3. 주피터 노트북 사용법 확인 교재에 주피터노트북이 제공되는데, 복잡한 것은 없어보이만 주피터노트 사용법에서 막히는 일이 발생하는것보다는 막힘 없이 공부하고, 학습자료를 잘 활용할 수 있는 점에서 대략적인 사용법을 미리 알고 시작하는게 효율적일것 같다. 설치..
풍차식 공부하기 무슨 공부든 아래처럼 단계를 따른다고 해보자. 시작 - 용어와 개념 파악, 예제 실습 중반 - 더 어려운 것까지도 공부. 잘 안되는것들 해결 끝 - ?? 근데 .. 공부하다가 보면 시작에서는 막 열심히하고 용두사미가 되는경우가 많은데 게다가 시작할때, 너무 숲만 보고 구체적인 공부를 하지 않다가 보면 진입장벽이 더 높아질 뿐이다. 그래서 나무를 보는 단계로 들어서야하는데, 그 단계에서의 지루함을 버티지 못하고 결국 벗어나는것을 반복하고... 겉만 맴도는 실력에 머무르는건 아닐까 생각이들었다. 그래서 생각난게 풍차식으로 공부하는것인데. 적금을 풍차식으로 소량씩 맡긴다는 기법(?) 에서 떠오른방법이다. 좀더 쉽게 비유하면 돌림노래 처럼 공부하는것이다. 시작, 중반, 끝이라고 할만한 것들을 병..
키보드에는 작은따옴표와 비슷한 문자가 하나 더 있다. ` 바로 이 문자이다. javascript에서는 템플릿 리터럴에 활용되고, 마크다운에서 코드를 강조(code, fenced code block)하는데 쓰이기도 하는 문자이다. 이 문자를 작은따옴표로 착각해서 헤메다가 한참 후에 작은따옴표와 다른 문자라는것을 깨달았다. 백틱(backtick)과 작은 따옴표의 비교 '작은 따옴표1' ‘작은따옴표2’ `백틱(backtick)` 작은 따옴표는 열고닫는게 구분된것과 구분이 없는것이 있다. 어느것과 비교해봐도, 백틱이 차지하는 자리가 더 크다는걸 눈으로 봐도 알 수 있다. 그리고 비스듬한게 더 강조되어있는 모양이다. 또 작은 따옴표는 열고 닫는게 있지만, 백틱은 구분이 없다. 명칭 Backquote, backti..
여러가지 개발환경을 번갈아 가면서 쓰다보니 (게다가 나는 맥, 윈도우를 번갈아 가면서 쓰는 상황이다) 단축키가 손에 익지 않고 계속 헷갈리는 상황이 반복된다. 그 중에서도 잘 모르면 가장 불편한 기능이 자동정렬인것 같다. 일단 메뉴 깊숙히 숨어 있는 경우가 많고 단축키도 저마다 다르다 보니... 단축키가 생각이 안나서 자동정렬 기능을 덜 쓰게 되는 경우가 종종 있다. 그러다 보면 코드 작성속도도 느려지고, 정리가 안된 코드를 보면서 하면 에러가 날 확률도 커진다. 까먹고 다시 찾아보고...를 반복하다가 이참에 IDE별로 자동정렬 기능의 단축키를 이곳에 정리 해둔다.. Visual Studio, VS Code(윈도우) (Win) ctrl + K, F (Win) ctrl + E, F (Win) Alt+F8 ..
CSS를 최근에 바짝 공부하고 있는데.margin과 padding의 차이가 헷갈려 간단히 정리해 둔다. Margin과 Padding 두 가지의 공통점은 박스 하나의 여백 혹은 크기로 생각할 수 있다는 것이다. 그런데 이 둘의 차이는 박스에 background-color혹은 border를 넣어보면 쉽게 알수 있다. padding 은 border안쪽의 영역을 결정한다. background-color를 포함하는 영역이다. margin은 border바깥의 영역을 결정한다. background-color 바깥의 영역이다. 아래 그림을 보고 좀더 이해해보자. 메뉴를 만들고 각 박스의 padding, margin 값을 조절한다. (실제로 값을 적용한것은 아니고 이해를 하기 위해서 만들었다) (1) margin, pa..
(이글은 본인이 보기 좋으려고 쓴 글로, 내용이 추가되거나 수정될 수 있음.) virtualenv는 프로그램마다 가상환경을 만들어 한 피씨에 여러 프로그램을 관리하다보면 패키지 버전이나 종류를 업데이트하거나 바뀌는 등의 상황에서 잘되던게 잘안되거나 충돌이 생길수 있기 때문이다. 때문에 단순하게 독립적인 패키지 설치 환경을 만드는것이다. virtualenv를 사용하는 경우, 글로벌로 설치하는것은 virtualenv와 pip 두개면 충분하다. 1. 가상환경 설치(virtualenv 설치) 2. 가상환경 생성. 3. activate로 타이핑 줄이기 4. 가상환경에 패키지 설치 1. virtualenv설치 $ pip install virtualenv 2. 가상환경 생성 해당 프로젝트에서 virtualenv 실행..
디버깅을 위해서 cout을 썼다가 나중에 cout을 모두 지우거나 주석처리해야하는 불편함이 있는데 이것을 해소하는 방법. 결론 부터 말하면 가장 추천 방법은 clog를 쓰고, clog를 비활성화(?) 시키는 방법을 쓴다. 1.printf()쓰기. 형식이 바뀌어서 매우 귀찮다. 2. cout을 다른 이름으로 바꿔쓰기 다른이름으로 바꿔서 썼다가, 나중에 얘네들만 한꺼번에 검색해서 주석처리하거나 없애는 식으로 할수있다. (2-1)#define dout cout (2-2)ostream &dout = cout; 두가지 모두 cout을 다른 이름으로 바꾸어 쓸수 있게 해주는 방법이다. dout
15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. https://www.acmicpc.net/problem/15649 15649번: N과 M (1) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해야 한다. www.acmicpc.net /* 알고리즘을 한줄로 요약하면 이렇다. "1부터 N까지 고르기(이미 고른 것 제외하고)"를 길이 M이 될때까지 반복. M에 도달시 출력하고 리턴. 예를 들어 N..