본문 바로가기

반응형

Programming

(39)
[Python] 큐(Queue) 구현 1. 개발 환경 : Python 3.8.10, WSL2, VSCODE 2. 큐(Queue) 2.1. 큐의 개념 줄을 서는 행위와 유사 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 (FIFO, First In First Out) 스택과 꺼내는 순서가 반대입니다. (스택은 LIFO) Enqueue : 큐에 데이터를 넣는 기능 Dequeue : 큐에서 데이터를 꺼내는 기능 Front : 데이터를 꺼내는 쪽 Rear : 데이터를 넣는 쪽 2.2. 파이썬 큐(queue) 라이브러리 import queue 하여 사용할 수 있습니다. Queue() : 일반적인 큐 자료구조 >> queue.Queue() LifoQueue() : 나중에 입력된 데이터가 먼저 출력 (스택구조) >> queue.LifoQueue..
[Python] 스택(Stack) 구현 1. 개발 환경 : Python 3.8.10, WSL2, VSCODE 2. 스택(Stack) 이란? 스택은 데이터가 쌓여져 있는 자료 구조를 의미합니다. 쌓여진 물건을 꺼낼 때 맨 위의 물건부터 꺼내게 됩니다. 마찬가지로 스택에서는 가장 마지막에 입력된 데이터가 먼저 출력되는 LIFO(Last In First Out) 정책을 따릅니다. 데이터를 제한적으로 접근할 수 있습니다. 2.1. 스택의 장점 구조가 단순하고, 구현이 쉽습니다. 데이터 저장/읽기 속도가 빠릅니다. 2.2. 스택의 단점 데이터 최대 갯수를 미리 정해야합니다. 파이썬의 경우는 재귀함수 1000번까지만 호출 가능합니다. 예상 최대 갯수만큼 공간을 확보하여야 하므로 저장공간의 낭비가 발생됩니다. 3. python으로 스택 클래스 구현하기 p..
[Python] List Comprehension 이해하기 환경 : windows 10, VS Code, Python 3.7 1. 개요 다른 사람의 소스 코드를 보면 자주 보게되는데, 이 표현식을 사용할 줄 모른다면 코드를 이해할 때 걸림돌이 됩니다. (ㅜㅜ) 하지만 리스트 컴프리헨션을 사용 시 코드 작업의 엄청난 효율을 가져다줍니다! 간단한 예제를 통해 이해를 높혀봅시다. 2. 예제 설명 2.1. for문 1부터 n까지의 숫자를 입력 받아 리스트에 "정수형"으로 저장한다면 어떻게 해야할까요? 기존 표현 방식으로는 다음과 같이 작성합니다. number = int(input()) array = [] for i in range(1, number+1): array.append(i) print(array, type(array[0])) 10을 입력했을 때의 결과값 [1,..
[Python] 구글에서 이미지를 수집 해보자 (selenium) 개발 환경 : Windows 10, VS Code, Python 3.7.11, Google Chrome Browser 기본적인 환경은 구축돼 있다는 가정 하에 진행하겠습니다. 1. 개발 환경 구축 우선 터미널에서 selenium을 인스톨 합니다. pip install selenium selenium을 사용하기 위해서는 chromedriver를 설치해야합니다. 우선 구글 크롬 버전을 확인합니다. (설정 > 크롬 정보) https://chromedriver.chromium.org/downloads ChromeDriver - WebDriver for Chrome - Downloads Current Releases If you are using Chrome version 99, please download Ch..
[ML] 코사인 유사도 코사인 유사도 (Cosine Similarity) 내적공간의 두 벡터간 코사인 값을 이용하여 측정된 벡터간의 유사한 정도를 의미합니다. 두 벡터의 방향이 완전히 같을 경우 1, 90º의 각을 이룰 경우 0, 180º로 완전히 반대 방향인 경우 -1의 값을 갖습니다. 이 때 벡터의 크기는 값에 아무런 영향을 미치치 않습니다. 코사인 유사도는 특히 결과값이 [0,1] 범위로 떨어지는 양수 공간에서 사용됩니다. 정보 검색 및 텍스트 마이닝 분야에서 코사인 유사도는 두 문서의 유사를 측정하는 매우 유용한 방법입니다. 코사인 유사도가 널리 사용되는 이유 중 하나는 이것이 양수 공간 조건만 만족하면 몇 차원이든지 거리를 측정하는 것이 가능하기 때문입니다. 텍스트 매칭에 적용될 경우, A,B의 벡터로는 일반적으로 해..
[ML] 과적합(Overfitting)을 막는 방법들 모델의 과적합은 모델의 성능을 낮추는 주요 이슈입니다. 과적합을 막는 방법을 간단히 알아보겠습니다. 1. 데이터의 양을 늘리기 데이터의 양이 적을 경우, 데이터의 특정 패턴이나 노이즈를 쉽게 학습하여 과적합 현상 발생 확률이 증가합니다. 데이터의 양을 늘릴 수록 모델은 데이터의 일반적인 패턴을 학습하여 과적합을 방지할 수 있습니다. 의도적으로 기존의 데이터를 조금씩 변형하고 추가하여 데이터의 양을 늘리기도 하는데 이를 데이터 증식 또는 증강 (Data Augmentation)이라고 합니다. 이미지의 경우 데이터 증식이 많이 사용됩니다. (회전, 노이즈, 일부 수정 등) 2. 모델의 복잡도 줄이기 인공 신경망의 복잡도는 은닉층의 수나 매개변수의 수 등으로 결정됩니다. 과적합 현상이 포착됐을 때, 인공 신경..
[ML] pytorch로 다층 퍼셉트론 구현하여 손글씨 분류 1. 숫자 필기 데이터 소개 숫자 필기 데이터는 사이킷런 패키지에서 제공하는 분류용 예제 데이터입니다. 0부터 9까지의 숫자를 손으로 쓴 이미지 데이터입니다. 각 이미지는 0부터 15까지의 명암을 가지는 8 x 8 = 64 픽셀 해상도의 흑백 이미지입니다. 해당 이미지가 1,797개 있습니다. load_digits()를 통해 이미지 데이터를 로드할 수 있습니다. 로드한 전체 데이터를 digits에 저장합니다. %matplotlib inline import matplotlib.pyplot as plt # 시각화를 위한 모듈 임포트 from sklearn.datasets import load_digits digits = load_digits() # 1,979개의 이미지 데이터 로드첫 번째 샘플을 출력해보겠습..
[ML] 인공신경망 비선형 활성화함수 (Activation Function) 1.활성화 함수의 특징 - 비선형 함수(Nonlinear function) 비선형 활성화 함수는 입력을 받아 수학적 변환을 수행하고 출력을 생성하는 함수입니다. (시그모이드, 소프트맥스) 인공 신경망의 능력을 높이기 위해 은닉층을 계속 추가해 줘야하는데 선형 함수의 경우 단순하게 가중치의 곱의 형태가 되게 때문에 1회 추가한 것과 차이를 줄 수 없습니다. 따라서 모든 은닉층의 활성화함수로 선형함수를 사용하지 않습니다. 예를 들어 활성화 함수 f(x) = Wx라고 가정할 경우 f(f(f(x)))의 경우 f(x) = W^3x입니다. 이는 W^3 = k라고 했을 때 y(x) = kx로 1회 추가한 것과 차이가 없습니다. 2. 시그모이드 함수(Sigmoid function)와 기울기 소실 위 인공신경망은 순전파..

반응형