R 프로그램
apply function (apply/lappy/sapply)
2014. 12. 2.apply 함수는 plyr 패키지가 커버한다. 1. applyapply(array, margin, function) - 행렬의 행이나 열단위로 해당 함수를 적용하고자 할 때 사용함여기서 margin 값이 1이면 행을, 2는 열을 나타낸다. > matrix(seq(1,16), 4, 4) [,1] [,2] [,3] [,4][1,] 1 5 9 13[2,] 2 6 10 14[3,] 3 7 11 15[4,] 4 8 12 16> M apply(M, 1, min) // 각각의 행에서 최소값 리턴[1] 1 2 3 4> apply(M, 1, max) // 각각의 행에서 최대값 리턴[1] 13 14 15 16> apply(M, 2, max) // 각각의 열에서 최대값 리턴[1] 4 8 12 16 > array( seq(3..
Data Preparation (9) - Clean (Deal with Missing Values)
2014. 11. 29.변수의 결측값(missing values)에 대해 randomForest()는 결측값을 다루도록 코딩이 되어있지 않은 반면에, rpart()는 특히 결측값을 다루는데 뛰어나다. randomForest (Breiman et al., 2012)의 na.roughfix()을 통해 결측값을 중앙값 등으로 돌리기도 한다. > ods dim(ds[vars])## [1] 366 18 > sum(is.na(ds[vars])) // is.na(x) # returns TRUE of x is missing## [1] 47 // 결측값이 47개 > ds[vars]
13. 상관관계 그래프로 보여주기 Correlations Plots
2014. 11. 26.Rgraphviz 는 corpus 내 선택된 단어들간의 상관관계를 네트워크 그래프로 보여주는 기능을 한다. 아래는 10번 이상 언급된 단어들 중 상관관계가 0.5 이상인 5개의 단어들 간의 관계를 보여주는 그래프이다. 상관도라든지 빈도 등의 옵션이 주어지지 않았을 때 기본값은 20번 이상 언급, 그리고 0.7 의 상관도이다. > plot(dtm, terms=findFreqTerms(dtm, lowfreq=10)[1:5], corThreshold=0.5)Loading required package: RgraphvizLoading required package: graphLoading required package: grid
04. Preparing the Corpus - 기본 변환
2014. 11. 22.1. 소문자 변환 Conversion to Lower Case > inspect(doc[2]) [[1]]STRICKLAND: Good morning. > doc inspect(doc[2]) [[1]]strickland: good morning. // G -> g 로 변환되었음을 알 수 있다. 2. 숫자 지우기 Remove Numbers > inspect(doc[6]) [[1]]clewell: yes. i'm the coordinator for reading language arts with the montgomery county public schools which is the suburban district surrounding washington. we have 173 schools and 25 el..
03. Exploring the corpus - 전처리 및 간단한 변환
2014. 11. 21.1. Exploring the Corpusinspect() 를 이용하여 문서의 데이터가 제대로 로딩되었는지 확인이 가능하다. > inspect(docs[2]) [[1]]NULL2. Preparing the Corpus텍스트 분석을 위해서 경우에 따라서는 전처리 과정이 필요할 수 있다. 아래에서 보듯이 대상 텍스트를 소문자로 변환시키고, 숫자를 제거하는 등의 기능을 갖고 있음을 확인할 수 있다. > getTransformations()## [1] "removeNumbers" "removePunctuation" "removeWords"## [4] "stemDocument" "stripWhitespace"변환을 위해서는 tm_map() 을 사용한다. 아래에서 살펴본다. 3. Simple Transforms 아..
02. Loading a Corpus (txt, pdf, word)
2014. 11. 18.1. Corpus 로딩분석의 대상이 되는 문서의 포맷은 다양하지만, 우리가 앞으로 사용하게 될 tm 패키지는 꽤 많은 포맷을 지원한다. text, PDF, Microsoft Word, XML.의 포맷을 포함한다. 2. Corpus Sources and Readers1) sources> getSources()[1] "DataframeSource" "DirSource" "URISource" "VectorSource" "XMLSource" 2) readers - 텍스트 분석 결과는 다음의 포맷 등으로 표현가능하다> getReaders()[1] "readDOC" "readPDF" "readPlain" "readRCV1" [5] "readRCV1asPlain" "readReut21578XML" "readReut2..
01. 텍스트마이닝(Text Mining)을 위한 패키지 준비
2014. 11. 14.본격적인 텍스트 마이닝에 앞서 아래 패키지들이 설치되어 있는지 먼저 확인한다. 설치되어 있지 않으면 install.packages("tm") 과 같은 식으로 설치한 후 아래와 같이 실행한다. > library("tm") > library("SnowballC") > library("RColorBrewer") > library("ggplot2") > library("Rgraphviz")> install.packages("Rgraphviz")Installing package into ‘C:/Users/fukaeri/Documents/R/win-library/3.1’(as ‘lib’ is unspecified)Warning in install.packages : package ‘Rgraphviz’ is not ..
데이터 읽기, 데이터 프레임, 세분화, 요약 (Data Handling)
2014. 11. 1.1. 텍스트 포맷으로 저장하기1) 엑셀의 데이터를 R 로 가져오기 위해 text 포맷으로 저장한다. 2) 엑셀 프로그램에서 파일 > 다른이름으로저장 > 파일 형식에서 '텍스트 (탭으로 분리)' 선택 2. R 에서 데이터 읽기1) read.table 을 이용해서 R 로 읽어들일 수 있다. > degrees = read.table(file.choose(), sep = "\t", header = TRUE) // sep = "\t" 는 탭으로 구분된다는 의미이고, header = TRUE 는 첫번째 행에 변수 이름을 포함한다는 의미이다. 파일을 선택하는 팝업이 뜨면 읽고자 하는 파일을 선택하면 된다. 3. 데이터 프레임1) 이렇게 읽어들인 값은 data frame 라는 형태로 저장된다. 2) 데이터 프레임은 변..
Information Visualization (14) - R 그래픽 기초 (그래프 그리기 Line Graphs, Curves)
2014. 10. 29.1. 직선 그리기 > plot.new()> plot.window(xlim = c(1, 4), ylim = c(0, 3)) > x = c(1, 2, 3, 4)> y = c(0, 2, 1, 3)> lines(x, y)> axis(1)> axis(2)> box()2. 곡선 그리기 특정 구간 사이에 y = f (x) 형태의 그래프를 그리는 경우가 많은데,하나의 방법은 해당 구간을 잘게 잘라 직선의 모음으로 보는 것이다. 예를 들면, 다음과 같이 정규분포곡선을 그릴 수 있다. > x = seq(-3, 3, length = 1000) // 해당 구간을 1,000개로 쪼갠다> y = dnorm(x) > plot.new()> plot.window(xlim = range(x), ylim = range(y))> lines..
Information Visualization (12) - R 그래픽 기초 (텍스트, 범례)
2014. 10. 25.1. 텍스트 넣기 text(x, y, labels)- x, y : 텍스트가 위치하는 좌표- labels : 삽입되는 문장- col : 텍스트 색깔- srt : 문장의 방향 (수평으로부터 반시계방향으로 각도)- adj : 위치조정 > plot.new()> plot.window(xlim = c(0, 5), ylim = c(0, 10))> axis(1)> axis(2)> box()> text(1,2,"text",srt=0)> text(2,3,"text",srt=90)> text(3,4,"text",srt=180)> text(4,5,"text",srt=270)> text(3,5,"text",srt=180, adj=1) 2. 범례 legend(xloc, yloc,legend = c("Exact", "Approxi..
Information Visualization (11) - R 그래픽 기초 (도형 그리기)
2014. 10. 25.1. 화살표 그리기 arrows(x0, y0, x1, y1, code=int, length=num, angle=num)- x0, y0, x1, y1 는 시작점과 끝점을 의미- code 1 : 화살표가 그려지는 지점이 시작점 2 : 끝점에 그려짐 3 : 선의 양쪽에 화살표 그려짐- length – 화살표의 길이 (단위는 인치)- angle - 화살표의 각도 > plot.new()> plot.window(xlim = c(0, 5), ylim = c(0, 10))> axis(1)> axis(2)> arrows(1, 2, 4, 6, code=2, length=1, angle=45)> 2. 사각형 그리기 rect(x0, y0, x1, y1, col=str, border=str)- x0, y0, x1, y1 은 아..
Information Visualization (10) - R 그래픽 기초 (선 그리기 Adding Disconnected Lines Segments To A Plot)
2014. 10. 24.기본형태 segments(x0, y0, x1, y1) * x0, y0 - 시작점의 좌표 x1, y1 - 끝나는 점의 좌표* 라인모양, 색상, 폭 등 설정 가능 > plot.new()> plot.window(xlim = c(0, 10), ylim = c(0, 10))> axis(1)> axis(2)> segments(1,1,5,7)>
Information Visualization (9) - R 그래픽 기초 (선 그리기Drawing Straight Lines Across A Plot)
2014. 10. 24.기본형태 abline(a=intercept, b=slope) // a = y 절편, b= 기울기abline(h=numbers) // 수직선 긋기abline(v=numbers) // 수평선 긋기* 라인 형태, 색상, 폭 등의 인수는 기존 line() 함수와 마찬가지로 적용가능함 > plot.new()> plot.window(xlim = c(0, 10), ylim = c(0, 10))> axis(1)> axis(2)> abline(2,1)> abline(v=2)> abline(h=6)> box()>
Information Visualization (7) - R 그래픽 기초 (그래프 그리기 Producing The Graph)
2014. 10. 18.기본적인 그래프 생성 코드는 다음과 같다. plot.new() // 새로운 좌표 생성plot.window(xlim = c(0, 1), ylim = c(5, 10)) // x, y 좌표 범위 설정abline(a = 6, b = 3) // 절편이 6이고 기울기가 3인 직선그리기axis(1) // x축 그리기axis(2) // y축 그리기title(main = "The Overall Title") // 타이틀 입력title(xlab = "An x-axis label") title(ylab = "A y-axis label") box() // 박스 그리기 다음과 같이 표현된다.
Information Visualization (6) - R 그래픽 기초 (산포도 Scatter Plot)
2014. 10. 17.이번에 알아볼 것은 산포도(Scatter Plot) 그리는 방법입니다. 먼저 아래 내용을 정해야 합니다. 각각의 단계에 코드를 대응시켜보면 다음과 같습니다. 1) x, y 축 결정> xlim = range(x)> ylim = range(y) 2) 좌표창 로딩> plot.new()> plot.window(xlim = xlim, ylim = ylim) 3) 점 배치> points(x, y) 아래와 같이 산포도 함수를 하나 만듭니다. > scat = function(x, y) {xlim = range(x) // range returns a vector containing the minimum and maximum of all the given arguments.ylim = range(y)plot.new()p..