머신러닝Machine Learning 알고리즘 라이브러리 싸이킷런scikit-learn

728x90
반응형

싸이킷런 로고

 

사이킷런 홈페이지: https://scikit-learn.org/stable/

 

scikit-learn: machine learning in Python — scikit-learn 1.3.2 documentation

Model selection Comparing, validating and choosing parameters and models. Applications: Improved accuracy via parameter tuning Algorithms: grid search, cross validation, metrics, and more...

scikit-learn.org

 

서론

 

머신러닝 알고리즘은 컴퓨터가 데이터를 통해 학습하고 예측을 수행하게 해주는 방법들을 말합니다. 대표적으로 지도 학습, 비지도 학습, 강화 학습 등의 카테고리로 나뉩니다.

 

1. 지도 학습(Supervised Learning): 입력 데이터(X)와 그에 대응하는 출력 데이터(Y)가 주어졌을 때, 이들 간의 관계를 모델링하는 알고리즘입니다. 즉, 정답이 주어진 상태에서 학습하며, 이를 통해 새로운 입력 데이터에 대한 출력을 예측합니다. 회귀(Regression)와 분류(Classification) 문제가 이에 해당하며, 대표적인 알고리즘으로는 선형 회귀(Linear Regression), 로지스틱 회귀(Logistic Regression), 서포트 벡터 머신(Support Vector Machine), 결정 트리(Decision Tree), 랜덤 포레스트(Random Forest), 그래디언트 부스팅(Gradient Boosting) 등이 있습니다.

2. 비지도 학습(Unsupervised Learning): 입력 데이터만 존재하고, 해당 데이터의 정답 라벨이 없는 상태에서 학습하는 알고리즘입니다. 즉, 데이터의 숨겨진 패턴이나 구조를 찾는 데 초점을 맞춥니다. 군집화(Clustering), 차원 축소(Dimensionality Reduction), 연관 규칙(Association Rules) 등이 이에 해당하며, 대표적인 알고리즘으로는 K-Means, 계층적 군집화(Hierarchical Clustering), PCA(Principal Component Analysis), Apriori, FP-Growth 등이 있습니다.

3. 강화 학습(Reinforcement Learning): 에이전트가 환경과 상호작용하며, 그 결과로부터 얻는 보상을 최대화하는 행동을 학습하는 알고리즘입니다. 이는 일련의 결정을 내리는 문제에 적합하며, 게임 이론, 로봇 제어, 자원 관리 등 다양한 분야에 활용됩니다. 대표적인 알고리즘으로는 Q-Learning, SARSA, Deep Q Network(DQN), Actor-Critic 등이 있습니다.

 

이러한 머신러닝 알고리즘들은 다양한 문제를 해결하고, 특히 복잡하고 대규모인 데이터에서 의미 있는 정보를 추출하는 데 큰 역할을 합니다. 이 머신러닝 알고리즘들을 쉽게 사용하고 구현할 수 있게 돕는 도구가 바로 라이브러리인데, 그 중에서도 특히 파이썬의 sklearn 라이브러리는 이러한 머신러닝 알고리즘을 효율적으로 사용할 수 있게 해줍니다. 다음으로 sklearn 라이브러리에 대해 더 자세하게 설명해드리겠습니다.

 

싸이킷런(Scikit-learn)

 

sklearn, 즉 scikit-learn 라이브러리는 머신러닝을 위한 파이썬 라이브러리로, 2007년에 처음 개발되었습니다. 그 배경에는 몇 가지 중요한 요소들이 있습니다.

1. 접근성: sklearn은 머신러닝을 접근하기 쉽게 만드는 것을 목표로 하였습니다. 이 라이브러리는 사용하기 쉬운 API와 함께 다양한 머신러닝 알고리즘을 제공하므로, 사용자가 복잡한 알고리즘을 직접 구현할 필요 없이 머신러닝을 쉽게 적용할 수 있습니다.

2. 파이썬의 인기: 2000년대 후반에는 파이썬이 데이터 과학 분야에서 인기를 얻기 시작했습니다. 그 이유는 파이썬이 배우기 쉽고, 다양한 분야에 적용할 수 있는 유연성을 가진 언어이기 때문입니다. 이러한 상황에서 파이썬 기반의 머신러닝 라이브러리인 sklearn이 개발되었습니다.

3. 데이터 과학의 급속한 성장: 2000년대 후반에는 빅 데이터와 데이터 과학이 주요 이슈가 되었습니다. 이러한 상황에서 기업들은 데이터로부터 가치를 추출하기 위해 머신러닝 알고리즘을 강력히 필요로 하였고, 이러한 요구를 충족시키기 위해 sklearn이 탄생하였습니다.

4. 과학적 계산 라이브러리와의 통합: 파이썬은 NumPy, SciPy, matplotlib 등의 강력한 과학 계산 라이브러리를 가지고 있습니다.

sklearn은 이러한 라이브러리들과 잘 통합되어 있어, 데이터 전처리, 통계적 분석, 시각화 등의 기능을 쉽게 사용할 수 있습니다. 이렇게 머신러닝을 접근하기 쉽게 만들고, 파이썬의 인기, 데이터 과학의 성장, 그리고 기존의 과학적 계산 라이브러리와의 통합이라는 네 가지 요소가 결합하여 sklearn 라이브러리가 탄생하였습니다. 이로 인해 sklearn은 널리 사용되는 머신러닝 라이브러리 중 하나가 되었습니다.

 

싸이킷런의 사용

 

싸이킷런(scikit-learn)은 머신러닝 모델을 개발하고 활용하는 여러 단계에서 사용됩니다. 주로 다음의 단계들에서 활용되는데, 이는 데이터 분석과 머신러닝 프로젝트의 일반적인 워크플로우를 따릅니다.

 

1. 탐색적 데이터 분석(Exploratory Data Analysis, EDA): 싸이킷런은 기본적인 통계치를 계산하는 도구를 제공하며, 이는 데이터를 이해하는 데 도움이 됩니다. 또한, PCA(Principal Component Analysis)와 같은 차원 축소 도구를 통해 고차원 데이터를 시각화하고 분석하는 데 사용될 수 있습니다.

2. 피처 엔지니어링(Feature Engineering): 싸이킷런은 다양한 데이터 전처리 도구를 제공합니다. 이에는 결측치 처리, 데이터 스케일링, 범주형 변수 인코딩, 피처 선택 등이 포함됩니다. 이 단계에서는 이러한 도구를 사용해 모델 학습에 적합한 형태로 데이터를 변환합니다.

3. 예측 모델 개발(Model Development): 싸이킷런은 다양한 머신러닝 알고리즘을 제공하므로, 이를 사용해 예측 모델을 개발할 수 있습니다. 또한, 교차 검증(Cross-Validation), 그리드 검색(Grid Search) 등의 모델 선택 및 튜닝 도구를 통해 최적의 모델을 선택하고 튜닝할 수 있습니다. 

 

따라서 싸이킷런은 머신러닝 프로젝트의 여러 단계에서 중요한 역할을 하며, 이를 통해 데이터 분석부터 모델 서비스까지의 전체 과정을 수행할 수 있습니다.

 

싸이킷런 사용법

 

싸이킷런(scikit-learn)은 사용하기 위해서는 먼저 해당 라이브러리를 설치해야 합니다.

 

1. 코랩(Colab)이나 아나콘다(Anaconda)와 같은 플랫폼에서는 이미 싸이킷런이 설치되어 있습니다. 따라서 별도의 설치 과정 없이 바로 싸이킷런을 불러와서 사용할 수 있습니다.

 

2. 그러나 설치가 되어있지 않은 환경에서는 먼저 싸이킷런을 설치해야 합니다. 이는 pip를 이용해 간단히 할 수 있습니다. 아래는 싸이킷런을 설치하는 예시 코드입니다.

# install scikit-learn
!pip install -U scikit-learn

 

 

싸이킷런을 설치한 후에는 이것을 불러와서 manifold, MinMaxScaler, train_test_split, RandomForestClassifier를 활용한 코드 예시를 작성해보겠습니다.

 

사용 예시

 

이 예시에서는 붓꽃(Iris) 데이터셋을 사용하겠습니다. 붓꽃 데이터셋은 4개의 특성(꽃받침 길이, 꽃받침 너비, 꽃잎 길이, 꽃잎 너비)을 가지고, 3개의 클래스(세토사, 버시컬러, 버지니카)로 이루어져 있습니다. 머신러닝의 절차 중 탐색적 데이터 분석, 피처 엔지니어링, 예측모델개발의 단계에서 사용하는 것을 예시로 작성하겠습니다.

 

머신러닝의 절차에 대해 궁금하신 분들은 아래 링크를 참조해주시길 바라겠습니다.

https://10yp.tistory.com/32

 

머신러닝(Machine Learning)의 절차와 이해 - 1편

서론 머신러닝(Machine Learning)은 전산을 이용한 빅데이터가 발전하면서 함께 부상하였습니다. 축적되는 데이터를 바탕으로 미래를 예측할 수 있는 모델을 이용하여 다양한 산업에 사용되고 있으

10yp.tistory.com

 

1. 탐색적 데이터 분석(EDA): `manifold` 모듈의 `TSNE` 클래스를 사용해 고차원 데이터를 시각화합니다.

from sklearn import datasets
from sklearn.manifold import TSNE
import matplotlib.pyplot as plt

# load iris dataset
iris = datasets.load_iris()
data = iris.data
target = iris.target

# apply t-SNE
tsne = TSNE(n_components=2, random_state=42)
data_tsne = tsne.fit_transform(data)

# plot the result
plt.scatter(data_tsne[:, 0], data_tsne[:, 1], c=target)
plt.show()

 

탐색적 데이터 분석(EDA)에 대해서는 해당 링크를 참고하여주시길 바라겠습니다.

https://10yp.tistory.com/38

 

머신러닝(Machine Learning)의 절차와 이해 - 탐색적 데이터 분석(Exploratory Data Analysis, EDA)

서론 머신러닝(Machine Learning)의 절차와 이해 - 탐색적 데이터 분석(Exploratory Data Analysis, EDA)에 대해 다뤄보겠습니다. 머신러닝을 위해서는 어떤 문제를 해결할 것인지와 그에 적합한 데이터들을

10yp.tistory.com

 

2. 피처 엔지니어링: `MinMaxScaler`를 사용해 데이터 스케일링을 수행합니다.

from sklearn.preprocessing import MinMaxScaler

# create a scaler
scaler = MinMaxScaler()

# fit the scaler and transform the data
data_scaled = scaler.fit_transform(data)

 

피처 엔지니어링에 대해서는 해당 링크를 참조하여주시길 바라겠습니다.

https://10yp.tistory.com/40

 

머신러닝(Machine Learning)의 절차와 이해 - 피처 엔지니어링(feature engineering)

서론 머신러닝(Machine Learning)의 절차와 이해 - 피처 엔지니어링(feature engineering)에 대해 다루겠습니다. 피처 엔지니어링은 머신러닝의 절차 중 네번째 단계로, 이는 모델의 성능을 크게 좌우하는

10yp.tistory.com

 

 

3. 예측 모델 개발: `train_test_split`과 `RandomForestClassifier`를 사용해 모델을 학습시킵니다. 

from sklearn.model_selection import train_test_split
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score

# split data into train and test sets
X_train, X_test, y_train, y_test = train_test_split(data_scaled, target, test_size=0.2, random_state=42)

# create a model
model = RandomForestClassifier(n_estimators=100, random_state=42)

# train the model
model.fit(X_train, y_train)

# make predictions
predictions = model.predict(X_test)

# print accuracy
print("Accuracy:", accuracy_score(y_test, predictions))

 

예측 모델 개발에 대해서는 해당 링크를 참고하여 주시길 바라겠습니다.

https://10yp.tistory.com/42

 

머신러닝(Machine Learning)의 절차와 이해 - 예측 모델 개발

서론 머신러닝(Machine Learning)의 절차와 이해 - 예측 모델 개발은 과거 및 현재의 데이터를 바탕으로 미래의 결과를 예측하는 모델을 만드는 과정입니다. 이 과정은 주로 세 가지 단계로 이루어집

10yp.tistory.com

 

결론

 

머신러닝(Machine Learning) 알고리즘 라이브러리, 싸이킷런(scikit-learn)은 각 과정에서 활용할 수 있는 알고리즘과 데이터 전처리 도구는 물론 연습을 위한 데이터 셋을 보유하고 있습니다. 이는 딥러닝의 TensorFlow와 같이 딥러닝을 제외한 다른 머신러닝들에서는 가장 범용적이며 많이 사용되는 라이브러리입니다. 그 활용도와 편리함을 직접 경험해보시는 것을 추천드립니다.

반응형