파이썬 18

NMF 알고리즘을 이용한 유사 문서 검색과 구현(2/2)

NMF 알고리즘을 이용한 유사 문서 검색과 구현(2/2)sklearn을 이용한 구현 조대협 (http://bcho.tistory.com) http://bcho.tistory.com/1216 를 통하여 tf-idf를 이용하여 문서를 벡터화 하고, nmf를 이용하여 문서의 특성을 추출한 다음, 코싸인 유사도를 이용하여 유사 문서를 검색하는 알고리즘에 대해서 알아보았다. 이번글에서는 이 알고리즘을 직접 sklearn을 이용해서 구현해보도록 하자. sklearn은 이용하면 분산 학습을 이용한 대규모 데이타 처리는 불가능하지만, 작은 수의 문서나 모델에는 사용이 가능하다. 무엇보다 sklearn의 경우 대부분의 모델을 라이브러리화 해놓았기 때문에, 복잡한 구현이 없이 쉽게 사용이 가능하다. 전체 소스 코드는 ht..

t-SNE를 이용한 차원 감소 (Dimension reduction)

t-SNE를 이용한 차원 감소 조대협 (http://bcho.tistory.com) PCA 기반 차원 감소의 문제점앞의 글에서 차원 감소에 대한 개념과, 차원 감소 알고리즘의 하나인 PCA 알고리즘에 대해서 살펴보았다.PCA의 경우 선형 분석 방식으로 값을 사상하기 때문에 차원이 감소되면서 군집화 되어 있는 데이타들이 뭉게져서 제대로 구별할 수 없는 문제를 가지고 있다. 아래 그림을 보자 출처 https://www.youtube.com/watch?v=NEaUSP4YerM 이 그림은 2차원에서 1차원으로 PCA 분석을 이용하여 차원을 줄인 예인데, 2차원에서는 파란색과 붉은색이 구별이 되는데, 1차원으로 줄면서 1차원상의 위치가 유사한 바람에, 두 군집의 변별력이 없어져 버렸다.t-SNE이런 문제를 해결하..

클러스터링 #3 - DBSCAN (밀도 기반 클러스터링)

DBSCAN (밀도 기반 클러스터링) 조대협(http://bcho.tistory.com)기본 개념이번에는 클러스터링 알고리즘중 밀도 방식의 클러스터링을 사용하는 DBSCAN(Density-based spatial clustering of applications with noise) 에 대해서 알아보도록 한다.앞에서 설명한 K Means나 Hierarchical 클러스터링의 경우 군집간의 거리를 이용하여 클러스터링을 하는 방법인데, 밀도 기반의 클러스터링은 점이 세밀하게 몰려 있어서 밀도가 높은 부분을 클러스터링 하는 방식이다. 쉽게 설명하면, 어느점을 기준으로 반경 x내에 점이 n개 이상 있으면 하나의 군집으로 인식하는 방식이다. 그러면 조금 더 구체적인 개념과 용어를 이해해보자먼저 점 p가 있다고 할때..

클러스터링 #2 - Hierarchical clustering (계층 분석)

Hierarchical clustering을 이용한 데이타 군집화 조대협 (http://bcho.tistory.com) Hierarchical clustering (한글 : 계층적 군집 분석) 은 비슷한 군집끼리 묶어 가면서 최종 적으로는 하나의 케이스가 될때까지 군집을 묶는 클러스터링 알고리즘이다. 군집간의 거리를 기반으로 클러스터링을 하는 알고리즘이며, K Means와는 다르게 군집의 수를 미리 정해주지 않아도 된다. 참고로 이 글에서 사용된 예제 코드는 https://github.com/bwcho75/dataanalyticsandML/blob/master/Clustering/3.%20Hierarchical%20clustering-IRIS%204%20feature.ipynb 에 저장되어 있다. 예를 ..

파이썬을 이용한 데이타 시각화 #1 - Matplotlib 기본 그래프 그리기

파이썬을 이용한 데이타 시각화 #1 - Matplotlib 기본 그래프 그리기 조대협 (http://bcho.tistory.com) 백앤드 엔지니어와 백그라운드를 가진 경험상, 머신러닝을 공부하면서 헷갈렸던 부분중 하나가, 데이타에 대한 시각화이다. 머신러닝은 모델을 구현하는 것도 중요하지만, 학습할 데이타를 선별하고, 만들어진 모델을 검증하기 위해서는 데이타를 이해하는 것이 필수적이고 이를 위해서는 데이타를 시각화 해서 보는 것이 매우 중요하다. 그동안 그래프를 그리는 것을 스택오버플로우등에서 찾아서 복붙을 해서 사용하다가 matplotlib를 정리해야겠다고 해서 메뉴얼을 봤지만 도무지 이해가 되지 않아서, 결국 온라인 강좌를 들어서 정리해봤는데, 역시 강좌를 들으니까는 훨씬 빠르게 이해가 된다.참고한..

파이썬 전역 변수

파이썬에서 전역변수 사용하기 (2.7X 버전) 조대협 (http://bcho.tistory.com) 파이썬에서 전역 변수를 사용하려고 하니 "Unbound Local Error"가 나더라.파이썬은 로컬 변수를 자바처럼 쓸수가 없다. 잘못된 코드 global_value = 1 def myfunction(): global_value=global_value + 1 올바른 코드 global_value = 1 def myfunction(): global global_value global_value=global_value + 1 글로벌 변수로 쓰려면, 글로벌 변수를 쓰려는 곳에서 global 이라는 키워드로 선언을 해줘야 그 전역 변수를 불러다가 쓸 수 있다.

파이어베이스를 이용한 유니티 게임 로그 분석

파이어베이스를 이용한 유니티 게임 로그 분석 조대협 (http://bcho.tistory.com)모바일 로그 분석일반적으로 모바일 로그 분석은 클라우드 기반의 무료 솔루션을 이용하다가 자체 구축으로 가는 경우가 많다.클라우드 기반의 무료 로그 분석 솔루션으로는 구글 애널러틱스, 야후의 플러리, 트위터의 패브릭 그리고 구글의 파이어베이스 등이 있다.이런 무료 로그 분석 솔루션들을 사용이 매우 간편하고, 핵심 지표를 쉽게 뽑아 줄 수 있으며, 별도의 운영이 필요 없다는 장점을 가지고 있다.그러나 이런 클라우드 기반의 무료 솔루션의 경우에는 요약된 정보들만 볼 수 있고 또한 내가 원하는 지표를 마음대로 지정을 할 수 없기 때문에, 어느정도 서비스가 성장하고 팀의 여력이 되면 별도의 로그 수집 및 분석 솔루션을..

Apache Spark-Python vs Scala 성능 비교

스파크 성능이 안나오면, 우리 회사 데이타팀 팀장왈. 먼저 파이썬으로 짰는지 확인 부터 해보라길래, 파이썬과 스칼라로 만들어진 스파크 성능 차이가 얼마나 나는지 찾아봤더니 다음과 같은 수치가 나왔다. http://emptypipes.org/2015/01/17/python-vs-scala-vs-spark/ (원본 출처) 일단 스파크를 할려면 스칼라는 필수인듯 하다. 간단한 프로토타입핑등에는 파이썬을 사용할 수 있겠지만 결국 프로적션은 스칼라로 최적화해야 할듯.근데. 자바대 스칼라 성능 비교는 없네

Apache Spark - RDD (Resilient Distributed DataSet) 이해하기 - #2

Apache Spark RDD 이해하기 #2 스파크에서 함수 넘기기 (Passing function to Spark) 조대협 (http://bcho.tistory.com) Passing function스파크는 개발자가 비지니스 로직을 함수로 정의한 후에, 이 함수를 스파크 클러스의 노드들로 보내서 수행할 수 있다. 스파크가 지원하는 프로그래밍 언어에 따라서, 이 함수를 넘기는 방법이나 특성이 다른데, 여기서는 Python을 이용하는 방법에 대해서 설명한다. (스칼라는 아직 공부를 못해서) 파이썬으로 함수 넘기기 파이썬으로 함수를 넘기는 방법은 크게 3가지가 있다. 람다 표기법을 이용하는 방식모듈 상의 탑레벨 함수(Top-level function)파이썬 클래스 안에서 함수를 정의하여, 클래스 안에서 그 ..

Numpy Install

NumPy 설치 하기 파이썬으로 머신 러닝을 구현하기 위해서는 수학 라이브러리인 numpy가 필요하다 설치는 http://www.lfd.uci.edu/~gohlke/pythonlibs/#numpy 에서 *.whl 파일을 다운로드 받은후pip install numpy-1.9.2rc1+mkl-cp27-none-win_amd64.whl (64 비트 기준)으로 설치 하면 된다. 설치후 확인을 위해서는 위와 같이 from numpy import * 를 한후에, random.rand(4,4)가 제대로 실행되는지 확인하자 참고머신러닝이나 빅데이타 분석을 위해서는 NumPy 뿐만 아니라 matplot등 다양한 수학 모듈을 깔아야 하는데, 방화벽등이 있거나 하면 깔기가 매우 까다롭다. (의존성 관계도 복잡하고). 그래서..