본문 바로가기

IT 개발자의 창고

Machine Learning 관련 python 라이브러리

설치 command의 기준은 Mac OS (M1) 기준입니다.

 

텐서플로우

딥러닝 모델을 쉽게 구현할 수 있도록 구글에서 제공하는 라이브러리다. 기본적으로 C++로 구현되어 있고, Python, Java, Go 등의 언어를 지원한다. 이 중 Python에 가장 많은 기능들이 구현되어 있다.

 

설치방법

# tensorflow dependencies 설치
(nlp_exam) $ conda install -c apple tensorflow-deps
# macos용 tensorflow 설치
(nlp_exam) $ python -m pip install tensorflow-macos
# GPU를 사용할 수 있는 plug-in 설치
(nlp_exam) $ python -m pip install tensorflow-metal

 

참고)

tensorflow library를 이용한 python 구동 시 다음과 같은 info log를 발견할 수 있다.

Metal device set to: Apple M1 Pro
2022-07-18 16:35:42.955680: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:305] Could not identify NUMA node of platform GPU ID 0, defaulting to 0. Your kernel may not have been built with NUMA support. 2022-07-18 16:35:42.955988: I tensorflow/core/common_runtime/pluggable_device/pluggable_device_factory.cc:271] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 0 MB memory) -> physical PluggableDevice (device: 0, name: METAL, pci bus id: <undefined>)

이는 tensorflow GPU를 사용하지 않는다고 판단할 수 있는데, 실제로는 GPU를 잘 사용하고 있다. 일종의 bug로 보이지만, Info level로서 크게 문제 없는 로그이니 무시해도 상관없다.

 

싸이킷런

텐서플로는 딥러닝 프로그램을 수행하기 위한 패키지이고, 사이킷런은 머신러닝 프로그램을 수행하기 위한 패키지이다.

머신러닝은 딥러닝을 포함하는 개념으로 인공 신경망 이외에 다양한 기법을 포함하고 있다.

사이킷런 라이브러리에는 지도학습 (Naive Bayes, Decision Trees 등), 비지도학습 (Clustering, Gaussian mixture models 등), 모델 평가 등의 기능을 포함하고 있다.

 

설치방법

(nlp_exam) $ conda install scikit-learn

 

nltk (Natural Language Toolkit)

자연어 처리 기능을 제공하는 라이브러리로 tokenization과 같은 전처리 모듈, 구문분석, 클러스터링, 감정분석 등의 분석 모듈, 시맨틱 추론 모듈 등을 제공한다.

 

설치방법

(nlp_exam) $ conda install nltk

말뭉치 설치

# jupyter notebook을 통해 다음의 python 실행
import nltk
nltk.download()

아래와 같은 다운로드 툴이 실행된다.

NLTK downloader

"all" 을 선택하여 전체 말뭉치를 다운로드한다.

 

spacy

nltk는 주로 교육 및 연구에 널리 사용되며, spacy는 상용 소프트웨어 수준으로 업그레이드 한 라이브러리이다. 자체 기계학습을 통해 텐서플로, 파이토치와 연결할 수 있는 딥러닝 워크플로우를 지원하며, 빠른 속도와 사용이 편리하게 제작되었다. (nltk에서 제공하는 모델은 포함하지 않는다.)

 

설치방법

(nlp_exam) $ conda install spacy
# 영어 모델도 설치한다. (한국어는 지원하지 않는다.)
(nlp_exam) $ python -m spacy download en

 

영어모델을 사용하는 python code

import spacy
nlp = spacy.load('en_core_web_sm')

 

konlpy

한글 자연어 처리를 쉽고 간결하게 처리할 수 있도록 만들어진 오픈소스 라이브러리이다. 국내에 이미 만들어져 사용되는 여러 형태소 분석기를 사용할 수 있고, 어절 및 형태소 단위의 토크나이징 및 구문 분석이 가능하다.

 

설치방법

(nlp_exam) $ pip install konlpy

 

문제점 1) 설치 과정에서 다음과 같은 에러를 발견하게 된다면?

       *********************************************************************************
      Could not find function xmlCheckVersion in library libxml2. Is libxml2 installed?
      Perhaps try: xcode-select --install
      *********************************************************************************
      error: command '/usr/bin/clang' failed with exit code 1
      [end of output]

해결) konlpy 컴파일 시 gcc 컴파일이 필요하여 다음과 같이 x-code를 설치해주어야 한다.

(nlp_exam) $ xcode-select --install

 

문제점 2) 다음 코드 실행 시 에러가 발생할 수 있다.

import konlpy
from konlpy.tag import Okt
okt = Okt()

에러내용

OSError: [Errno 0] JVM DLL not found: /usr/local/Cellar/openjdk/17/libexec/openjdk.jdk/Contents/Home/lib/libjli.dylib

하지만, 해당 파일은 존재하기 때문에 오류 메시지가 잘못된 것처럼 보인다. 오류번호를 보면 "Errno 0"로 내부 코드를 살펴보면 dlopen으로 null을 반환했으나, errno는 설정하지 않은 케이스이다.

여기서 dlopen이 실패한 이유는 JDK가 M1용이 아니어서 호환이 되지 않기 때문이다.

 

해결) M1용 JDK 설치

다운로드 URL: https://www.azul.com/downloads

해당 페이지의 하단 "Download Azul Zulu builds of OpenJDK"에서 원하는 version의 JDK를 선택하여 다운로드 후 설치한다.

macOS - ARM 64-bit JDK version 11

.bash_profile에 다음과 같이 JAVA_HOME 환경 변수를 하단에 추가한다.

export JAVA_HOME=/Library/Java/JavaVirtualMachines/zulu-11.jdk/Contents/Home
export PATH=$PATH:$JAVA_HOME/bin

이 후 환경 변수를 적용한 후 재시도 하면 오류없이 실행될 것이다.

(nlp_exam) $ source ~/.bash_profile

 

넘파이

C언어로 구현된 파이썬 라이브러리로 고성능 수치 계산을 위해 제작된 라이브러리이다. 벡터 및 행렬 연산에 있어 매우 편리한 기능을 제공한다. 

 

설치방법

(nlp_exam) $ conda install numpy

 

판다스

데이터 과학을 위해 필요한 파이썬 라이브러리 중 하나로 편리한 데이터 구조와 데이터 분석 기능을 제공한다.

 

설치방법

(base) $ conda install pandas

 

파이플롯

Matplotlib 내에 포함된 서브 모듈로 시각화를 위한 많은 함수가 존재한다.

 

설치방법

(base) $ conda install matplotlib