지피디아 » [파이썬] 빅데이터분석 scikit-learn(sklearn) 활용하기

[파이썬] 빅데이터분석 scikit-learn(sklearn) 활용하기

[파이썬] 빅데이터분석 scikit-learn(sklearn) 활용하기

scikit-learn (일반적으로 sklearn으로 줄여서 표기됨)은 파이썬에서 사용할 수 있는 머신러닝 라이브러리입니다. scikit-learn은 다양한 머신러닝 알고리즘, 데이터 전처리 기능, 모델 평가 도구 등을 제공하여 머신러닝 모델을 개발하고 평가하는 데 도움을 줍니다.

빅데이터 분석에서 다른 모듈과 함께 빠른 전처리를 할 수 있게 도와줍니다.

Sklearn이란?

Sklearn(scikit-learn)은 오픈 소스로 개발되었으며, 파이썬의 다른 데이터 분석 및 과학 관련 라이브러리인 NumPy, SciPy, Matplotlib와 통합하여 사용할 수 있습니다. 이를 통해 데이터의 로딩, 전처리, 모델 학습, 예측, 평가 등을 포괄적으로 수행할 수 있습니다.

scikit-learn은 지도 학습(Supervised Learning)과 비지도 학습(Unsupervised Learning) 알고리즘을 모두 지원합니다. 지도 학습의 경우 회귀(Regression), 분류(Classification)와 같은 작업을 수행할 수 있으며, 비지도 학습의 경우 군집화(Clustering), 차원 축소(Dimensionality Reduction) 등의 작업을 지원합니다. 또한, 사용하기 쉬운 API를 제공하고 있으며, 다양한 예제와 튜토리얼을 통해 사용 방법을 익힐 수 있습니다. 또한, scikit-learn은 머신러닝 커뮤니티에서 널리 사용되고 있는 라이브러리이기 때문에 다양한 지원 자료와 커뮤니티 지원을 받을 수 있습니다.

SKlearn 사용 방법

설치방법

cikit-learn은 일반적으로 파이썬 패키지 관리자인 pip를 통해 설치할 수 있습니다. 기본적으로 scikit-learn은 파이썬 패키지로 제공되지 않기 때문에, 별도로 설치해야 합니다. 다음 명령을 사용하여 scikit-learn을 설치할 수 있습니다

pip install scikit-learn

위 명령을 실행하면, pip가 인터넷에서 scikit-learn 패키지를 다운로드하고 설치합니다. 만약 파이썬 환경이 Anaconda와 같은 패키지 관리자를 사용하고 있다면, 다음 명령을 통해 scikit-learn을 설치할 수 있습니다

conda install scikit-learn

설치가 완료되면, scikit-learn을 사용할 수 있습니다. 다음과 같이 import 문을 사용하여 라이브러리를 가져올 수 있습니다

import sklearn

sklern 활용 방법

데이터 전처리

Min-Max 스케일링: 데이터의 특성을 0과 1 사이의 값으로 조정합니다. sklearn.preprocessing.MinMaxScaler를 사용합니다.

from sklearn.preprocessing import MinMaxScaler

# 예시 데이터
data = [[10], [5], [3], [2]]

# Min-Max 스케일링을 위한 scaler 객체 생성
scaler = MinMaxScaler()

# 데이터 스케일링
scaled_data = scaler.fit_transform(data)

print(scaled_data)


표준화(Standardization): 데이터의 평균을 0으로, 표준 편차를 1로 만들어 데이터의 분포를 조정합니다. sklearn.preprocessing.StandardScaler를 사용합니다.

from sklearn.preprocessing import StandardScaler

# 예시 데이터
data = [[10], [5], [3], [2]]

# 표준화를 위한 scaler 객체 생성
scaler = StandardScaler()

# 데이터 표준화
standardized_data = scaler.fit_transform(data)

print(standardized_data)

지도 학습

분류(Classification): 레이블이 있는 데이터를 사용하여 학습하고, 새로운 데이터의 클래스를 예측합니다. sklearn.linear_model.LogisticRegression, sklearn.ensemble.RandomForestClassifier 등의 분류 알고리즘을 사용합니다.

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.metrics import accuracy_score

# 붓꽃 데이터 로드
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=42)

# 로지스틱 회귀 모델 생성 및 학습
model = LogisticRegression()
model.fit(X_train, y_train)

# 예측
y_pred = model.predict(X_test)

# 정확도 평가
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)


회귀(Regression): 입력 데이터와 연속적인 출력 값 사이의 관계를 모델링합니다. sklearn.linear_model.LinearRegression, sklearn.ensemble.GradientBoostingRegressor 등의 회귀 알고리즘을 사용합니다.

from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error

# 보스턴 주택가격 데이터 로드
boston = load_boston()

# 특성과 타겟 데이터
X = boston.data
y = boston.target

# 훈련 데이터와 테스트 데이터 분리
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 선형 회귀 모델 생성 및 학습
model = LinearRegression()
model.fit(X_train, y_train)

# 예측
y_pred = model.predict(X_test)

# 평균 제곱 오차 계산
mse = mean_squared_error(y_test, y_pred)
print("Mean Squared Error:", mse)

모델 평가

교차 검증(Cross-validation): 데이터를 여러 개의 부분 집합으로 나누어 모델을 평가합니다. sklearn.model_selection.cross_val_score 함수를 사용합니다.

from sklearn.model_selection import cross_val_score
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris

# 붓꽃 데이터 로드
iris = load_iris()

# 특성과 타겟 데이터
X = iris.data
y = iris.target

# 로지스틱 회귀 모델 생성
model = LogisticRegression()

# 교차 검증 수행
scores = cross_val_score(model, X, y, cv=5)  # 5-fold 교차 검증

print("Cross-validation scores:", scores)
print("Mean accuracy:", scores.mean())


성능 평가 지표: 정확도(Accuracy), 정밀도(Precision), 재현율(Recall), F1 점수(F1-score) 등 다양한 평가 지표를 계산합니다. sklearn.metrics 모듈에서 제공되는 함수들을 사용합니다.

from sklearn.metrics import accuracy_score, precision_score, recall_score, f1_score
from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 붓꽃 데이터 로드
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=42)

# 로지스틱 회귀 모델 생성 및 학습
model = LogisticRegression()
model.fit(X_train, y_train)

# 예측
y_pred = model.predict(X_test)

# 정확도 평가
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

# 정밀도 평가
precision = precision_score(y_test, y_pred, average='macro')
print("Precision:", precision)

# 재현율 평가
recall = recall_score(y_test, y_pred, average='macro')
print("Recall:", recall)

# F1 점수 평가
f1 = f1_score(y_test, y_pred, average='macro')
print("F1-score:", f1)

sklern 사용 규칙

pandas는 한번 import 한 뒤 부터 변수 뒤에 pd.read 이런식으로 사용하는데, sklearn.metricsd은 왜 from으로 시작할까요?

pandas의 경우, 일반적으로 import pandas as pd와 같이 pd라는 짧은 별칭으로 import하며, 판다스의 모듈과 함수를 사용할 때는 pd.function_name()과 같은 형식으로 호출합니다. 이는 판다스를 사용하는 개발자들 간에 일관성을 유지하고 코드의 가독성을 높이기 위한 관례입니다.

scikit-learn의 경우, 모듈과 함수의 이름을 보다 명확하고 직관적으로 사용할 수 있도록 설계되었습니다. 예를 들어, sklearn.metrics 모듈의 accuracy_score 함수는 이름 그대로 정확도를 계산하는 함수입니다. 이러한 구조는 scikit-learn의 다양한 모듈과 함수를 사용할 때 코드를 더 직관적이고 명확하게 만들어 줍니다. 따라서 scikit-learn에서는 from sklearn.metrics import accuracy_score와 같이 from을 사용하여 필요한 함수를 직접 import하는 형태를 많이 사용합니다.

이러한 라이브러리마다의 작명 규칙은 개발자 커뮤니티에서의 합의와 관례에 따라 결정되며, 라이브러리의 사용성과 가독성을 고려하여 설계됩니다.

You cannot copy content of this page

위로 스크롤