본문 바로가기

Python

퍼셉트론에서 신경망으로(3) 다차원 배열을 이용하여 직접 신경망을 구현해본다. import numpy as np import matplotlib.pylab as plt X = np.array([1,2]) print(X, X.shape) W = np.array([[1,3,5],[2,4,6]]) print(W, W.shape) Y = np.dot(X,W) print(Y) $$\mathbf{X} = \left[\begin{array} {rrr} 1 & 2 \end{array}\right]$$ $$\mathbf{W} = \left[\begin{array} {rrr} 1 & 3 & 5 \\ 2 & 4 & 6 \end{array}\right] $$ 행렬 곱은 그냥 하면 된다. numpy가 다 해줌. 이걸로 3층 신경망을 구현해본다. 입력층은 ..
퍼셉트론에서 신경망으로(2) 활성화 함수는 임계값을 경계로 출력이 바뀐다. 이러한 함수를 계단 함수(step function)이라고 한다. 계단 함수 이외의 다른 함수를 알아본다. - 시그모이드 함수 $$h(x) = \frac{1}{1+exp(-x)}$$ 여기서 exp는 우리가 흔히 알고 있는 자연상수 e이다. - 계단 함수를 그려보자. def step_function(x): if x > 0: return 1 else: return 0 아주 간편하게 0 초과의 값이 나오면 1을 반환하고 0 이하의 값이 나오면 0을 주는 함수이다. 하지만 우리가 사용하는 numpy를 input으로 넣을 수 없으므로 조금 수정한다. import numpy as np def step_function(x): y = x > 0 return y.astype(..
퍼셉트론에서 신경망으로(1) 퍼셉트론은 구현하기 간편하고 좋아보이지만 한 가지 단점을 가지고 있다. 가중치를 여태 직접 정해준 것이다. 결과를 보면서 내가 적절한 가중치 값을 정해주었는데 이 것은 비효율적이다. 문제를 해결하기 위해 신경망을 사용할 수 있다. 신경망은 가중치 매개변수의 적절한 값을 데이터로부터 자동으로 학습하는 능력을 가지고 있다. 다시 퍼셉트론을 복습하고 지나가자면 편향을 나타내는 매개변수를 포함하여 표현할 수 있다. 실제 입력은 x1, x2 이지만 1*b (가중치) 입력까지 포함해주어 출력을 결정한다. 편향은 항상 존재하기 때문에 1로 표현해주었다. 여기서 퍼셉트론또한 하나의 함수로 표현할 수 있다. $$y = h(b + W_1*X_1 + W_2*X_2)$$ $$h(x) = 0 (x0)$$ 이렇게 입력 신호의 총..
퍼셉트론(Perceptron) 알고리즘 - 다수의 신호를 입력으로 받아 하나의 신호를 출력 - '흐른다/흐르지않는다'(1/0)으로 구분 - 입력 신호가 뉴런에 보내질 때에 고유한 가중치가 곱해짐 - 뉴런에서 보내온 신호의 총합이 정해진 한계를 넘어설 때만 1을 출력 - 한계를 임계값이라고 하며 θ 로 표현함 - 복수의 입력 신호 각각에 고유한 가중치를 부여. 가중치는 신호가 결과에 주는 영향력을 조절하는 요소로 작용 - 가중치가 클수록 신호가 더 중요하다! - Python으로 간단하게 구현해보기 def AND(x1, x2): w1, w2, theta = 0.5, 0.5, 0.7 tmp = x1*w1 + x2*w2 if tmp theta: return '1' def OR(x1, x2): w1, w2, theta = 0.5, 0.5, 0.4 tm..
CentOS7에서 Oracle 연동 오류 cx_Oracle.DatabaseError: DPI-1047: Cannot locate a 64-bit Oracle Client library: "libclntsh.so: cannot open shared object file: No such file or directory". See https://oracle.github.io/odpi/doc/installation.html#linux for help 1. Oracle Client를 설치한다. [이 곳]에서 받을 수 있다. 2. unzip 명령어로 압축을 해제한다. 3. libaio를 다운로드 받는다. 4. 적당한 위치로 옮긴다. 5. PATH에 등록해준다. 6. DB 연결정보를 담고 있는 tnsname.ora 파일을 만들어주고 PATH에 등록한다. #..
CentOS 환경에 Python3 설치 후 나타나는 에러 수정 Yum install 시 다음과 같은 에러가 나온다 except KeyboardInterrupt, e: except OSError, e: /usr/bin/python에 접근하면 2.X 버전의 파이썬이 깔려있다. /usr/bin/yum /usr/libexec/urlgrabber-ext-down 각각 file에 접근한 후 첫째줄을 수정해준다. #! /usr/bin/python2.X
네이버 블로그를 크롤링하여 단어 빈도 분석하기 처음 이 생각을 한 계기는 깔리고 깔린 바이럴 마케팅을 피해 검색해보고 싶어서였다. 우리 동네 맛집이라고 검색하면 내가 뻔히 가본 곳인데도 (맛집이 아닌데도) 상위 목록에 맛집이라고 도배가 되어 있는 것을 흔하게 볼 수 있다. 그런 결과가 검색 품질을 떨어뜨리고 정보에 선택에 있어서 나쁜 영향을 미친다는 것을 어지간한 사람이면 다 알것이다. 그래서 단어 빈도를 알아내, 너무 많은 단어는 제외하여 서치할 수 있도록 도움을 주는 방식을 생각해보았다. 1. 블로그 크롤링하기 블로그 크롤링은 어렵지 않다. 물론 검색 단어의 블로그 검색 결과(포스팅) 전체를 크롤링하는 것은 쉬운 일이 아니다. 하지만 나는 검색단어 주변에 있는 글자만 검색하면 됐고 이는 미리보기 식으로 제공하는 내용 3줄로도 충분하다. 이유는 블..