핀아의 저장소 ( •̀ ω •́ )✧
[ML] 혼자 공부하는 머신러닝_1장 본문
💡 학습 목표
1. 인공지능, 머신러닝, 딥러닝의 차이점 이해하기
2. 구글 코랩, 주피터 노트북 사용법 배우기
3. 머신러닝 알고리즘(K-최근접 이웃 알고리즘) 구현하기
목차
- 인공지능 vs 머신러닝 vs 딥러닝 차이점
- 구글 코랩
- 머신러닝 알고리즘
- K-최근접 이웃 알고리즘을 사용하여 생선 데이터 이진 분류 모델 학습
1️⃣ 인공지능 vs 머신러닝 vs 딥러닝 차이점
✅ 인공지능
- 인공지능이란 사람처럼 학습하고 추론할 수 있는 지능을 가진 시스템을 만드는 기술
- 인공지능의 종류로는 강인공지능과 약인공지능으로 나눌수 있음
- 강인공지능이란 인공일반지능이라고 불리며 사람과 구분하기 어려운 지능을 가진 컴퓨터를 의미함
- 약인공지능이란 음성 비서, 자율 주행, 음악 추천, 기계 번역 등 특정 분야에서 사람의 일을 도와주는 보조 역할만 가능함
✅ 머신러닝
- 규칙을 프로그래밍하지 않아도 자동으로 데이터에서 규칙을 학습하는 알고리즘을 연구하는 분야
- 통계학과 수학 이론 기반으로 머신러닝 알고리즘은 발전 했으나 최근 머신러닝 알고리즘은 경험을 바탕으로 발전을 하고 있음
- 사이킷런은 대표적인 머신러닝 파이썬 라이브러리임
✅ 딥러닝
- 머신러닝 알고리즘 중에 인공 신경망을 기반으로 한 방법들을 통칭하여 딥러닝이라 부름
- 대표적인 프로젝트로 알파고가 있으며 최근 빠르게 딥러닝 알고리즘은 빠르게 발전중임
- 대표적인 딥러닝 라이브러리로는 구글에서 개발한 텐서플로와 페이스북에서 개발한 파이토치가 있음
2️⃣ 구글 코랩
구글 코랩은 웹 브라우저에서 파이썬 프로그램을 테스트하고 저장 할 수 있는 온라인 에디터를 제공함
3️⃣ 머신러닝 알고리즘
💡 머신러닝 알고리즘 중 하나인 K-최근접 이웃 알고리즘을 사용하여 2개의 종을 분류(이진 분류)하는 머신러닝 모델을 훈련함
이진분류에 사용된 데이터 셋은 Kaggle의 생선 데이터 데이터를 사용했으며 데이터의 특성을 기준으로 모델을 훈련하고 모델의 정확도를 측정하여 모델의 성능을 파악함
- K-최근접 이웃 알고리즘
- 가장 간단한 머신러닝 알고리즘 중 하나이며 어떤 규칙을 찾기보다는 인접한 샘플(이웃)을 기반으로 예측을 수행함
- 이진 분류
- 두개의 종류(클래스) 중 하나를 고르는 문제를 이진 분류라 함 일반적으로 양성 데이터는 1, 음성 데이터는 0의 값으로 레이블링함
- 훈련
- 머신러닝 알고리즘이 데이터에서 규칙을 찾는 과정 또는 모델에 데이터를 전달하여 규칙을 학습하는 과정
- 특성
- 데이터를 표현하는 특징을 의미함(길이, 무게 등)
- 정확도
- 훈련 과정에서 정답을 몇 개 맞혔는지를 백분율로 나타낸 값임 사이킷런에서는 0~1 사이의 값으로 출력됨
- 정확도 = (정확히 맞힌 개수) / (전체 데이터 개수)
✅ K-최근접 이웃 알고리즘을 사용하여 생선 데이터 이진 분류 모델 학습
생선 데이터 셋 정의
#도미 데이터
bream_length = [
25.4, 26.3, 26.5, 29.0, 29.0, 29.7, 29.7, 30.0, 30.0, 30.7, 31.0, 31.0,
31.5, 32.0, 32.0, 32.0, 33.0, 33.0, 33.5, 33.5, 34.0, 34.0, 34.5, 35.0,
35.0, 35.0, 35.0, 36.0, 36.0, 37.0, 38.5, 38.5, 39.5, 41.0, 41.0
]
bream_weight = [
242.0, 290.0, 340.0, 363.0, 430.0, 450.0, 500.0, 390.0, 450.0, 500.0, 475.0,
500.0, 500.0, 340.0, 600.0, 600.0, 700.0, 700.0, 610.0, 650.0, 575.0, 685.0,
620.0, 680.0, 700.0, 725.0, 720.0, 714.0, 850.0, 1000.0, 920.0, 955.0, 925.0,
975.0, 950.0
]
#빙어 데이터
smelt_length = [
9.8, 10.5, 10.6, 11.0, 11.2, 11.3, 11.8,
11.8, 12.0, 12.2,12.4, 13.0, 14.3, 15.0
]
smelt_weight = [
6.7, 7.5, 7.0, 9.7, 9.8, 8.7, 10.0,
9.9, 9.8, 12.2, 13.4, 12.2, 19.7, 19.9
]
#전체 생선 데이터 및 데이터 레이블링
length = bream_length+smelt_length
weight = bream_weight+smelt_weight
fish_data = [[l, w] for l, w in zip(length, weight)]
fish_target = [1]*35 + [0]*14
'''
print(fish_target)
[1, 1, 1, ... 0, 0, 0]
#도미(양성), 빙어(음성)
'''
K-최근접 이웃 알고리즘 정의 및 훈련
사이킷런 라이브러리에서 K-최근접 이웃 알고리즘을 구현한 클래스인 KNeighborsClassifier를 사용함
- n_neighbors 매개변수로 이웃의 개수를 지정함(default: 5)
위에서 정의한 데이터(fish_data, fish_target)를 KNeighborsClassifier 객체에 전달하여 양성 클래스(도미)를 찾기 위한 기준을 학습 시킴
이러한 과정을 훈련이라 부르며 사이킷런에서는 fit() 메서드를 사용하여 수행하고 성능을 측정하기 위해 score() 메서드를 사용함
from sklearn.neighbors import KNeighborsClassifier
#KNeighborsClassifier 객체 생성
kn = KNeighborsClassifier()
#데이터 전달 및 훈련
kn.fit(fish_data, fish_target)
#훈렴된 모델의 정확도 출력
kn.score(fish_data, fish_target)
'''
결과 : 1.0
'''
새로운 생선 데이터 종류 예측
길이 30, 무게 600의 특징을 가지고 있는 새로운 생선 데이터의 종류를 예측함
- [30, 600]의 특징을 가진 생선의 위치를 파악
- 사람이 판단 했을 때 새로운 생선의 종류는 주위에 존재하는 생선 데이터를 기준으로 도미(bream)로 분류 할 수 있음
- 사이킷런에서 predict() 메서드를 사용하여 예측을 수행함
#길이 30, 무게 600인 새로운 생선 데이터를 전달하여 종류 예측
kn.predict([[30, 600]])
'''
결과 : 1
'''
'Big Data > ML & DL' 카테고리의 다른 글
[ML] 혼자 공부하는 머신러닝_5장 (0) | 2023.06.01 |
---|---|
[ML] 혼자 공부하는 머신러닝_4장 (0) | 2023.05.30 |
[ML] 혼자 공부하는 머신러닝_3장-2 (0) | 2023.05.23 |
[ML] 혼자 공부하는 머신러닝_3장-1 (1) | 2023.05.22 |
[ML] 혼자 공부하는 머신러닝_2장 (1) | 2023.05.17 |
Comments