Lab-Buildamatrix Copyright 2018 document created by teamlab.gachon@gmail.com Introduction PDF 파일다운로드 Machin Learning의두번째랩은 Pandas와 Numpy를활용하여 Rating Matrix 또는 Frequent Matrix 를만드는것입니다. 추천시스템개발등머신러닝을하다보면누가, 어떤물건 ( 또는서비스 ) 를얼마나이용하고평가하였는가를 Matrix 형태로변형하여분석하는일이많은데이를위한전처리과정이필요합니다. 흔한예제로생각해보면영화를본사용자들이각영화를평가한별점점수를 Matrix 형태로표현하는것이있습니다. 일반적으로데이터베이스는저장공간의효율성을위해 Matrix 형태로저장하는것이아니라 Event과발생한정보를 Row 단위로저장합니다. 이렇게 DB에쌓인정보를 Matrix로변환하는게이번랩의목표입니다. 실제데이터의변환은아래그림과같습니다. backend.ai 설치 숙제를제출하기앞서, 레블업의 backend.ai 를여러분의파이썬에설치하셔야합니다. 설치하는과정은매우 쉽습니다. 아래처럼터미널또는 cmd 창에서입력을하시면됩니다. pip install backend.ai-client 숙제 파일 (lab_bulid_matrix.zip) 다운로드
먼저해야할일은숙제파일을다운로드받는것입니다. 아래링크를다운로드하거나 Chrome 또는익스플 로러와같은웹브라우저주소창에아래주소를입력합니다. 링크 lab_numpy.zip https://s3.ap-northeast-2.amazonaws.com/teamlabgachon/mooc_pic/2_lab_bulid_matrix.zip 또는 Mac OS 에서는아래명령을쓰셔도됩니다. wget https://s3.ap-northeast-2.amazonaws.com/teamlab-gachon/mooc_pic/2_lab_buli 다운로드된 lab_bulid_matrix.zip 파일을작업폴더로이동한후압축해제후작업하시길바랍니다. 압축해제하면폴더가 linux_mac 과 windows 로나눠져있습니다. 자신의 OS에맞는폴더로이동해서코드를수정해주시기바랍니다. bulid_matrix.py 코드 구조 본 Lab 은 Pandas 의기본적인동작과 Numpy 를결합하여일반적으로쌓여있는데이터를 Matrix 형태로변 경합니다. 변환되는 Matrix 형태는두가지이며, 본 Lab 도두가지모두를지원하는것을목표로합니다. get_rating_matrix 첫번째함수는 Rating Matix 을만드는것입니다. Rating Matrix 는영화, 책처럼사용자가제품에대한평 가를 Matrix 형태로표현한것입니다. 저희는 movie_rating.csv 라는파일을활용하여 rating matrix 를 구성한다. movie_rating.csv 는아래처럼구성된다. source target rating Mick LaSalle Superman Returns 3.0 Mick LaSalle The Night Listener 3.0 Claudia Puig Snakes on a Plane 3.5 Claudia Puig Just My Luck 3.0 Claudia Puig The Night Listener 4.5
Lisa Rose Lady in the Water 2.5 Lisa Rose Snakes on a Plane 3.5 본랩에서다루는모든 csv 파일의 column 은 source, target 으로구성되며, source 는 row 의 index 정보 가, target 는 column 의기준정보가된다. rating 정보는 get_rating_matrix 함수에서만사용되며, 사용 자가영화에대한평가를정보를담고있다. 본랩의목적은위테이블과같이구성된정보를 Matrix 형태로바꾸는거다. Matrix 형태로바꾸는규칙은다 음과같다. source는 row, target은 column의기준이된다. source와 target의정렬된값을활용하여 index를설정한다. 즉위 Table에서는 Claudia Puig 과 row의 0번째 index로설정된다. rating의정보는 Matrix에서각 Element 값에할당된다. 생성되는 Matrix Ndarray로나타난다. dict, collection 모듈등파이썬의 Built-in Module은사용할수있으나, for 문은사용할수없다. 생성하는함수의 Template 은아래와같으며, 입력값은처리하는 csv 파일의이름만넣을수있다. def get_rating_matrix(filename): pass 실제한구현한예제와결과물은아래와같다. >>> import numpy as np >>> import build_matrix as test_code >>> test_code.get_rating_matrix("movie_rating.csv") array([[ 3., 0., 3.5, 0., 4.5, 0. ], [ 0., 3., 3.5, 0., 3., 3.5], [ 0., 3., 4., 5., 3., 3.5], [ 3., 2.5, 3.5, 3.5, 3., 2.5], [ 2., 3., 4., 3., 3., 0. ], [ 0., 0., 4.5, 4., 0., 0. ]], dtype=float32) get_frequent_matrix 두번째함수는얼마나빈번하게제품을구매했는지를표현하는 Frequent Matrix 를만드는것입니다. Frequent Matrix 는사용자가특정제품을구매한횟수를기록하는 Matrix 이다. 저희가제공하는 csv 파일은 1000i.csv 라는파일로아래처럼구성되어있습니다.
source target source,target 3 7 4 15 2 49 5 44 1 1 2 19 4 22 4 34 4 40 5 31 4 17 5 16 2 43 5 20 3 48 본함수에서는기존함수와달리 Rating column 이없습니다. 대시신 source 와 target 의조합이한개이상 으로중복될수있고, 이것이 Frequent 로처리해야합니다. 즉 Rating 이명시적으로있는게아니라데이터를 통해 Frequent 를찾아내는것이목적입니다. Matrix 형태로바꾸는규칙은다음과같습니다. source는 row, target은 column의기준이된다. source와 target의정렬된값을활용하여 index를설정한다. 즉위 Table에서는 1 은 row의 0번째 index로설정된다. Source와 Target이출현한정보는 Frequent로 Matrix에서각 Element 값에할당되어야한다. 생성되는 Matrix Ndarray로나타내며, dtype은 np.float32 dict, collection 모듈등파이썬의 Built-in Module은사용할수있으나, for 문은사용할수없다. 생성하는함수의 Template 은아래와같으며, 입력값은처리하는 csv 파일의이름만넣을수있다.
def get_frequent_matrix(filename): pass 실제한구현한예제와결과물은아래와같다. >>> import numpy as np >>> import build_matrix as test_code >>> test_code.get_frequent_matrix("1000i.csv") array([[ 19., 17., 14., 11., 17., 25., 7., 22., 5., 18., 10., 13., 13., 8., 20., 10., 9., 10., 16., 15., 9., 11., 17., 15., 14., 8., 6., 12., 18., 12., 6., 18., 9., 24., 7., 19., 14., 6., 4., 12., 15., 14., 20., 9., 12., 16., 11., 9., 11., 12.], [ 20., 16., 10., 15., 17., 18., 10., 13., 5., 19., 8., 14., 14., 9., 15., 14., 13., 8., 12., 9., 5., 10., 28., 18., 7., 8., 6., 19., 14., 13., 11., 12., 18., 15., 7., 11., 17., 9., 5., 5., 13., 12., 15., 9., 13., 16., 16., 10., 16., 9.], [ 12., 16., 13., 19., 23., 19., 5., 14., 5., 18., 7., 6., 14., 8., 20., 17., 14., 11., 16., 12., 7., 9., 23., 12., 12., 8., 7., 23., 26., 10., 9., 20., 16., 11., 4., 19., 12., 12., 5., 10., 10., 14., 10., 17., 15., 16., 11., 17., 9., 11.], [ 14., 14., 19., 11., 11., 18., 7., 16., 7., 17., 6., 19., 18., 12., 13., 13., 14., 9., 21., 16., 6., 6., 19., 14., 19., 5., 12., 14., 18., 11., 11., 21., 15., 10., 11., 14., 17., 21., 6., 14., 9., 16., 18., 12., 16., 16., 26., 16., 12., 20.], [ 13., 7., 8., 15., 13., 16., 3., 19., 11., 12., 7., 10., 13., 14., 16., 14., 23., 9., 13., 10., 11., 3., 11., 14., 9., 6., 11., 16., 18., 11., 5., 14., 10., 16., 10., 5., 14., 11., 3., 9., 11., 10., 16., 8., 13., 20., 14., 18., 21., 3.]], dtype=float32) 숙제 template 파일 제출하기 ( 윈도우의 경우 ) 1. windows + r 를누르고 cmd 입력후확인을클릭합니다. 2. 작업을수행한폴더로이동합니다. 3. 밑에명령어를 cmd 창에입력합니다. install.bat submit.bat [YOUR_HASH_KEY] 숙제 template 파일 제출하기 (MacorLinux)
1. 터미널을구동합니다. 2. 작업을수행한디렉토리로로이동합니다. 3. 밑에 bash 창을입력합니다. bash install.sh bash submit.sh [YOUR_HASH_KEY] backend.ai 서비스의업데이트에의해실행전반드시 bash install.sh 또는 install.bat 수 행을바랍니다. NextWork 고생하셨습니다. Numpy 와 Pandas 를함께해야함성공할수있는랩입니다. 아직 Matrix 와 Vector 데이터 를핸들링하는방법이익숙하지않았다면상당히어렵게푸셨을것같습니다. 그럼에도불구하고, 우리는계속 전진해야합니다. Code 가당신과함께하길 Humanknowledgebelongstotheworld - from movie 'Password' -