개인 공부 15

[DS] PCA 차원 감소 (PCA Dimensionality Reduction)

참조 : 차원 감소와 PCA 분석 Principal Component Analysis for Dimensionality Reduction in Python 주성분 분석 1. PCA 주성분 분석 혹은 PCA(Principal Component Analysis) 고차원의 데이터를 저차원의 데이터로 선형변환하는 것을 의미한다. 즉, 데이터셋에 있어서 데이터셋의 column(혹은 feature) 개수를 줄일 수 있는 기법이다. 1.1 Feature의 개수를 왜 줄여야 할까 Feature의 개수가 많다는 것은, 한 데이터를 표현하는 정보의 양(volumn)이 많다는 것을 의미한다. 그러나 모든 feature가 데이터를 표현하기 위해 유의미한 정보를 담고 있는 것은 아니다. feature는 데이터와 관련이 없거나,..

개인 공부/DS 2022.12.23

[Python] 멀티 스레드 - 4 (Dead Lock)

이전 포스트에서 한정된 공유 자원에 대한 접근을 관리하는 Lock에 대해서 공부했다. Lock을 사용할 때에는 Dead Lock이 발생하지 않도록 주의해야 한다. Dead Lock 교착 상태 (Dead Lock)이란, 두 개 이상의 작업이 서로 상대방의 작업이 끝나기 만을 기다리고 있기 때문에 결과적으로 아무것도 완료되지 못하는 상태를 가리킨다. 데드 락을 발생시키기 위해서는 네 가지 조건을 만족해야 한다. 상호 배제 (Mutual Exclusion) 프로세스들이 필요로 하는 자원에 대해 배타적인 통제권을 요구한다. 점유 대기 (Hold and wait) 프로세스가 할당된 자원을 가진 상태에서 다른 자원을 기다린다. 비 선점 (No preemption) 프로세스가 어떤 자원의 사용을 끝낼 때까지 그 자원..

[Python] 멀티 스레드 - 3 (Lock)

서론 어느 날, 나는 숫자 1,000,000을 하나씩 세고 싶어졌다. 그러나 for-loop로 1부터 1,000,000까지 하나씩 세는 것은 비효율적이라고 판단해 멀티 스레딩을 이용하여 1부터 250,000까지 세는 스레드를 네 개 만들어서 1,000,000을 세어보기로 하였다. Lock이 없을 때 코드 코드는 다음과 같다. import threading import time result = 0 def count(num): # result에 1씩 더하는 작업을 num회 실시 global result for _ in range(num): result += 1 thread_1 = threading.Thread(target = count, args = (250000,)) thread_2 = threading...

[Python] 멀티 스레드 - 2 (데몬 스레드)

데몬 스레드(Deamon thread)란 일반 스레드를 보조하는 역할을 하는 스레드를 의미한다. 데몬 스레드는 메인 스레드가 종료되면 그 즉시 종료된다. 일반 스레드 import threading import time def count(num, t, thread_num): print(f"thread {thread_num} starts") for i in range(num): print(f"thread {thread_num} running {i}") time.sleep(t) print(f"thread {thread_num} ends") thread_1 = threading.Thread(target = count, args = (10, 0.1, 1)) thread_1.start() count(5, 0.1, ..

[Python] 멀티 스레드 - 1

서론 멀티 스레드 (Multi-thread)는 보통 언어 기본서 맨 마지막에 나오는 부분으로, 면접에서 어떤 언어에 대한 숙련도를 확인할 때 나오는 단골 질문이라고 한다. 개인적으로는 멀티 스레딩의 기본적인 개념을 알고 있었지만, 알고리즘 만으로 파이썬을 익혔기 때문에 파이썬으로 구현해본 적은 없어 면접 질문에 제대로 대답하지 못했던 경험이 있다. 본 문서에서는 파이썬으로 멀티 스레드를 한 번 구현해보는 것으로 멀티 스레딩에 대한 기본적인 이해도를 갖추는 것을 목표로 한다. 본론 스레드란? 위키피디아의 스레드 문서에서는 스레드를 다음과 같이 정의한다. In computer science, a thread of execution is the smallest sequence of programmed inst..