Showing posts with label 11 R. Show all posts
Showing posts with label 11 R. Show all posts

2016-10-18

R : Vector의 길이

참조 페이지 : http://blog.naver.com/her7845/220835292361

data.frame의 행 길이를 뜻하는 NROW() 함수만을 생각하다 Vector의 길이를 보는 것을 까먹었다.

그냥 length() 인데 말이다...

2016-08-01

R neuralnet 라이브러리 사용시 유의사항

요즘 프로젝트를 하면서 R의 neuralnet 패키지를 이용해서 모델을 돌리고 있다. 이게 꽤 속도도 빠르고 전처리 등 많은 부분에 자료가 많아서 잘 사용하고 있는데, 문제점도 있어서 주의가 필요하다. 특히 R 특성상 에러메시지를 식별하기 어려운 부분도 있어서 경험치적인 내용이 필요하다.

1. 입력변수가 모두 0인 경우 처리가 되지 않는다.
   입력변수가 null인 경우 처리가 되지 않는다.
에러 메시지 : Error in x - y : non-conformable arrays

기본적으로 neuralnet의 입력층에 있는 데이터는 0이 아닌 값을 가지는 것이 일반적이다. Normalization 여부와 관계없이 모두 0인 입력이 들어오는 경우, 입력변수가 null값을 가질 경우, 위의 에러 메시지가 나온다.
이유는 데이터 전처리에서 normalize 함수 등 자체 제작 함수를 사용할 때 0으로 나누는 등 null값에 대한 처리가 미흡할 때 생긴다.

R studio의 경우에는 null값이 존재하는 경우에도 neuralnet이 처리되어 처리값이 나오기는 하는데, 이를 신뢰할 수 없다.
이는 입력데이터를 바꾸어도 동일한 값이 나오는 것을 관찰하면 알게 된다.

해결방법으로는 해당 변수를 neuralnet 변수목록에서 지우면 된다.
또는 전처리 과정에서 null값을 0으로 바꾸어 주면 된다. (i-STREAM의 fillNull 이용)

#### 2016-08-22 추가
null값이 아닌 0값인 컬럼을 neuralnet에 입력해도 결과가 나온다.
문제는 0 컬럼 추가시에도 weight가 존재한다는 것인데, 이를 신뢰하기 어렵다는 점이다.
아마도 variation function이 -1 ~ 1의 값을 가진다는 가정 때문일까?

2016-06-13

R data.frame의 조작

참고 페이지 : http://dogmas.tistory.com/517
http://rfriend.tistory.com/51

앞으로 R을 다룰 일이 얼마나 많을지는 모르겠지만, 쓰고 있는 툴이 R을 기반으로 하다 보니 공부를 안할 수가 없다.
일단 data.frame을 사용하는 방법들을 익히고 있는데, 이 글은 아마도 계속 업데이트가 될 것으로 보인다.

- data.frame의 라벨을 변경하는 법
data.frame에 들어있는 각 행들을 열의 라벨로 분류해서 잘 보관하는데, 이 라벨이 마음에 들지 않는 경우 다음과 같이 바꾼다.
names() 명령어인데, 이는 라벨을 보여주는 역할을 한다.

> names(mydat)
[1] "id"    "date"    "country"    "gender"

> names(mydat)[1] <- "doc_id"
#[1] "doc_id"    "date"    "country"    "gender" 과 같이 변경

> names(mydat) [c(1,2)] <- c("doc_id", "doc_date")
#[1] "doc_id"    "doc_date"    "country"    "gender" 과 같이 변경

> names(mydat) <- c("doc_id", "doc_date", "doc_country", "doc_gender")
#[1] "doc_id"    "doc_date"    "doc_country"    "doc_gender" 과 같이 변경

- merge() 함수의 join 종류 















- rbind(), cbind(), merge() 의 차이










- data.frame 만들고 합치기 : 최초 생산한 후 rbind( ) 사용

2016-04-25

RStudio에서 Package 추가하기

늘 모르는 게 문제다. 기본부터 다져나가야 하는데 잊기도 하거니와 정녕 모르는 경우도 많다.

R을 자의반 타의반으로 분석도구로서 사용하는데, 이제 알고리즘을 구현해야 하니 적극적으로 사용법을 익혀야 할 때이다.
오픈소스인지라 외부에서 소스를 받아와서 패키지로 결합하는 작업이 무수하게 필요하다.

1. 일단 CRAN으로부터 승인받아 라이브러리로 포함되어 있는 경우
RStudio에서 Install Packages 메뉴로 가서 해당 패키지의 이름을 넣으면 인터넷에서 다운받아서 깔린다.
깔고 나서는 RStudio에서 library( ) 명령을 이용하여 패키지를 사용하도록 설정해야 한다.

2. CRAN에 없고 만들어진 소스를 다운받아 사용하는 경우
하드디스크의 일정 위치에 해당 소스를 .R 파일로 저장한다.
그리고 RStudio에서 source([경로]/[파일명].R) 명령을 이용하여 사용한다.