프로그래밍 Programming
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 ..
Plot geoms(geometric objects) (1) - 추세선 그리기 (span, gam, lm, rlm)
2014. 11. 9.Geom(geometric object)은 데이터를 보여주는데 사용되는 객체의 유형으로, gplot 은 산포도에 다양한 형태의 geom 을 표현할 수 있다.이 외에도 "histogram", "freqpoly", "density", "bar" 등 다양한 객체가 존재한다. geom 설명 "point" 산포도에 사용. qplot() 사용시 기본값 "smooth" 데이터의 추세선을 나타내고, 표준오차의 정도를 나타내는 데 사용 "boxplot" 상자그림, 상자수염도, 분포를 요약해서 나타내는 데 사용 "path", "line" 데이터 포인트 사이에 선으로 연결. line 은 왼쪽에서 오른쪽으로 그려지는 반면, path 는 어느 방향으로든지 가능하다. 1. 추세선 그리기 무수한 데이터 포인트로 이루어진 산포도로는..
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 (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..
Information Visualization (5) - R 그래픽 기초 (사각형을 이용한 나선형 그리기 Spiral Squares)
2014. 10. 17.Spiral Squares 이번에는 사각형을 이용한 나선 그리기입니다. > plot.new()> plot.window(xlim = c(-1, 1), ylim = c(-1, 1), asp = 1)> square = seq(0, 2 * pi, length = 5)[1:4] // 0에서 2π 사이를 5등분한 후 그 중 0에서부터 4개의 값만 취합니다> n = 51 // 사각형 갯수> r = rep(1.12, n) // 1.12를 n 만큼 반복> r = cumprod(r) // cumprod() function returns the cumulative multiplication results.> r = r/r[n]> theta = seq(0, 2*pi, length = n)> for (i in n:1) {x =..
Information Visualization (4) - R 그래픽 기초 (나선형 그리기)
2014. 10. 16.나선형 그리기 Drawing a Spiral 나선이란 반경이 점차 증가하는 원의 형태라고 보면 된다. 각점의 x, y 좌표는 다음과 같이 정의된다.여기서 R 은 반경을 뜻한다. 아래 명령은 (0,0) 에서 시작하여 30번 회전하는 나선을 만든다. 1 라디안은 원둘레 위에서 반지름의 길이와 같은 길이를 갖는 호에 대응하는 중심각의 크기로 다음과 같다.1 rad = 180°/π, 따라서 2π = 360° theta = seq(0, 30*2*pi, by = 2*pi/72) 위식에서 보듯이 각을 나타내는 theta 값은 0 에서 시작해서 2*pi/72 (360°/72 = 5°) 간격으로 30*2*pi (30*360°, 30번 회전할 때까지)가 될때까지 증가한다. R = theta/max(theta)위 식에서 보..
오라클 트리거 trigger 현황 보기
2014. 9. 18.SELECT tri.trigger_name triggername, tri.status status, obj.status validation, tri.table_name tablename, tri.table_owner ownerFROM SYS.ALL_OBJECTS obj, SYS.ALL_TRIGGERS triWHERE tri.owner = ' ' AND obj.object_type = 'TRIGGER' AND obj.object_name = tri.trigger_name AND obj.owner = tri.ownertri.owner 에 오너 이름 넣고 조회하면 됨.
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번 코드가 더 훌륭한..