728x90

프로그래밍 47

Hyper parameter tuning

내가 발견한 그리드 서치의 문제점 1. 많은 범위를 지정할 경우, 연산 시간이 너무 오래 걸림. --> 다양한 range의 하이퍼 파라미터 값 assign이 불가능함. 2. 1이 불가능하기 때문에, 내가 알아서 값을 정해서 param에 넣어줘야 하는데 이게 많이 힘들다. 내가 하는 방식은 범위가 넓게 그리드 서치를 하면서 그때 마다 도출된 최적값을 기준으로 해서 그 안에서 범위를 줄여나가는 방식으로 그리드 서치를 반복하는 방법인데, 마찬가지로 연산 시간이 너무 오래 걸리고, 일단 내가 찾은 최적값이 global optimum이라는 보장이 없다. 3. 여러 개 변수가 있을 경우 여러 번 돌릴 때 탐색된 최적값이 계속 변한다는 단점(?)이 있었다. --> 근데 이건 내가 코딩 잘못했을 수도 있다고 봄. 좀 ..

[R] 스크립트 파일 관리 & 프로젝트 생성 및 관리

스크립트 파일 관리 : 코드가 너무 길면 어떤 게 어디 있는지 찾기 어렵다. 수천 줄의 코드가 담긴 스크립트 파일을 어떻게 관리할지. - 캡슐화(Encapsulation) : 특정 기능을 수행하는 코드를 가져다가 꽁꽁 싸는 것. 유지, 보수, 관리가 잘됨. 1) R studio 기능 활용 : Script 파일 목차(구역 나누기 & 목차)를 만들 수 있음. (주석 끝에 ####) 코드 접고 펼 수 있음. 2) 사용자 정의 함수 활용 : 특정 기능을 하는 코드 뭉치를 사용자 정의 함수로 만든다. 별도의 스크립트 파일에 저장하여 필요할 때 불러온다(source 함수). or 패키지로 만들어버림. - 스크립트 파일 grouping 1) 용도에 따른 구분 : 데이터 입출력, 전처리, 시각화 및 레포팅 등 2) 성..

[R] 데이터 재가공

데이터 재가공 1. cbind와 rbind 동일한(열의 수와 이름 모두 일치) 열들 또는 동일한 수의 행을 가진 두 데이터셋을 가졌을 경우 cbind -> column bind; 열 기준으로 합침(vertical), 옆에다 갖다 붙인다고 생각하면 됨 rbind -> row bind; 행 기준으로 합침(horizontal), 아래다 갖다 붙인다고 생각하면 됨 2. 조인(join) 데이터가 항상 cbind를 사용해 결합할 수 있을 정도로 잘 정렬된 형태로 존재하지는 X. 조인을 위한 가장 일반적인 함수 세 가지는 merge, plyr 패키지의 join, data.table에서의 병합 기능 1) merge merge(x, y, by.x, by.y) 이때, x, y = 병합하고자 하는 두 가지 data.fram..

[R] 반복문 없이 반복하기

반복문 없이 반복하기 1. apply류 : apply, lapply, sapply, ... 1) apply apply는 matrix에 대해서만 사용될 수 있다. 즉 모든 원소가 character, numeric, logical 중 어느 것이든지 같은 형이어야 한다. data.frame 같은 다른 객체에 사용하고 싶다면 먼저 객체를 matrix 형태로 변환해야함. data.frame 객체더라도 모든 원소가 같은 속성일 경우에는 상관없다. apply(X, MARGIN, FUN) when X: 다루고자 하는 객체 MARGIN: 함수를 어느 기준으로 적용할지 지정하는 것 (MARGIN이 1이면, row 방향. 2이면 column 방향.) FUN: 적용하고자 하는 함수 2) lapply와 sapply - lapp..

[R] 데이터 읽어오기(read) & 데이터 기록하기(write)

데이터 읽어오기는 이전에도 글 작성을 했지만, 구분자가 명확하지 않은 경우 readLines를 통해 미리 확인을 하는 절차를 추가하여 작성함. - Encoding 1. OS별 인코딩 (운영체제별 인코딩 방식이 다름) Mac OS, Linux: UTF-8 Windows: Euc-kr, cp949 2. 스크립트 파일 문제 해결 (한글이 깨진 파일 어떻게 복구할 것인가?) 1) 기본 인코딩 설정 변경하여 애초에 깨질 일을 없게 하자^^! Reopen with Encoding —> UTF-8로 기본 설정값 변경. ** 파일 인코딩이 뭐길래 깨지나? 한글, 유니코드 처리할 때의 방식이 UTF-8, cp949 등등 다 다름. Ex) 종이접기 펭귄모양으로 접은 종이를 다시 원상복구 시키기 위해서는 접었던 순서의 역순..

[R] 반복문(for loop, while loop)

- 반복문 R에서는 vector, list, data.frame의 원소에 대한 반복적인 연산이 필요할 때마다 loop을 이용하기보다는 벡터화를 사용하는 것이 더 효율적이다. 그러나 때때로 루프 사용이 불가피할 경우, for문과 while 반복문을 사용할 수 있다. 1. for 루프 for 루프는 vector로 제공된 인덱스에 대해 반복하고, 지정된 동작을 수행한다. for( i in 1:10){ action } → 1:10까지 총 10번을 반복하며 action을 수행하는 for 문의 선언이다. 1:10이 들어가는 세번째 인자 자리에는 임의의 형을 가지는 vector가 들어갈 수 있으며, 대부분 numeric이나 character 형을 가진다. R의 내장된 벡터화는 for loop과 동일한 기능을 훨씬 효..

[R] 제어문(if, if~else if~, switch, ifelse)

- 제어문 1. if문 1) if (조건문) { action } : 조건문이 TRUE이면, action을 수행하고 FALSE이면 아무 일도 일어나지 않는다. 2) if (조건문) { action } else { action2 } : 조건문이 TRUE이면, action을 수행하고 FALSE이면 action2를 수행한다. 2. if~ else if~ python의 elif와 같은 맥락이다. 여러 조건을 순차적으로 check하게 된다. 이때 각 조건은 서로 배타적이다. if(조건문1){ action } else if(조건문2){ action2 } else { action3 } : 조건문1이 TRUE이면 action을 수행한다. 조건문1이 FALSE일 경우 조건문2를 test해서 TRUE면 action2를 수행..

R에서 함수 정의하기, 콜하기

- R에서 사용자 정의 함수 사용하기 : 내가 A라는 기능을 수행하는 함수가 필요하지만 R에서는 제공하지 않을 때 직접 함수를 정의해서 사용할 수 있다. 1. 함수 정의하기 R에서 함수를 정의하는 방법은 c나 python과는 다르다(실은 c는 가물가물함 ㅎㅎ;). 기존에 내가 사용해왔던 python에서는 def func_name(arg1, arg2, ...): ... return ...(arg1, ...) 의 형식이었다면, R에서는 def를 사용하지 않는다. 약간 function이라는 객체가 있고 그거 속성 지정을 해준 다음 함수 이름을 담은 변수에 넣어주는 느낌? user.function

R에서 데이터 추출(데이터에서 하위 구조 데이터 추출), 치환 및 삽입하기

- 데이터 추출하기 : 데이터를 확인했다면, 데이터에서 하위구조 데이터를 추출하면서 분석의 기반을 다지는 것. 1. '$' 연산자를 사용한 하위구조 데이터 추출 ex) aws$TA : aws라는 데이터프레임 객체의 TA라는 열 리턴 2. 벡터 연산을 사용한 하위 구조 데이터 추출 1) 행 추출 ① 단일 숫자 ex) aws[2, ] → aws의 2번째 행 추출해서 리턴. 뒤에 column자리는 비워놓음으로써 2번째 행의 모든 열을 다 리턴. ② 문자 ex) aws["2", ] → aws의 2번째 행 추출해서 리턴. 혹은 행 이름을 문자로 지정했을 경우에 사용. ③ 연속 ex) aws[3:10, ] → 3행부터 10행까지 추출해서 리턴 ④ 이산 ex) aws[c(2,135, 3:10), ] → 2행, 135..

R에서 데이터 확인하기

- 데이터 확인하기 데이터를 불러왔으니, 그 데이터가 멀쩡한지 멀쩡하다면 구조는 어떤지 탐색해야 한다. 1. 상/하단 행 확인 head(object, n) → 상단 n개의 행 확인 tail(object, n) → 하단 n개의 행 확인 2. 객체 구조 및 변수별 기술통계 확인 str(객체명): 객체 구조 확인, str은 structure의 줄임말 summary(객체명): 각 변수의 기술통계 확인 → 사분위수, 평균값, 결측치 등을 보여줌. 3. 행, 열에 대해 파악 1) nrow(객체명): 행 개수 확인 2) ncol(객체명): 열 개수 확인 3) dim(객체명): 행/열 개수 확인 4) colnames(객체명): 변수명 확인 cf.) rownames(), names() → 위의 4가지는 반복문, 조건문,..

728x90