KNN, 서포트 벡터 머신, 의사결정 트리

사전지식 : Python, Iris Dataset, Iris Dataset 블로그 글 링크

머신러닝 알고리즘은 데이터에서 패턴을 찾아내어 예측을 하거나 분류하는 등의 문제를 해결합니다. 지도학습은 레이블이 있는 데이터 셋을 통해 알고리즘으로 데이터를 구별하는 판별식을 만든 후 새로운 데이터가 어떠한 결과를 출력하는지 알아내는 학습 모델 입니다. 즉, 지도학습은 과거의 데이터를 학습해서 결과를 예측하는 방법 입니다. 그럼 ‘지도학습’ 에 해당되는 세 가지 머신러닝 알고리즘 – KNN(K-Nearest Neighbors), 서포트 벡터 머신(Support Vector Machine), 의사결정 트리(Decision Tree) 에 대하여 알아볼까요?

1. KNN(K-Nearest Neighbors)

KNN은 ‘가장 가까운 이웃들이 나를 가장 잘 정의한다’는 간단한 아이디어에서 시작합니다. 새로운 데이터가 들어오면, KNN 알고리즘은 기존 데이터 중에서 가장 가까운 ‘K’개의 데이터를 찾아, 그들의 레이블을 참조하여 새 데이터의 레이블을 예측합니다. 이는 쇼핑몰에서 ‘이 상품을 선택한 다른 고객들이 선택한 상품’을 추천하는 시스템에 비유할 수 있습니다. KNN의 원리는 데이터 포인트의 클래스를 그 주변 K개의 가장 가까운 이웃의 클래스로 예측하는 것입니다.

출처: Towards Data Science

from sklearn.neighbors import KNeighborsClassifier
from sklearn import datasets
from sklearn.model_selection import train_test_split

# 데이터 불러오기
iris = datasets.load_iris()
X_train, X_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.2, random_state=42)

# KNN 모델 학습
knn = KNeighborsClassifier(n_neighbors=3)
knn.fit(X_train, y_train)

# 모델 평가
print("Test Accuracy: ", knn.score(X_test, y_test))

2. 서포트 벡터 머신(Support Vector Machine)

서포트 벡터 머신(SVM)은 머신러닝의 가장 강력한 알고리즘 중 하나로 데이터를 분류하거나 회귀 분석하기 위한 지도 학습 모델입니다. 이는 데이터를 고차원 공간에 매핑하고, 이 공간에서 결정 경계(decision boundary)를 정의합니다. 이 결정 경계는 클래스 간의 마진을 최대화하는 방향으로 설정됩니다. 이 ‘결정 경계’는 서로 다른 분류를 가장 잘 구분하도록 설계되어 있습니다. 쉬운 예로써 공항 검색에서 찾아낸 위험한 물건과 안전한 물건을 구분하는 과정에 비유할 수 있습니다.

출처: Towards Data Science
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn import svm
from sklearn.datasets import load_iris

iris = load_iris()

X = iris.data
y = iris.target

# 데이터를 학습 세트와 테스트 세트로 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1234)

# 데이터 스케일링
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)

# SVM 모델 학습
svm_model = svm.SVC(kernel='linear')
svm_model.fit(X_train, y_train)

# 예측 및 정확도 확인
print('Train accuracy:', svm_model.score(X_train, y_train))
print('Test accuracy:', svm_model.score(X_test, y_test))

3. 의사결정 트리(Decision Tree)

의사결정 트리(Decision Tree)는 머신러닝에서 가장 직관적인 방법 중 하나로 분류와 회귀 문제를 해결하는데 사용되는 모델 입니다. 각각의 ‘노드’에서 데이터의 특성에 따라 분기를 만들고, 최종적으로 ‘리프 노드’에서 결정을 내리는 구조 즉, 데이터의 특징을 기반으로 결정을 내리는데, 이 결정 과정을 나무 구조로 표현합니다. 일상생활에서 의사결정을 내리는 과정을 나무 구조로 표현한 것에 비유할 수 있으며 뿌리에서 시작하여 조건에 따라 갈라져 나가며 최종적으로 잎 노드에서 예측값을 결정합니다.

출처: Towards Data Science
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.datasets import load_iris

iris = load_iris()

X = iris.data
y = iris.target

# 데이터를 학습 세트와 테스트 세트로 분할
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1234)

# 의사결정트리 모델 학습
dt = DecisionTreeClassifier(random_state=1234)
dt.fit(X_train, y_train)

# 예측 및 정확도 확인
print('Train accuracy:', dt.score(X_train, y_train))
print('Test accuracy:', dt.score(X_test, y_test))

사실, 머신러닝은 더 깊게 들어가면 어려운 책 몇권 이상으로도 설명이 필요한 영역이지만 세 가지 모델 모두가 머신러닝을 이해하기 위한 기초적인 모델이기 때문에 간단하게 개념적으로 블로그에 올리게 되었습니다. 이론적인 배경 지식도 중요하지만, 각각의 알고리즘을 실제 데이터셋에 적용해보면서 실제로 코딩하면서 느끼는 경험을 하면 머신러닝에 좀더 쉽게 다가갈 수 있지 않을까요?

MNIST Dataset에 대하여

MNIST는 ‘Modified National Institute of Standards and Technology’의 약자로, 미국의 표준 기술 연구소에서 생성된 원래의 NIST 데이터셋을 수정하여 만들었습니다. 이 데이터셋은 손으로 쓴 숫자들의 이미지를 포함하고 있습니다. 이 데이터셋은 기계 학습 분야의 연구에 널리 사용되며, 특히 이미지 처리를 위한 벤치마크로 사용됩니다.

MNIST 데이터 셋

MNIST 데이터셋은 총 7만 개의 이미지로 구성되어 있습니다. 각 이미지는 28×28 픽셀로 이루어져 있고, 숫자 0부터 9까지를 손으로 쓴 글씨를 담고 있습니다. 이 중 6만 개는 훈련 데이터로, 1만 개는 테스트 데이터로 사용됩니다.

MNIST 데이터셋은 약 1990년대에 Yan LeCun, Corinna Cortes, 그리고 Christopher J.C. Burges에 의해 개발되었다고 합니다. 그들이 MNIST 데이터셋을 처음 만들었을 때, 그들의 주요 목표는 기계학습 알고리즘이 얼마나 잘 작동하는지 평가하고, 다양한 알고리즘 간에 성능을 비교하는 표준적인 벤치마크를 제공하는 것이 목적 이었으나 현재는 이 데이터셋을 생성함으로써, 머신러닝의 ‘비지도학습’ 에 해당하는 알고리즘(로지스틱 회귀, 서포트 벡터 머신, 신경망 등) 을 통해서 보다 큰 규모의 데이터셋의 성능 테스트와 훈련이 가능하게 되었습니다.

데이터셋의 크기와 다양성, 그리고 쉽게 접근할 수 있는 특징 덕분에, 우리가 보통 프로그램언어를 처음 배울때 개발하는 ‘Hello, World!’ 프로그램 처럼 MNIST는 머신러닝과 딥러닝 을 배우면서 처음 시도하는 프로그래밍 이라고 생각하면 될듯합니다.

MNIST 데이터셋은 비교적 간단한 구조를 가지고 있지만, 이미지 인식(캡챠, 사물 이미지 인식 등) 분야에서의 다양한 기법을 실험하고 평가하는 데 매우 유용합니다. Keras 라이브러리를 통해 아래 짧은 코드로 간단히 수행해 볼 수 있습니다.

수행 전 tensorflow 와 keras 가 설치가 되어있지 않으면 꼭 설치해야 합니다.

pip install tensorflow keras
from keras.datasets import mnist
# MNIST 데이터셋을 로드합니다.
(train_images, train_labels), (test_images, test_labels) = mnist.load_data()
# train_images의 shape를 출력합니다.
print(train_images.shape)  # (60000, 28, 28)이 출력됩니다.
# train_labels의 첫 10개를 출력합니다.
print(train_labels[:10])  # [5 0 4 1 9 2 1 3 1 4]와 같이 출력됩

Iris Dataset 에 대하여

Iris 데이터셋은 통계학과 머신러닝에서 자주 사용되는 데이터셋 중 하나입니다. 이 데이터셋은 붓꽃(Iris)의 품종을 분류하기 위한 데이터셋으로, 총 세 가지 품종(Setosa, Versicolor, Virginica)의 정보가 각각 50개씩 총 150개의 샘플로 구성되어 있습니다.

Iris 데이터셋

출처 : Wikipedia

각 샘플은 아래와 같은 네 가지 특징을 가지고 있습니다.

  1. 꽃받침(sepal)의 길이
  2. 꽃받침의 너비
  3. 꽃잎(petal)의 길이
  4. 꽃잎의 너비

Iris 데이터셋의 각 샘플은 이 네 가지 특징에 대한 수치와 그에 해당하는 붓꽃의 품종으로 구성되어 있습니다. 이 데이터셋은 각 특징들 간의 관계를 분석하거나, 머신러닝 모델을 학습시키는데 주로 사용됩니다. Iris 데이터셋은 다양한 머신러닝 알고리즘과 유용한 도구가 포함된 Scikit-learn 라이브러리를 통해서 가져 올수 있습니다.

from sklearn import datasets
iris = datasets.load_iris()

위 코드를 실행하면, Iris 데이터셋이 ‘iris’라는 변수에 저장되게 됩니다. 이후 ‘iris.data’로 데이터를, ‘iris.target’으로 타겟값(붓꽃의 품종)을 확인할 수 있습니다. pip 나 conda 명령어중 한가지 명령어를 통해 Scikit-learn을 설치할 수 있습니다.

pip 명령어 사용시

pip install scikit-learn

Conda 명령어 사용시

conda install scikit–learn

만약 설치 오류가 발생하거나 이미 ScyPi, Numpy 가 설치 되어 있다면 다음 명령어로 수행 합니다.

conda install -c conda-forge scikit-learn

참고로, Scikit-learn이 이미 설치되어 있다면, 별도로 Iris 데이터셋을 다운로드 받을 필요는 없습니다. 정상으로 설치가 되었다면 다음 소스를 통해 예제가 출력되는지 확인 해 봅니다.

from sklearn import datasets
 
# Iris 데이터셋 로드
iris = datasets.load_iris()
 
# 데이터셋에서 처음 5개의 샘플을 출력
print(“First 5 samples:”)
print(iris.data[:5])
 
# 해당 샘플들의 타겟값(붓꽃의 품종) 출력
print(“\nTarget of the samples:”)
print(iris.target[:5])

node.js 를 사용한 웹 애플리케이션 개발 가이드

node.js 란?

node.js 는 오픈소스로서 첫 탄생은 2009년 5월 27일 처음 소개되었고 Ryan Dahl 개발자에 의해서 웹 브라우저에서 동작하는 JavaScript 엔진인 V8을 구글이 개발했던 걸 보고 영감을 받았다고 합니다. 그리고 “이것을 서버에서도 사용할 수 있을까?”라는 생각이 들었고 V8 엔진을 이용하여 JavaScript 코드를 서버에서 실행할 수 있도록 개발하기 시작했습니다. 이렇게 탄생한 것이 바로 “노드(Node.js)” 입니다. 이렇게 해서, 개발자들은 웹 브라우저에서만 사용하던 JavaScript를 이제 서버에서도 사용할 수 있게 되었습니다.

node.js는 JavaScript 런타임 환경으로, 웹 애플리케이션 개발에 매우 유용한 도구입니다. node.js는 가장 큰 특징은 비동기 처리 방식입니다. Ryan은 이 비동기 처리를 위해 이벤트 루프(event loop)와 콜백(callback) 함수를 도입했습니다. 다양한 동시 연결과 트랜젝션을 효율적으로 처리할 수 있게 되었고 놀라울 정도로 빠른 속도와 안정성 대중화로 PayPal, Netflix, Uber, LinkedIn 등 세계적으로 유명한 기업들이 node.js 를 활용하여 서비스를 제공하고 있습니다.

Ryan과 더 많은 개발자들이 더 쉽게 모듈과 라이브러리를 공유하기 위해 npm(node package manager)을 만들게 되었습니다. 이 패키지 매니저를 통해 개발자들은 수많은 모듈과 라이브러리를 손쉽게 설치하고 관리할 수 있게 되었고 의존성 관리, 종속성, 버전관리 등 다양한 패키지를 설치하고 관리할 수 있습니다.

이제 node.js를 사용하여 웹 애플리케이션을 개발하는 방법에 대하여 다음과 같이 npm 명령어를 통해 설치하는 방법 과 실제 서버를 띄우는 것 까지 연습해 보겠습니다.

1. node.js와 rpm 설치하기

첫 단계는 node.js와 npm 을 설치하는 것입니다. node.js 공식 웹사이트에서 다운로드하여 설치합니다. 설치가 완료되면 터미널 또는 명령 프롬프트에서 node -vnpm -v 명령어로 설치 여부를 확인합니다.

2. 프로젝트 생성과 초기화

새로운 프로젝트 폴더를 생성하고, 터미널에서 해당 폴더로 이동합니다. 다음 명령어를 실행하여 프로젝트를 초기화합니다:

npm init

프로젝트에 대한 정보를 입력하면 package.json 파일이 생성됩니다.

3. express.js 프레임워크 설치

express.js는 node.js 를 사용하기 위한 웹 프레임워크 입니다. 다음 명령어를 사용하여 express.js를 설치 합니다.

npm install express

4. 간단한 웹 서버 구축 하기

새로운 파일 app.js를 생성하고 다음과 같은 코드를 입력합니다:

const express = require('express');
const app = express();
const port = 3000;

app.get('/', (req, res) => {
  res.send('Hello, World!');
});

app.listen(port, () => {
  console.log(`서버가 http://localhost:${port} 에서 실행 중입니다.`);
});

5. 웹 서버 실행하기

터미널에서 다음 명령어를 실행하여 웹 서버를 실행합니다:

node app.js

크롬 브라우저에서 http://localhost:3000으로 접속하여 “Hello, World!”가 띄워지면 성공!

크롤링(Crawing) 을 하려면 어떤 기술을 알아야할까?

크롤링을 하려면 기본적으로 알아야 할 기술들이 있습니다. 다음에 소개할 HTML, CSS, 그리고 JavaScript는 크롬이나 엣지같은 웹 브라우저 에서 보여지는 웹 페이지를 구축하고 인터랙티브하게 만드는 데 꼭 필요한 핵심 기술입니다.

HTML, CSS, JavaScript 에 대한 이해

HTML은 HyperText Markup Language의 약자로, 웹 페이지의 구조를 생성하는 언어입니다. HTML 태그는 문서의 다른 부분에 대한 레이블을 생성하며, 이를 통해 텍스트를 제목, 단락, 링크 등으로 변환할 수 있습니다.

ㅇㅇㅇ

JavaScript는 웹 페이지를 동적이고 인터랙티브하게 만드는 스크립트 언어입니다. 이를 통해 사용자와 상호 작용하는 웹 페이지를 만들 수 있으며, 클라이언트 측에서 실행되어 웹 페이지의 로딩 속도를 향상시키는 데 도움이 됩니다. 또한, 현대 웹 개발에 필수적인 프레임워크와 라이브러리(예: React, Angular, Vue.js 등)를 지원합니다.

CSS는 Cascading Style Sheets의 약자로, 웹 페이지의 디자인과 레이아웃을 책임지는 스타일 규칙을 설정하는 언어입니다. CSS를 이용하면, 글꼴, 색상, 간격, 배경 이미지 등 웹 페이지의 모든 시각적 요소를 제어할 수 있습니다.

파이썬 프로그래밍

아나콘다, conda, pip, 터미널 환경 등

라이브러리, 패키지 등

BeautifulSoup 은 HTML과 XML 문서를 파싱하는데 사용됩니다. 웹 페이지의 DOM(문서구조) 을 쉽게 탐색하고 필요한 데이터를 추출할 수 있습니다. 크롤링에 있어서 가장 중요한 패키지 중의 하나로 HTML 을 구성하는 모든 태그를 찾고, 각 태그의 text 값, 설명, url 등 모든 속성을 알아내는 것이 가능합니다.

Requests 라이브러리는 HTTP 요청을 보내는 데 사용합니다. 즉, 웹 페이지의 HTML을 가져올 수 있으며, 웹 서버에 GET, POST, DELETE 등의 요청을 보낼 수도 있습니다. 파이썬 소스 상에서는 크롤링 하고자 하는 사이트의 주소를 가져올 때 사용합니다.

Selenium은 웹 브라우저 자동화 도구로, 웹 애플리케이션을 테스트하거나 크롬 브라우저를 상에서 사용자가 직접 브라우저 작업을 수행하는 것처럼 웹 페이지를 탐색하고 상호 작용할 수 있습니다. 버튼을 클릭하고 페이지를 스크롤 하며 우리가 크롬이나 엣지같은 브라우저를 통해 웹 서핑하는 방식 그대로 액션을 수행할 수 있기 때문에 셀레니움은 크롤링 기술에 필수적 입니다.

여기까지 필수 기술에 대하여 간략하게 소개하고, 각 기술에 대한 자세한 정보는 다음 포스팅에 상세히 올리도록 하겠습니다.

LSTM(Long Short-Term Memory) 쉽게 이해하기

LSTM(Long Short-Term Memory)은 순환 신경망(Recurrent Neural Network, RNN)의 한 종류로서, 시퀀스 데이터 (시계열 데이터, 텍스트 등)를 처리하기 위해 신경망 입니다. 이전에 배운 것들을 기억할 수 있도록 컴퓨터 의 “일기장” 을 바로 LSTM 이라고 할 수 있습니다. 즉, “일기장”을 찾아보면서 이전에 무슨 일이 있었는지 확인을 할 수 있으며 미래에 무슨 일이 일어날지 예측을 할 수 있습니다.

예를 들어, 작곡을 할 때, LSTM은 이전에 어떤 음이 나왔었는지 기억하고, 그 다음에 어떤 음이 나와야 할지 도와줍니다. 현재도 실제로 아티스트들은 이미 Ai를 통해 작곡을 하고 수 있습니다.

RNN(순환 신경망)은 이전 시점의 출력을 현재 시점의 입력에 포함시켜 정보를 순환시키는 구조를 가지고 있습니다. 하지만, 시퀀스가 길어질수록 이전 시점의 정보가 잘 전달되지 않는 ‘장기 의존성 문제’ 를 해결하기 위해 ‘셀 상태’라는 개념을 도입했습니다. 셀 상태는 LSTM 셀을 통과하는 동안 정보를 전달하는 ‘Information Highway’와 같습니다. LSTM에서는 게이트라는 구조를 통해 셀 상태에 어떤 정보를 추가하거나 제거할지 결정합니다. 이로 인해 LSTM은 긴 시퀀스에서도 이전 정보를 잘 기억하고 전달할 수 있습니다.

이 이미지는 LSTM “셀”의 내부 구조를 보여줍니다. 각각의 작은 박스는 다른 역할을 하는 “게이트”를 나타내고, 화살표는 정보가 어떻게 이동하는지를 보여줍니다. 이 중 가장 중요한 부분은 가장 위에 있는 수평선인 ‘셀 상태’입니다. 바로 “일기장”과 같은 역할을 하며 이를 통해 LSTM은 장기적인 정보를 저장하고 전달할 수 있습니다.

LSTM 활용사례

1. 자연어 처리(Natural Language Processing, NLP): LSTM은 텍스트 데이터에서 잘 작동하므로, 감성 분석, 텍스트 생성, 기계 번역 등 다양한 NLP 작업에 활용될 수 있습니다.

2. 시계열 예측(Time Series Prediction): LSTM은 시간에 따른 패턴을 학습할 수 있으므로, 주식 가격 예측, 날씨 예측 등 시계열 데이터의 예측에 사용될 수 있습니다.

3. 음성 인식(Speech Recognition): LSTM은 시간에 따라 변화하는 음성 신호를 처리하는 데 유용하므로, 음성 인식 기술에도 사용됩니다.

4. 음악 생성(Music Generation): LSTM은 시퀀스 데이터를 생성하는 데에도 사용될 수 있습니다. 이러한 특성을 이용해 음표의 시퀀스를 학습하고 새로운 음악을 생성하는 데에 사용될 수 있습니다.

Conda 와 Pip 차이

Conda와 Pip는 파이썬 패키지를 관리하는 데 사용되는 두 가지 인기있는 도구입니다. 프로젝트나 개발을 하다보면 보통 두가지 도구의 차이를 이해하지 못하고 함께 사용하는 경우가 있습니다. Conda와 Pip의 차이점과 각각의 사용 방법을 살펴보고자 합니다.

Conda 란?

Conda : Anaconda(Anaconda: 아마존의 아나콘다 뱀에서 이름을 따왔다고 함) 클라우드 저장소와 Continuum 소프트웨어 사의 패키지 저장소에서 패키지를 관리합니다. Conda의 장점은 바로 의존성을 자동으로 해결해주는 강력한 의존성 관리 기능을 그리고 Anaconda를 통해 가상환경을 제공합니다.

특히 TensorFlow를 설치할 때 다양한 패키지와 라이브러리에 의존하며, 이러한 의존성을 수동으로 설치를 해야하는 단점을 한방에 해결해줍니다.

각각의 프로젝트 패키지 충돌을 피할 수 있고 독립적인 환경으로 구성이 가능하며, 프로젝트별 패키지 관리와 버전 관리를 용이하게 합니다. 그러나 단점으로는 PyPI보다 패키지 수가 상대적으로 적을 수 있고 일부 특정한 패키지나 최신 버전의 패키지가 conda에는 없을 수 있습니다. 이 경우에는 pip를 사용하여 추가 패키지를 별도 설치해야 하며 또한 패키지들에 대한 버전 관리도 별도로 해줘야 합니다.

Pip 란?

Pip : Pip Installs Packages 또는 Pip Installs Python

Pip

Pip는 Python Package Index (PyPI)에서 패키지를 관리합니다. PyPI (Python Package Index)는 파이썬 패키지 생태계의 중심이며, 거의 모든 오픈 소스 파이썬 패키지들이 PyPI에 호스팅되어 있습니다. 따라서 Pip를 통해 매우 다양한 패키지들을 손쉽게 설치할 수 있습니다.빠근 업데이트, 지속적인 패키지 관리가 장점이지만 의존성 관리와 시스템 레벨 패키지 관리 측면에서는 Conda에 비해 제약이 있을 수 있습니다. 따라서 개발 환경에 따라 적절한 도구를 선택하면 됩니다.

Conda 와 Pip 비교

Anaconda의 conda를 통해 가상환경을 사용하면 종속성 관리, 플랫폼 별 지원, 가상환경 격리와 같은 여러 장점을 얻을 수 있습니다. 그러나 패키지 수, 환경 크기, 버전 관리와 같은 몇 가지 단점등을 고려해서 개발 프로젝트의 요구 사항과 상황에 맞게 판단하여 적절한 패키지 관리 방식을 선택할 수 있습니다.

CondaPip
정의크로스 플랫폼, 언어-중립적 패키지 관리자와 환경 관리 시스템파이썬으로 작성된 패키지들을 설치하고 관리하는 도구
관리파이썬 패키지 뿐만 아니라 R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN 등 다양한 언어의 패키지를 관리할 수 있음파이썬 패키지만 관리
환경 관리각 프로젝트를 위한 독립적인 환경을 생성하고 관리하는 기능을 내장, 여러 버전의 파이썬을 동시에 관리 가능가상환경(virtualenv)를 사용하여 독립적인 환경을 만들 수 있지만, 기본적으로는 이 기능이 없음
패키지 의존성패키지간의 의존성을 관리하고, 필요한 패키지와 함께 설치하는 기능을 내장의존성 관리는 가능하지만, 패키지 설치 시 필요한 모든 의존성을 자동으로 설치하지는 않음
설치 소스Anaconda Cloud 및 기타 채널에서 패키지를 가져옴PyPI(Python Package Index)에서 패키지를 가져옴
주요 명령어conda install
conda update
conda remove, conda create –name envname
conda activate envname
conda deactivate
pip install
pip uninstall
pip freeze
pip list

아나콘다(Anaconda)

아나콘다(Anaconda)는 데이터 과학, 머신러닝, 딥러닝 등의 과학 계산 작업을 쉽게 수행할 수 있는 배포판이다. 아나콘다는 패키지 관리자로서의 역할을 하며, 파이썬과 여러 종류 라이브러리를 쉽게 설치하고 관리할 수 있는 환경을 제공하는 것이 장점이다.

아나콘다의 핵심 기능 중 하나는 ‘환경(Environment)’ 을 생성하고 관리하는 것. 환경은 특정한 프로젝트를 위해 필요한 파이썬 버전과 패키지를 독립적으로 관리할 수 있고, 이를 통해 여러 프로젝트가 서로 다른 라이브러리나 파이썬 버전을 요구할 경우에도 각각의 프로젝트에 맞는 환경 관리할 수 있다.

Anaconda Navigator : 배포판을 설치하게되면 만나게 되는 화면이다.