r
10. 행렬로 전환하여 CSV 포맷으로 저장하기 Conversion to Matrix and Save to CSV
2014. 11. 22.Document-term matrix 를 다른 툴에서 활용할 수 있도록 CSV 파일로 저장하기 위해 단순 행렬로 변환할 수 있다. 아래와 같은 방법으로 행렬 변환이 가능하다.> m dim(m)[1] 10 531R의 계산한계를 넘어서는 경우에는 아래와 같은 에러 메시지가 출력된다.## Error in vector(typeof(x$v), nr * nc) : vector size cannot be NA## In addition: Warning message:## In nr * nc : NAs produced by integer overflow이런 경우에는 밀도가 희박한 term 을 제거하는 것을 고려해볼 필요가 있다. 일단 표준 행렬로 변환되고 나면, write.csv() 를 이용하여 파일로 저장할 수 있다...
09. term의 출현빈도에 대한 분포 구하기 Distribution of Term Frequencies
2014. 11. 22.앞에서 살펴본 term의 출현 빈도에 대한 분포를 구한다 > head(table(freq),15) // Frequency of frequenciesfreq 1 2 3 4 5 6 7 8 9 10 11 13 15 27 51 // 그러니깐 1번 나오는 용어가 362개, 2번 나오는 용어가 82개와 같은 식362 82 31 16 8 11 6 3 1 2 2 1 2 1 1 > tail(table(freq),15)freq 3 4 5 6 7 8 9 10 11 13 15 27 51 56 71 // 71번 나오는 용어는 1개와 같은 식31 16 8 11 6 3 1 2 2 1 2 1 1 1 1 >
08. Exploring the Document Term Matrix
2014. 11. 22.Document-term matrix 를 행렬로 변환하고, 컬럼끼리 값을 합하여 출현빈도를 구할 수 있다.> freq length(freq)[1] 531위의 freq 를 정렬함으로써, 출현 빈도가 가장 높은 term과 가장 낮은 term을 구할 수 있다. > ord freq[head(ord)] // # Least frequent terms (sample @coordinator @delighted @she @two 10,000. 1 1 1 1 1 1 > freq[tail(ord)] // # most frequent termshave will you that and the 15 15 27 51 56 71 > freq[tail(ord,10)] // 갯수 지정도 가능 all but draft this have ..
07. Document-Term행렬 만들기 Creating a Document-Term Matrix
2014. 11. 22.Document-term matrix 란 문서를 행으로, 그리고 용어를 열로 가지는 행렬로, 해당 문서의 해당 용어의 출현빈도를 카운팅해서 알려준다. DocumentTermMatrix() 를 이용하여 해당 행렬을 만들 수 있다. 예를 들면, 다음과 같다. D1 = "I like databases"D2 = "I hate databases",then the document-term matrix would be:IlikehatedatabasesD11101D21011 [출처] http://en.wikipedia.org/wiki/Document-term_matrix아래와 같이 실행해보면 총 10개의 문서에, 503개의 용어가 사용되고 있음을 알 수 있다. > dtm dtmNon-/sparse entries: 51..
06. Stemming 어간추출
2014. 11. 22.Stemming 어간추출 예를 들면, "es", "ed", "s" 와 같은 common word endings english 을 제거하는 알고리즘을 이용한다. SnowballC 패키지의 wordStem() 의 기능을 이용한다(Bouchet-Valat, 2014) 많은 경우에 데이터 분석을 위해 어간을 추출할 필요가 있다. 예를 들어, "example" 과 "examples" 은 동일한 "exampl" 에서 비롯되었다고 할 수 있기 때문이다. 아래 결과를 통해 추출전과 추출후를 비교해보자. > doc[[3]]STRICKLAND: All right. So it will be prior to August 14th or whatever date it is.> doc[[6]]STRICKLAND: Way prior..
05. Preparing the Corpus - 특정 변환
2014. 11. 22.Specific Transformations 의 예 > toString inspect(doc[6]) [[1]]clewell yes im coordinator reading language arts montgomery county public schools suburban district surrounding washington schools elementary schools > doc inspect(doc[6]) [[1]]clewell yes im coordinator reading language arts montgomery county public schools suburban district surrounding WA schools elementary schools
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 ..
ggplot2 패키지 설치 및 기본사용법
2014. 11. 9.※ 본 예제에 사용하는 diamonds dataset 는 ggplot2 패키지에 포함되어 있다. ※ ggplot2 패키지의 설치는 다음과 같이 한다. > install.package('ggplot2') 위 데이터는 정제되지 않은 데이터이므로 아래와 같이 랜덤으로 100개의 샘플을 뽑아낸 dsmall 이라는 dataset 를 이용해서 얘기를 전개해나가고자 한다. > library("ggplot2", lib.loc="~/R/win-library/3.1") > set.set(1410) Error: could not find function "set.set" dsmall qplot(carat, price, data = diamonds) 2. qplot() 은 아래와 같이 변수의 함수를 인수로 가질 수 있음 > ..
데이터 읽기, 데이터 프레임, 세분화, 요약 (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 (15) - R 그래픽 기초 (직선그래프 영역채우기)
2014. 10. 29.> y // y x=1920:1970> plot.new() > plot.window(xlim=c(1920,1970), xaxs="i",ylim=c(46.5,55.5), yaxs="i") > abline(v=seq(1930,1960,by=10), col="gray") //배경 그리드 그리기> abline(h=seq(48,54, by=2), col="gray")> xx=c(1920,x,1970) > yy=c(46.5,y,46.5)> polygon(xx,yy,col="gray") // 다각형 그리기> axis(1)> axis(2, las=1)> box()>
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 (13) - R 그래픽 기초 (축 axis)
2014. 10. 29.1. 축과 주석 axis(1, at=1:4, lab=c("A", "B", "C", "D"))예제의 경우 x축 1, 2, 3, 4 에 tick mark 가 위치하고 각각에 "A", "B", "C", "D" 라고 라벨을 붙인다는 의미- las=. 라벨의 로테이션 결정 (기본값은 0 이며 값에 따라 다음과 같다) las=0 : 항상 축과 평행(parallel) las=1 : 항상 수평(horizontal) las=2 : 항상 축에 대해 수직(perpendicular) las=3 : 항상 수직(vertical) 2. 축의 최대, 최소값 설정 plot.window(xlim=c(0,1), ylim=c(10,20), xaxs="i")- xlim, ylim : x 축, y 축 각각의 최소값과 최대값을 지정하는 것으로 ..
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 (8) - R 그래픽 기초 (선 그리기Adding Connected Line Segments)
2014. 10. 24.기본형태 lines(x, y, lty=str, lwd=num, col=str) 1. lty=int or name선의 스타일 (기본값 "solid")"blank", "solid", "dashed", "dotted", "dotdash", "longdash", "twodash" 등이 있으며 아래 샘플 참조. > plot.new()> plot.window(xlim = c(0, 10), ylim = c(0, 10))> axis(1)> axis(2)> lines(c(0,10),c(1,1),lty="solid")> lines(c(0,10),c(2,2),lty="dashed")> lines(c(0,10),c(3,3),lty="dotted")> lines(c(0,10),c(4,4),lty="dotdash")> lines..
Information Visualization (8) - R 그래픽 기초 (점 추가하기 Adding Points To A Plot)
2014. 10. 18.형식은 다음과 같음points(x, y, pch=int, col=str) pch점의 모양 결정하는 것으로, 1~25 사이의 값은 그래픽 심볼, 33~126 사이의 값은 아스키코드(ASCII code)에서 가져옴특히 21~25 사이의 값에는 경계선의 색(col=)과 배경색(bg=) 옵션 있음 이미지출처 http://www.statmethods.net/advgraphs/parameters.html 아스키코드 이미지출처 http://www.asciichars.com/ col "red", "lightblue" 등과 같이 경계선 색상 설정
Information Visualization (3) - R 그래픽 기초 (원 그리기)
2014. 9. 12.1. 원 그리기 원을 그리는 간단한 R 함수는 없다. 아래는 다각형을 가지고 대략적으로 원을 그리는 방법이다. > plot.new() > plot.window(xlim=c(-1.1,1.1), ylim=c(-1.1,1.1), asp=1) > theta=seq(0,2*pi, length=72) // 180° = π, 2π 즉, 360° 를 72 로 나눈 것이므로 Change of angle = 5° > x=cos(theta) > y=sin(theta) > lines(x,y) > 위의 그림에서 c = 1 이라고 하면, 좌표 X = (a,b) = (a/1, b/1) = (cosA, sinA) 가 된다. theta = seq(0,2*pi, length=72) 의 간격대로 해당 값들을 구해보면 아래와 같다. 아래와..
Information Visualization (2) - R 그래픽 기초 (사각형 그리기 예제, 대각선 가진 사각형, 중첩된 사각형)
2014. 9. 6.사각형 그리기 몇 가지 예제 1. 대각선을 가로지르는 선을 가진 사각형 그리기 > plot.new() ## 새 도면 열기> plot.window(xlim = c(0, 1), ylim = c(0, 1), asp = 1)> rect(xleft = .1, ybottom = .1, xright = .9, ytop = .9) ## rect(xleft, ybottom, xright, ytop) 각 포지션의 벡터값 가진 사각형 그리기> segments(0, 0, 1, 1) ## segments(x0, y0, x1, y1) : 출발점(x0, y0)에서 도착점(x1, y1)으로 선긋기> segments(0, 1, 1, 0) 2. 중첩된 사각형 그리기 > plot.new()> plot.window(xlim=c(0,1..
Information Visualization (1) - R 그래픽 기초 (여백조정, 기본함수목록)
2014. 9. 6.1. 새 도면 준비 그래프를 그릴 새로운 도면을 준비한다.> plot.new() 2. 여백(margin) 조정하기 1) par() 함수는 현재 그래픽 장치의 그래픽 파라메터의 리스트를 수정하는데 쓰인다. 2) 마진을 설정하는 함수의 형식은 다음과 같다. par(mar=c(bottom margin, left, top, right))par(mai=c(bottom margin, left, top, right)) 여기서 par("mar") 은 텍스트의 라인수, par("mai") 는 인치를 나타낸다.그리고 순서는 bottom - left - top - right 이다. 라인수로 마진 크기 조정par(mar = c(5.1, 4.1, 4.1, 2.1))인치단위로 마진 크기 조정 par(mai = c(1.02,..
R 프로그래밍 - 참고자료 Further Resources
2014. 9. 6.CRAN Home Pagehttp://cran.r-project.org/R 업데이트, 패키지 정보 수록, 최근 R 이벤트 알림R Journalhttp://journal.r-project.org/R 과 새로운 R 패키지에 대한 저널R Manualshttp://cran.r-project.org/ > Documentation > Manuals관련 매뉴얼 리스팅, An Introduction to R 부터 볼 것. 전체를 다 볼 필요는 없고 관련있는 섹션 위주로 보면 됨R Forumhttp://www.nabble.com/R-f13819.htmlR 포럼
R 프로그래밍 - R 편집기 R Editors (WinEDT, Tinn-R)
2014. 9. 6.1. 내장형RGui 는 스크립트 윈도우라는 내장된 편집기를 가지고 있다. Syntax highlighting 기능이 없는 등 제한적인 기능을 가지고 있다. Syntax highlighting 은 기능에 따라 코드의 색깔이 달라지는 것을 말한다(예를 들면 주석은 녹색으로 반복문은 빨간색과 같은 식으로 말이다). 게다가 최근의 편집기는 혼란을 줄여주고자 명령문을 자동으로 닫는 기능을 가지고 있다. 따라서 아래에서 언급하는 툴 중 하나를 다운로드 받아 사용하기를 권한다. 2. 기타 R 편집기각광받는 R 편집기로는 WinEDT 가 있습니다. WinEDT 는 상용프로그램입니다.WinEDT 다운로드 http://www.winedt.com 추천할만한 또다른 편집기에는 Tinn-R 이 있습니다. Tinn-R 은 무료프..
R 프로그래밍 - 좋은 R 코드를 작성하기 위한 팁 Tips for Writing Good R Code
2014. 9. 6.1. General1) 코드에 코멘트 달기 - "#" 을 이용하여 아래와 같이 코멘트를 달 수 있다. > load("~/myfirstRobjects.rdata", ex ls.str(ex) # 코멘트 달기 savevector1 : int [1:9] 1 2 3 4 5 6 7 8 9 savevector2 : chr "Yay!" > "#"의 왼편에 위치한 코드만 실행된다.코멘트가 중요한 이유는 여러분이 잊어버리지 않기 위해서도 중요하지만 여러분의 코드를 쓰는 다른 이들을 위해서도 중요하다는 점은 두말할 나위가 없다. 2) 하드 코드를 쓰지 말 것예를 들어, 설사 길이가 변하지 않는다고 하더라도 벡터의 길이와 같은 하드 코드를 쓰지말고 length() 와 같은 함수를 이용해라.아래 예제에서 2번 코드가 더 훌륭한..
R 프로그래밍 - Functions (Custom)
2014. 8. 30.이번에는 R 에 내장된 함수가 아닌 사용자가 사용을 위해 만든 커스토마이징된 함수를 활용하는 방법에 대한 것이다. 커스토마이징된 함수를 이용하기 위해서는 콘솔과 스크립트창을 모두 사용할 수 있지만, 스크립트창을 이용하는게 좀 더 편리하다. 스크립트창은 File > New script 를 이용해서 띄운다. 아래의 예제를 해당 창에 넣어보자. doubledip doubledip(5,-2) [1] 1.778279 > 주의해야할 점은 plot() 이나 c() 처럼 내장된 함수의 이름으로 저장해서는 안된다는 것이다. 내장된 함수의 이름과 동일한지를 확인하기 위해서는 간단히 콘솔창에서 이름을 쳐보면 된다. 또 하나 주의해야할 점은 커스톰 함수를 사용한 후 워크스페이스를 저장하지 않는다면 해당 함수를 사용하기 위해 ..
R 프로그래밍 - Functions (Built in)
2014. 8. 29.내장함수 1. 도움말 보기 1) 해당 함수를 타이핑하면 R 콘솔상에서 해당 함수가 입력값을 어떻게 처리하는지를 간단하게 보여준다. > plot 2) 내장된 도움말 기능을 이용하기 위해서는 해당 함수 앞에 ? 를 붙여 타이핑하면 된다. > ?plotplot() 함수를 어떻게 사용해야하는지에 대한 상세한 설명이 포함된 도움말 파일이 로딩된다. 2. 유용한 함수들함수명기능예제결과값abs()절대값 표시abs(-1)[1] 1sqrt()양의 제곱근 표시sqrt(c(2,4))[1] 1.414214 2.000000source()해당 파일의 스크립트 실행source("nameofmyscript.r")콘솔상에서 스크립트 명령 실행됨seq()수열생성 seq(시작값,끝값, 반복주기)seq(0, 8 ,2)[1] 0 2 4 6 ..
R 프로그래밍 - Types of Output / Exporting Data
2014. 8. 29.1. Types of Output Types of InputTypes of Output delineated files(.csv) delineated files R object (.rdata) R object (.rdata) graphical output (.pdf, .jpg, .png, .bmp, .tiff) 2. How to export data write.csv() : .csv 형태로 저장하기 위한 함수(사용되는 파라메터는 read.csv() 와 동일함) 예를 들어보면, > printvector1 = 1:10 > write.csv(printvector1, file="myfirstoutput.csv") // 데이터, 파일네임순 > getwd()[1] "C:/Users/fukaeri/Documents" ..