전체 글114 # 11. PCA (Principal Component Analysis) 이론 PCA는 고차원의 데이터의 분포를 유지한채(최대한 중요한 정보를 유지한채) 차원을 낮추기 위한 알고리즘이다. 고차원에서 저차원으로 변환하는 과정에는 초평면 혹은 벡터에 정사영 혹은 투영(projection) 과정이 수행된다. 우선, 고차원 데이터에 대한 데이터의 분포를 파악하는 것이 중요하다. 분포는 데이터가 어느정도 넓게 퍼져있는가를 의미한다. 만약 위와 같은 2차원 파란색 데이터가 존재한다고 가정할 때, 1~3번 선중 어느 선이 가장 데이터를 잘 표현한다고 할 수 있을까? 직관적으로 보았을 때, 데이터가 가장 넓게 분포한 방향으로 기울어진 2번 선을 선택할 수 있을 것이다. 2번 선(벡터)에 대해 사영시키면 빨간점으로 이루어진 데이터들을 볼 수 있다. 이 점들은 하나의 선(1차원)으로 표현되며 .. 2022. 3. 7. # 20. Counter 이번 포스트에서는 파이썬의 기본 모듈인 collections 모듈중에서 Counter에 대해 알아볼 것이다. Counter 클래스는 기본적으로 dict(딕셔너리)클래스를 상속받고 있다. 해당 클래스는 요소의 빈도수를 체크하기 적합한 자료형이다. 우선 Counter 클래스를 사용하지 않고 요소의 빈도수를 체크하려면 딕셔너리를 사용할 것이다. corpus = "abcdeabcdabcaba" d = dict() for c in corpus: d.setdefault(c, 0) d[c] += 1 d >>> {'a': 5, 'b': 4, 'c': 3, 'd': 2, 'e': 1} 위 코드처럼 딕셔너리를 사용하여 각 문자들의 빈도수를 매핑할 수 있다. 하지만, 이는 Counter를 알고있다면 for문이 불필요하게 사.. 2022. 3. 1. # 0. 데이터 입력 파이프라인 API 해당 포스트에서는 데이터 입력 파이프라인을 빌드하기 위한 텐서플로우의 API들을 알아볼 것이다. 갑자기 시작부터 어려운 단어가 나왔다. 데이터 입력 파이프라인? 필자가 생각하기에는 데이터가 쌩짜배기로 모델에 주입되는 것이 아니라, 적합한 형태(shape)으로 변환되어야 주입되는데, 이 과정을 전처리하기 위한 과정이라고 생각한다. 그럼 지금부터 하나씩 알아보자. 우선 데이터셋의 shape를 직관적으로 이해하기 위해서는 다음과 같은 함수가 필요하다. 미리 정의해두고 시작하자. def show_dataset_shape(dataset): dataset_to_numpy = list(dataset.as_numpy_iterator()) shape = tf.shape(dataset_to_numpy) print(shap.. 2022. 3. 1. # 5. Universal functions 이번 포스트에서는 universal function에 대해 알아볼 것이다. 넘파이에서는 np.sin, np.cos, np.exp와 같은 친숙한 수학적 함수들을 제공한다. 넘파이에서는 이러한 함수들을 universal function(범용 함수)이라고 부른다. 이러한 함수들은 피연산자 배열의 원소 단위로 연산이 수행되며, 결과를 새로운 행렬로 반환한다. B = np.arange(3) B >>> array([0, 1, 2]) np.exp(B) >>> array([1. , 2.71828183, 7.3890561 ]) np.sqrt(B) >>> array([0. , 1. , 1.41421356]) C = np.array([2., -1., 4.]) np.add(B, C) >>> array([2., 0., 6.]).. 2022. 2. 25. # 2. 가상환경 패키지 목록 저장 및 불러오기 이번 포스트에서는 pip와 conda 패키지 관리자를 통해서 가상환경에 저장되어 있는 패키지 목록을 파일로 내보내고(exort) 이를 설치하는 (import) 방법에 대해 알아보겠다. pip export pip freeze > [파일명] pip 패키지 관리자를 통해 현재 활성화된 가상환경의 패키지 목록을 파일로 내보내는 역할을 한다. 예를 들어 pip freeze > requirements.txt 를 하면 requirements.txt 안에 설치된 패키지 목록이 쓰여있다. absl-py @ file:///opt/conda/conda-bld/absl-py_1639803114343/work aiohttp @ file:///C:/ci/aiohttp_1637857239634/work aiosignal @ fil.. 2022. 2. 21. # 4. Basic Operations 이번 포스트에서는 기본적인 넘파이 연산들에 대해 다뤄볼 것이다. a = np.array([20, 30, 40, 50]) b = np.arange(4) c = a - b # 1 Operation print(b) >>> array([0, 1, 2, 3]) # 2 Operation print(c) >>> array([20, 29, 38, 47]) # 3 Operation print(b**2) >>> array([0, 1, 4, 9]) # 4 Operation print(10 * np.sin(a)) >>> array([ 9.12945251, -9.88031624, 7.4511316 , -2.62374854]) # 5 Operation print(a >> array([ True, True, False.. 2022. 2. 19. 이전 1 2 3 4 5 6 7 ··· 19 다음