데이터분석2016.05.12 18:49

난 일주일에 세번!!!! Kaggle에 올라온 Famous Script를 따라서 해보고 감상평과 내용요약을 하고자 한다.


1. 주제

Kaggle에서는 사용자들이 Public Dataset을 가지고 분석한 스크립트와 보고서를 보고 Voting을 한다. 그중 가장 많은 아마존의 Find Food의 리뷰 분석 실습이다.. 데이터는 스탠포드에서 제공하고 2012년 10월에 아마존 사용자들의 568,454 리뷰 데이터를 모은것이다.

데이터 구성은 csv로 아래와 같다.

  • Id
  • ProductId - unique identifier for the product
  • UserId - unqiue identifier for the user
  • ProfileName
  • HelpfulnessNumerator - number of users who found the review helpful
  • HelpfulnessDenominator - number of users who indicated whether they found the review helpful
  • Score - rating between 1 and 5
  • Time - timestamp for the review
  • Summary - brief summary of the review
  • Text - text of the review

그리고 내가 선정한 스크립트는 바로 Ben Hamner이란 분이 올린 script가 되시겠다. 참고로 8개의 voting을 받았다. 


library(RSQLite)
library(tm)
library(wordcloud)

library(RSQLite)
db <- dbConnect(dbDriver("SQLite"), "../input/database.sqlite")

reviews <- dbGetQuery(db, "
SELECT *
FROM Reviews
LIMIT 10000")

make_word_cloud <- function(documents) {
  corpus = Corpus(VectorSource(tolower(documents)))
  corpus = tm_map(corpus, removePunctuation)
  corpus = tm_map(corpus, removeWords, stopwords("english"))
  
  frequencies = DocumentTermMatrix(corpus)
  word_frequencies = as.data.frame(as.matrix(frequencies))
  
  words <- colnames(word_frequencies)
  freq <- colSums(word_frequencies)
  wordcloud(words, freq,
            min.freq=sort(freq, decreasing=TRUE)[[400]],
            colors=brewer.pal(8, "Dark2"),
            random.color=TRUE)  
}

png("wordcloud.png")
make_word_cloud(reviews$Text) 
dev.off()


분명 데이터도 sqlite에서 잘 뽑아와서 corpus를 munging하고 wordcloud함수도 잘 생성되었으나... 쉬운예제임에도불구하고 그림이 안 나옴.. 

실패되시겠습니다. 그래도 여튼 원래장소에서 가져와서붙이고 내가 한걸로.. ㅡ.ㅡ

저작자 표시
신고

'데이터분석' 카테고리의 다른 글

Kaggler's Day #8  (0) 2016.06.10
Kaggler's Day #7  (0) 2016.06.08
Kaggler's Day #6  (0) 2016.05.31
Kaggler's Day #5  (0) 2016.05.27
Kaggler's Day #3  (0) 2016.05.16
Kaggler's Day #1  (0) 2016.05.12
Posted by 억사마
분류없음2015.05.06 18:58

파워셀을 이용하면 되고 스크립트는 다음과 같다.


아래 &match는 바꿀 문자열  &replacement는 변환할 문자열로 입력하되 하위에도 *slf* 라고 되어있는 부분은 직접 넣어줘야하는듯.


$match = "swtichstr" 

$replacement = "convertedstr"


$files = Get-ChildItem $(get-location) -filter *sif* -Recurse


$files |

    Sort-Object -Descending -Property { $_.FullName } |

    Rename-Item -newname { $_.name -replace $match, $replacement } -force




$files = Get-ChildItem $(get-location) -include *.* -Recurse 


foreach($file in $files) 

    ((Get-Content $file.fullname) -creplace $match, $replacement) | set-content $file.fullname 

}


read-host -prompt "Done! Press any key to close."

저작자 표시
신고
Posted by 억사마
IT/후기2015.03.13 13:51

아주 간만에 흥미로운 책을 읽었다. Polyglot 이라고 프로그래밍을 여러개 할 줄 아는 능력을 갖추라는 메시지가 담긴 책이다.

저자 임백준씨의 책은 대학교때 한손으로 뽑을 정도로 적게 읽었던 책중에 행복한 프로그래밍의 책부터 한권도 빠짐없이 보고 있다. 

아는 것이 참 많으신듯. 람다와 클로저의 개념도 쉽게 설명을 해주시고 많은 레퍼런스도 공유를 해주셨다.



스택오버플로우 사이트는 개발자면 다 아는 사이트이다. 이 사이트를 만든 사람 중 아트우드는 조엘 온 소프트웨어 저자 ,조엘 스폴스키와    stackoverflow를 만들고 이곳을  떠나서 대화 담화 의견의 교환 등을 의미하는 discourse.org 라는 웹사이트를 개발한다. 위키북스라는 책도 찾아보자. 



ㅇ Podcast

  'ted neward podcast'라고 검색하면 여럿 나옴.


ㅇ 람다와 클로저 

람다는 익명 메서드라고 보며, 코드조각 혹은 표현을 다른 객체나 메서드에 전달하기 위한 표현식이고. 

클로저는 외부에서 정의된 변수를 참조하는 코드조각 혹은 표현


public void foo()  {

int i = 0;

JButton  button = new JButton("Click me");

button.addActionListener( new ActionListener() {

// 이책에선 아래의 함수 정의 자체가 행사코드 

라고 표현

@Override

public void actionPerformed(ActionEvent e) {

System.out.println(i);

}

});

}


에서,  System.out.println(i);에서 i가 빠지면 람다이긴 하나 클로저가 아닌거라는 말이다.


ㅇ 코드의 변경불가능성 (블로흐 effective java)

 - 객체의 상태를 변경시키는 메서드를 제공하지 마라 

 - 클래스가 상속되지 못하도록 하라 

 - 모든 필드를 final로 선언하라

 - 모든 필드를 private로 선언하라

 - 변경불가능성을 만족시키지 못하는 컴포넌트에  대한 접근을 통제하라.

-  닐 게프터 vs 블로흐  (닐 게프터는 자바는 꽁꽁 얼어붙은 심해였다.)



ㅇ Scala 사용예

사회적 그래프를 역정규화된 사용자 ID의 리스트 형태로 저장하기 위해 Flock이라는 도구를 사용 

Hawkwind라는 스칼라로 구현된 서비스를 사용 : 트위터 사용자 검색엔진

호스버드 Hosebird : 공공 검색엔진에게 스트림으로 전송, http 기반의 지속적인 연결 시스템. 스칼라를 이용해서 jETTY 위에 우리만의 시스템 구현


시라는 것은 궁국의 압축이다. 감정의 철학과 깨달음과 메시지와 소통을, 치열한 사색과 고민으로 여과하여 간결한 언어 안에 압축시킨 것이라는 글귀에 시 한권 읽어야겠다는 생각도 들었다. 프로그래밍과 참 유사해야한다라는 말에 공감이 간다.



[형식 언어의 정의를 위한 새로운 접근법과 오테론에서의 응용] 라는 논문도 찾아서 보면 프로그래밍의 원리 이해에 도움이 될것 같다.




아래의 함수 프로그래밍 개념을 "Functional Programming for Java Developer(저자 Dean Wampler)"라는 책을 보고 익히자.

- 변경불가능성

- 일급함수

- 람다와 클로저

- 고차함수

- 재귀

- 게으른 평가

- 함수 합성

- 모나드


저작자 표시
신고

'IT > 후기' 카테고리의 다른 글

PyconKR 2016 정리  (0) 2016.08.16
Polyglot Programming  (0) 2015.03.13
2013 JCO 후기  (0) 2013.02.23
Posted by 억사마