클래스와 객체 - 객체: 데이터와 이를 처리하기 위한 메서드의 묶음 - 클래스: 객체를 만드는 형틀 혹은 포멧 클래스로부터 만들어지는 객체를 그 클래스의 인스턴스(instance)라 한다. 클래스 정의하기 class라는 키워드로 시작하고 __init__( )라는 생성자 메서드를 가진다. 객체 생성 클래스 이름으로 호출하면 객체가 생성된다. 프라이빗 멤버와 퍼블릭 멤버 클래스 안에서는 크게 두 가지 멤버가 존재한다. 하나는 클래스 안에서만 접근 가능한 프라이빗 멤버, 다른 하나는 클래스 안과 밖에서 모두 접근 가능한 퍼블릭 멤버 멤버 앞에 __키워드를 붙이면 프라이빗 멤버가 된다. 클래스 멤버 클래스의 메서드 밖에서 선언한 변수로 해당 클래스에서 관리하는 멤버이다. 클래스 이름으로 접근해야 하며 객체로 접..
전체 글
시그모이드 역할 z = b + ∑ w_i x_i로 표현할 수 있다. z는 활성화 함수를 통과하여 a가 된다. 이때 시그모이드 함수는 z를 0~1 사이의 확률 값으로 변환시켜준다. 시그모이드 함수는 오즈비 → 로짓 함수 → 시그모이드 함수를 거쳐 탄생한다. 오즈비 오즈 비는 성공확률과 실패 확률의 비율을 나타내는 통계이다. 오즈 비를 그래프로 그리면 다음과 같다. 성공 확률이 0부터 1까지 증가할 때 오즈 비의 값은 처음에는 천천히 증가하지만 1에 가까워지면 급격히 증가한다. 로짓 함수 오즈 비에 로그 함수를 취하여 만든 함수를 로짓 함수라고 한다. 로짓 함수는 p가 0.5일 때 0 이되고 p가 0과 1일 때 각각 무한대로 음수와 양수가 된다. 이제부터 logit(p)를 z라 하자 로지스틱 함수 위 식을 ..
로지스틱 회귀를 제대로 이해하기 위해서는 먼저 알아볼 개념이 몇 가지 있다. 그중 하나는 퍼셉트론이다. 퍼셉트론이란? 1957년 코넬 항공 연구소의 프랑크 로젠블라트는 이진 분류 문제에서 최적의 가중치를 학습하는 알고리즘을 발표했다 이것이 퍼셉트론이다. 선형 회귀와 유사하게 직선 방정식을 사용한다. 하지만 퍼셉트론은 마지막 단 게에서 샘플을 이진 분류하기 위하여 계단 함수를 사용한다. 계단 함수를 통과한 값을 다시 가중치와 절편을 업데이트하는 데 사용한다. 위 구조를 방정식으로 표현하면 w1x1 + w2x2 + b = z이다. z가 0보다 크거나 같으면 1로, 0보다 작으면 -1로 분류한다. 이때 1로 분류되는 걸 양성 클래스, -1을 음성 클래스라고 한다. 아달린 퍼셉트론에서 조금 더 개선한 적응형 선..
함수 함수를 이용하면 프로그래밍을 더욱 간단하고 파워풀하게 만들 수 있다. 파이썬에서 함수는 매개변수, 리턴에서 다른 언어들과 달리 유용한 형태가 많다. 함수 기본 기본적인 함수라 설명은 생략하겠다. 기본값 매개변수 사용(default argument) 다른 언어와 달리 함수 자체에 기본적인 매개변수의 값을 설정할 수 있다. 따라서, 해당 매개변수가 전달되지 않았다면 기본값으로 함수를 실행한다. 또한, 전달할 때 변수 이름 = 값과 같은 형태로 매개변수를 전달할 수 있다. 굳이 순서를 맞춰서 전달할 필요가 없어지기 때문에 매우 편리하고 정확해진다. 가변 매개변수 (arbitrary argument) 파이썬은 매개변수의 개수도 가변적으로 사용할 수 있다. 매개변수 마지막에 전달되는 매개변수의 길이를 한정하..
조건문 조건문은 프로그래밍에 있어서 분기를 결정해야 하는 중요한 역할을 한다. 말 그대로 조건을 체크한 뒤, 어느 코드를 실행할지 결정하는 문법이다. 파이썬은 들여쓰기로 코드 블록을 구분하기 때문에 유의해서 코드를 작성해야 한다. 기본적인 if문 구조이다. if 뒤에 조건을 적고 ':' 로 코드 블록의 시작을 알린다. else문도 마찬가지 이다. if~else문의 간단한 예시이다. print('수를 입력하세요 : ') a = int(input()) if a == 0 : print('0은 나눗셈에 이용할 수 없습니다.') else : print('3 /', a, '=', 3/a) 조건에는 ==같은 조건도 가능하지만, 부등호를 사용하는 범위를 제한하는 조건 또한 사용 가능하다. 그 외에도 데이터 타입이나 여..
뉴런 만들기 딥러닝은 뇌에 있는 뉴런을 따라한 것이다. 앞서 공부한 내용으로 뉴런을 만들어 보면 더욱 이해가 빠를 것이다. 생성자 우선, 생성자에서 필요한 변수를 선언하고 초기화한다. def __init__(self): self.w = 1.0 self.b = 1.0 여기서 1.0은 임의로 선정한 수이다. 다른 수여도 아무런 문제가 없다. 정방향 계산 정방향 계산은 예측값을 계산하는 과정이라 생각해도 된다. 즉, 기울기와 절편을 예측하는 것이다. def forpass(self, x): y_hat = x * self.w + slef.b#직선 방정식 계산 return y_hat y = wx + b라는 식을 이용하여 y_hat을 구하는 과정이라 생각하면 된다. 그럼 이제 w와 b를 적절히 조정하여 올바른 모델을..
손실 함수란? 손실 함수는 쉽게 말해 예상한 값과 실제 타깃 값의 차이를 함수로 정의한 것을 말한다. 그 중 하나인 제곱 오차로 이해해보자. 제곱 오차 제곱 오차는 타깃값과 예측값을 뺀 다음 제곱한 것이다. SE = (y - k)^2 그럼 이 함수의 기울기를 구하려면 제곱 오차를 가중치나 절편에 대해 미분하면 된다. 기울기를 구하는 이유는 기울기를 알면 최솟값을 구할 수 있기 때문이다. SE를 w에 대해 편미분을 진행한다면, -(y - k)x라는 값을 구할 수 있다. 손실 함수를 최소화 시키기 위해서는 저 값을 빼면 된다. w = w + (y - k)x 이 형태는 저번 포스트에 작성한 (w + w_rate * err)와 같은 형태이다. 절편도 동일하게 시행한다. 그러면 -(y - k)1이란 값을 구할 수..