Processor

【라즈베리파이4】 사이킷런(sklearn) 설치하기

작성자 임베디드코리아 작성일25-12-16 00:55 조회4회 댓글0건
■ 머신 러닝이란?
머신 러닝( Machine Learning)은 인공지능(AI)의 한 분야로, 컴퓨터가 명시적인  프로그래밍 없이 데이터를 통해 학습하고 예측을 수행할 수 있도록 하는 기술입니다. 머신 러닝은 패턴 인식,  데이터 마이닝, 예측 분석 등에 활용됩니다.머신러닝 및 인공지능

■ 머신 러닝의 주요 개념
  ☞ 훈련 데이터와 테스트 데이터
      - 데이터를 훈련 데이터(training data)와 테스트 데이터(test data)로 분리하여 모델을 학습하고 평가합니다.
      - 훈련 데이터는 모델을 학습시키는 데 사용되고, 테스트 데이터는 모델의 성능을 평가하는 데 사용됩니다.
  ☞ 지도 학습과 비지도 학습
      - 지도 학습(Supervised Learning): 입력 데이터와 함께 정답(레이블)이 주어지는 학습 방식입니다. 예: 회귀, 분류.
      - 비지도 학습(Unsupervised Learning): 입력 데이터만 주어지고 정답이 없는 학습 방식입니다. 예: 클러스터링, 차원 축소.
  ☞ 평가 지표
      - 모델의 성능을 평가하기 위한 지표입니다. 예: 정확도(accuracy), 정밀도(precision), 재현율(recall), F1-score 등.


■ Scikit-Learn이란?
  ▷ scikit-learn(사이킷런)은 파이썬을 대표하는 머신러닝 분석을 할 때 유용하게 사용할 수 있는
      오픈 소스 머신러닝 라이브러리입니다 
  ▷ 여러가지 머신러닝 모듈로 구성되어 있습니다.
  ▷ 초심자가 기계학습을 배우기 시작할 때 적합한 라이브러리라고 합니다.
  ▷ Scikit-Learn은 파이썬에서 가장 널리 사용되는 머신 러닝 라이브러리 중 하나로, 다양한 머신 러닝 알고리즘을 제공하며,
      간단하고 일관된 API를 통해 쉽게 사용할 수 있습니다
  ▷ NumPy, SciPy, Matplotlib 라이브러리 위에 구축되는데, 이들 라이브러리는 파이썬에서 수치 계산과
      과학 계산을 위한 인기 있는 도구입니다.
  ▷ Scikit-Learn은 분류, 회귀, 군집화 및 차원 축소 알고리즘과 같은 머신러닝에 필수적인 다양한 도구를 제공합니다.
  ▷ 또한 데이터 정규화, 스케일링 및 인코딩을 위한 다양한 전처리 도구를 포함하고 있습니다.
  ▷ Scikit-Learn은 머신러닝 모델을 구축하기 위해 간단하고 효율적으로 설계되었습니다.
  ▷ 일관된 사용하기 쉬운 API를 사용하여 초보자와 경험이 많은 머신러닝 전문가 모두에게 인기가 있습니다.

■ Scikit learn vs sklearn
  ▷ Scikit-learn과 Sklearn은 데이터 과학자와 머신러닝 전문가들에게 널리 사용되는
      두 가지 인기있는 머신러닝 프레임워크입니다.
  ▷ 이 둘의 주요 차이점은 Scikit-Learn이 패키지의 원래 이름인 반면, Sklearn은 사용자들 사이에서
      일반적으로 사용되는 약어 이름이라는 것입니다.
  ▷ Scikit-Learn은 회귀, 분류, 군집화 및 차원 축소와 같은 다양한 작업을 수행할 수 있는 오픈 소스 머신러닝 라이브러리입니다.   
      - 데이터 분석 및 시각화에 필수적인 다른 널리 사용되는 파이썬 라이브러리인
          NumPy, SciPy 및 Matplotlib 위에 구축되었습니다.
  ▷ Scikit-Learn은 사용하기 쉽도록 설계되어 있으며, 성능과 확장성을 위해 최적화된 코드로 구현되어 있습니다.
  ▷ 반면, Sklearn은 데이터 과학자들이 일반적으로 사용하는 줄임말입니다.
      - Scikit-Learn과 동일한 패키지이지만 Sklearn은 타이핑을 더 쉽게 하기 위해 붙인 이름입니다.
      - 이 두 패키지는 함수, 문서 및 지원을 포함하여 모든 면에서 동일합니다.


■ Scikit-Learn을 사용한 머신러닝
    Scikit-Learn은 분류, 회귀, 군집화, 차원 축소 등 다양한 머신러닝 작업에 사용될 수 있습니다.

  ▷ 분류: Scikit-Learn은 로지스틱 회귀, 결정 트리 및 서포트 벡터 머신과 같은 인기있는 분류 알고리즘을 제공합니다.
  ▷ 회귀: Scikit-Learn은 선형 회귀 및 릿지 회귀를 비롯한 다양한 회귀 알고리즘을 제공합니다.
  ▷ 군집화: Scikit-Learn은 데이터 포인트를 그룹화하는 데 사용되는 k-평균 군집화 및 계층적 군집화와 같은
                다양한 군집화 알고리즘을 제공합니다.
  ▷ 차원 축소: Scikit-Learn은 주성분 분석 (PCA) 및 t-분산 확률적 이웃 내재화 (t-SNE)와 같은
                    고차원 데이터의 차원 축소 기법을 제공합니다.
  ▷ 전처리: Scikit-Learn은 데이터 정규화, 스케일링 및 인코딩을 위한 다양한 전처리 도구를 제공합니다.
Scikit-Learn을 머신러닝에 활용하기 위해서는 해당 라이브러리에서 필요한 모듈을 먼저 가져와야 합니다. 아래는 Scikit-Learn을 가져와 Iris 데이터셋을 불러오는 간단한 예시입니다:

■ 머신 러닝에 Scikit-Learn 사용의 장점
    Scikit-Learn은 머신 러닝 모델을 구축하는 인기 있는 선택의 이유가 되는 여러 가지 장점이 있습니다.

  ▷ 오픈 소스: Scikit-Learn은 무료로 사용할 수 있는 오픈 소스 소프트웨어입니다.
  ▷ 간결성: Scikit-Learn은 간단하고 사용하기 쉽게 설계되었습니다.
                서로 다른 알고리즘 간에 전환하기 쉬운 일관된 API가 있습니다.
  ▷ 효율성: Scikit-Learn은 성능과 효율성을 위해 구축되었습니다.
                대규모 데이터 세트에 최적화되어 있으며 멀티코어 CPU 및 GPU의 이점을 활용할 수 있습니다.
  ▷ 인기: Scikit-Learn은 학계 및 산업 분야에서 활발하게 사용되기 때문에 활발한 커뮤니티와 많은 자원이 제공됩니다

1. 사이킷런(sklearn) 설치하기
  $ sudo apt install python3-sklearn python3-sklearn-lib python-sklearn-doc

2. 예제 실행하기
  $ vi Iris_PCA.py
import numpy as np
import pandas as pd
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score, classification_report
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# 데이터 로드 (예제 데이터 사용)
from sklearn.datasets import load_iris
data = load_iris()
X = pd.DataFrame(data.data, columns=data.feature_names)
y = pd.Series(data.target)

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

# 데이터 스케일링 (표준화)
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)

# 모델 초기화 및 학습
model = LogisticRegression()
model.fit(X_train_scaled, y_train)

# 예측
y_pred = model.predict(X_test_scaled)

# 성능 평가
accuracy = accuracy_score(y_test, y_pred)
report = classification_report(y_test, y_pred)

print(f'Accuracy: {accuracy}')
print(f'Classification Report:\n{report}')

# PCA를 사용하여 데이터 시각화
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_test_scaled)

plt.figure(figsize=(8, 6))
scatter = plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y_test, cmap='viridis')
legend1 = plt.legend(*scatter.legend_elements(), title="Classes")
plt.gca().add_artist(legend1)
plt.title('PCA of Iris Dataset')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.savefig("pca_iris.png")
plt.show()