2024 동계 모각코 5주차

강리아·2025년 2월 10일
0

2024 동계 모각코

목록 보기
5/5

오늘의 목표 : 기계학습 공부하기

기계학습이란?

기계학습은 주어진 데이터를 보고 컴퓨터가 판단 방법을 학습하도록 만드는 기술이다.

기계학습의 종류

기계학습은 일반적으로 가르쳐주는 "교사(또는 정답, 레이블)"의 존재 여부에 따라 크게 지도 학습비지도 학습으로 나누어진다. 그리고 상태와 액션을 압력으로 받아 에이전트가 환경과 상호작용하며 평가와 보상에 따른 학습을 하는 강화학습으로 분류할 수 있다.

지도 학습

컴퓨터는 "교사"에 의해 주어진 예제와 정답(혹은 레이블)을 제공받는다. 지도학습의 목표는 입력을 출력에 매핑시키는 일반적인 규칙을 학습하는 것이다.

비지도 학습

외부에서 정답(레이블)이 주어지지 않고 학습 알고리즘이 스스로 입력에서 어떤 구조를 발견하는 학습이다. 흔히 자율 학습이라고도 부르는 이 학습을 사용하면 데이터에서 숨겨진 패턴을 발견할 수 있다. 자율 학습은 대표적인 것이 클러스트링이다. 클러스트링이란 자동으로 그룹핑하는 것이다.

강화학습

평가와 보상을 통해서 학습을 수행하는 방법이다.

기계학습 구현

Handwritten Digits (MNIST) 데이터셋을 이용해 기계학습을 구현한다.

구현하기

데이터 불러오기

from sklearn.datasets import load_digits
from sklearn.model_selection import train_test_split
from sklearn import svm, metrics
import matplotlib.pyplot as plt
import numpy as np

digits 데이터셋 로드

digits = load_digits()
images = digits.images
labels = digits.target

이미지를 1차원 배열로 변환

n_samples = len(images)
flat_images = images.reshape((n_samples, -1))

학습 데이터와 테스트 데이터 분할

X_train, X_test, y_train, y_test = train_test_split(flat_images, labels, test_size=0.5, random_state=42)

KNN 모델

from sklearn.neighbors import KNeighborsClassifier
knn_model = KNeighborsClassifier()
knn_model.fit(X_train, y_train)
knn_predictions = knn_model.predict(X_test)

정확도

from sklearn.metrics import mean_squared_error, r2_score
accuracy = knn_model.score(X_test, y_test)
print('accuracy_',accuracy)

출력 :

accuracy_ 0.9755283648498332

모델 성능 평가

print("KNN 모델 성능 평가:")
print(metrics.classification_report(y_test, knn_predictions))
print("정확도:", metrics.accuracy_score(y_test, knn_predictions))

출력

KNN 모델 성능 평가:
              precision    recall  f1-score   support

           0       0.99      1.00      0.99        82
           1       0.97      1.00      0.98        89
           2       1.00      1.00      1.00        83
           3       0.99      0.95      0.97        93
           4       0.99      1.00      0.99        93
           5       0.98      0.96      0.97        99
           6       0.99      0.98      0.98        98
           7       0.95      1.00      0.97        87
           8       0.95      0.94      0.95        83
           9       0.96      0.93      0.95        92

    accuracy                           0.98       899
   macro avg       0.98      0.98      0.98       899
weighted avg       0.98      0.98      0.98       899

정확도: 0.9755283648498332

SVM 모델

import sklearn.svm as svm
svm_model = svm.SVC()
svm_model.fit(X_train, y_train)
svm_predictions = svm_model.predict(X_test)

정확도

from sklearn.metrics import mean_squared_error, r2_score
accuracy = svm_model.score(X_test, y_test)

print('accuracy_',accuracy)

출력 :

accuracy_ 0.9721913236929922

모델 성능 평가

print("SVM 모델 성능 평가:")
print(metrics.classification_report(y_test, svm_predictions))
print("정확도:", metrics.accuracy_score(y_test, svm_predictions))

출력 :

SVM 모델 성능 평가:
              precision    recall  f1-score   support

           0       0.99      1.00      0.99        82
           1       0.98      1.00      0.99        89
           2       1.00      1.00      1.00        83
           3       0.99      0.91      0.95        93
           4       1.00      1.00      1.00        93
           5       0.99      0.97      0.98        99
           6       0.99      0.98      0.98        98
           7       0.93      0.99      0.96        87
           8       0.90      0.96      0.93        83
           9       0.95      0.91      0.93        92

    accuracy                           0.97       899
   macro avg       0.97      0.97      0.97       899
weighted avg       0.97      0.97      0.97       899

정확도: 0.9721913236929922

0개의 댓글