분류 전체보기 (369) 썸네일형 리스트형 Trie 네이버나 구글에서 검색 시 찾고자 하는 검색어의 일부분만 쳐도 추천하는 검색어가 자동완성되는 기능을 많이 접해보셨을 겁니다. 이때 사용하는 알고리즘이 Trie 로서 문자열 길이만큼의 시간복잡도가 소요되어 빠르고 간단합니다. Trie 알고리즘은 Figure 1과 같이 노드를 이용한 트리 형태로 구성되고 트리의 각 노드는 해당하는 문자와 사전형태로 이루어진 자식 노드, 문자열의 끝을 알리는 플래그로 구성됩니다. Hashable한 딕셔너리가 사용되므로 ($O(1)$) 주어진 prefix 길이만큼의 시간복잡도로 prefix를 공유하는 모든 문자열을 파악할 수 있습니다. Implementation 먼저 트리를 구성할 노드를 정의합니다. 인자로 해당 노드의 문자 (char), 플래그로 사용할 전체문자열 (data).. RecSys - DeepFM RecSys - Factorization Machines (1) ResSys - Factorization Machines (2) RecSys - Field-aware Factorization Machines 유저가 추천된 아이템에 대하여 클릭할 확률을 예측하는 CTR (Click Through Rate) prediction은 온라인 광고, 유튜브 등의 모바일 어플리케이션에 유용하게 탑재되는 알고리즘으로 수많은 데이터가 존재하는 상황에서 플랫폼의 수익성 증대, 유저 관리 측면에서 매우 중요합니다. 지난 포스트에서 살펴본 FM (Factorization Machine)이나 FFM (Field-aware Factorization Machine)에서는 희박하고 (sparse) 고차원 (high-dimension.. Pandas Multiple Columns Label Encoding Pandas 데이터프레임 형태의 데이터를 머신러닝 알고리즘에 적용하기 위해서는 범주형으로 존재하는 칼럼을 어떻게든 수치화시켜주어야 합니다. Scikit-learn이나 pandas 패키지의 함수를 가지고 쉽게 수행할 수 있으며 대표적인 방법으로는 1) 범주의 개수만큼 열을 새롭게 생성하여 해당하는 범주의 열에 대해서 1, 나머지 열에 대해서는 0을 할당하는 one-hot 인코딩과 (pandas.get_dummies) 2) 0부터 범주 개수 -1 만큼의 수를 각 범주에 할당하는 Label 인코딩이 있습니다. 보통 one-hot 인코딩을 주로 사용하나 추후 Pytorch 같은 딥러닝 프레임워크를 이용할 때에는 정의된 크로스엔트로피 로스의 타겟이 라벨 인코딩 형태로 되어있기 때문에 Label 인코딩을 수행해야하.. 파이썬의 memory management 파이썬 또한 프로그래밍 언어이기 때문에 컴퓨터 메모리 (RAM) 상에 데이터를 저장하고 (write) 읽는 (read) 작업을 수행해야합니다. 파이썬 프로그램이 수행된다면 데이터를 저장할 메모리 공간을 할당받고 더 이상 쓰이지 않는 메모리 공간을 해제하는 작업이 필요하다는 것이죠. 그렇다면 파이썬 프로그램에서 물리 메모리 상의 특정 공간까지 데이터 read/write는 어떤 방식으로 이루어질까요? 파이썬 코드가 컴퓨터 상에서 실제로 수행되기 위해서는 컴퓨터가 이해할 수 있는 특정한 종류의 언어로 먼저 변환되어야 합니다. 파이썬은 C 언어로 구현된 CPython으로 구현되어 있고 CPython은 파이썬 코드를 컴퓨터가 이해할 수 있는 어셈블리 언어와 비슷한 bytecode로 파이썬 코드를 컴파일합니다. B.. 파이썬과 객체 파이썬의 설계 철학은 간단함입니다. C/C++ 에서와 같이 포인터라는 복잡한 개념을 명시적으로 사용하지 않고 메모리 관리를 별도로 할 필요없이 속도 대신 범용성을 추구하는 usability가 설계의 근본으로 자리잡고 있습니다. 이는 Zen of Python 에서도 잘 드러납니다. 언제나 Zen of Python을 읽을 때마다 내 자신이 파이썬 철학에 맞게 구현하고 있는지 반성하게 됩니다... Beautiful is better than ungly. Explicit is better than implicit. Simple is better than complex. Complex is better than complicated. Flat is better than nested. Sparse is better.. 파이썬의 Namespace와 Scope Namespace 파이썬에서 할당은 (assignment, =) 특정 객체에 변수 이름을 부여하는 행위를 말합니다. 예를 들어 "x=3" 이라면 3이라는 객체를 x라는 변수 이름으로 할당하고 x라는 이름은 3이라는 객체의 레퍼런스가 됩니다. Namespace (이름공간)는 여러 객체와 그것의 레퍼런스가 (이름) 사전 타입으로 (키는 객체 레퍼런스의 이름, 값은 객체) 묶인 콜렉션으로 다음과 같이 4가지 타입이 존재합니다. Built-in namespace Built-in namespace 에는 파이썬의 built-in 객체의 이름이 담긴 것으로 파이썬이 구동되고 있다면 언제 어디서든 사용할 수 있는 것들로 구성되어 있습니다. 파이썬에서 다루는 사전예약된 키워드 (return, local, id, dict.. 파이썬의 매개변수 전달 방식 파이썬에서 함수의 매개변수 (arguments) 는 어떻게 전달될까요? C/C++ 언어에 익숙한 사람이라면 전달값이 복사되어 매개변수에 전달하는 pass by value (call by value), 존재하는 변수의 레퍼런스 (혹은 메모리 주소) 를 전달하는 pass by reference (call by reference) 를 생각하겠지만 파이썬에서는 pass by assignment 방식으로 함수의 매개변수에 값을 전달합니다. Pass by value / reference in python 다음 코드를 살펴보겠습니다. 파이썬에서는 할당된 객체의 메모리 주소를 반환하는 id() 내장함수가 있고 이를 통해 1) 함수 매개변수가 원래의 변수와 같은 주소를 가지는지와, 2) 같은 이름으로 변수를 재할당 했을.. 견적서 1인 프리랜서나 개인사업을 운영하면 거래처에서 공급하는 물품 / 서비스에 대한 견적서를 요구하는 경우가 매우 많이 있습니다. (실제로는 거의 모든 경우입니다.) 견적서는 회사 및 회사 간의 물품 / 서비스 거래를 위해 가격을 미리 알아보고 가격조절을 위해서 매입처가 (소비자) 매출처에게 (공급자) 발행하는 문서로 모든 거래의 시작점이기도 합니다. 물론 계약서가 아니기에 법적인 효력을 가지지는 않지만, 거래 쌍방 간 가격을 합의하기 위한 근거이기 때문에 견적서를 기반으로 계약이 성립하는 것입니다. 거래에서 중요한 서류이나 놀랍게도 딱히 정해진 양식은 없습니다만 반드시 들어가야 하는 몇 가지가 있습니다. 먼저 공급자 정보가 들어가야겠죠. 공급자의 사업자번호, 상호, 소재지, 엄태, 업종, 담당자 등의 정보를.. 이전 1 ··· 12 13 14 15 16 17 18 ··· 47 다음