티스토리 뷰
분류 (classification): 여러 개의 종류(클래스)에서 하나를 구별하는 것
이진분류 (binary classification) : 두 개의 클래스에서 하나 고르기
- 이진분류 : 도미와 빙어 분류하기
1. 데이터 확인 : matplotlib(맷플롯립) 사용
matplotlib : 파이썬에서 과학계산용 그래프를 그리는 패키지
코드
length = ... length에 대한 데이터
weight = ... weight에 대한 데이터
import matplotlib.pyplot as plt
plt.scatter(length, weight)
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
결과 : 그래프가 그려짐
2. 사이킷런으로 이용할 데이터 2차원 리스트 데이터로 만들어주기.
사이킷런은 2차원 리스트만 데이터로 사용할 수 있기 때문에 기존 데이터를 2차원 리스트 데이터로 만들어준다.
2차원 리스트 데이터란 리스트 안의 리스트. 즉, [[길이, 무게], [길이, 무게] ....] 이런 구조이다.
코드
# 도미 데이터 35개
bream_length = [도미 길이 데이터...]
bream_weight = [도미 무게 데이터...]
# 빙어 데이터 14
smelt_length = [빙어 길이 데이터...]
smelt_weight = [빙어 무게 데이터...]
# 데이터 합치기
length = bream_length + smelt_length
weight = bream_weight + smelt_weight
# for문으로 2차원 리스트로 만듦 -> why? 사이킷런은 2차원 리스트의 데이터를 사용함.
fish_data = [[l,w] for l, w in zip(length, weight)]
print(fish_data) # 결과 : [[길이, 무게], [길이, 무게]...]
fish_target = [1]*35 + [0]*14
print(fish_target) # 결과 : [1,... *35, 0,... *14]
3. 머신러닝 프로그램 사용
scikit-learn(사이킷런)의 K-Nearest Neighbors (k-최근접 이웃) 알고리즘을 사용할 예정
- K Nearest Neighbors Algorithm : K-최근접 이웃 알고리즘
fit()메서드를 통해 훈련 진행 : 전달된 데이터 저장. predict()메서드로 새로운 데이터를 예측하면 기존 데이터에서 가장 가까운 데이터를 참고하여 평가
KNeighborsClassifier()은 k-최근접 이웃 분류 모델을 만드는 사이킷런 클래스이다.
KNeighborsClassifier클래스의 데이터 참고 기본값은 5이다. 데이터 참고 개수는 n_neighbors 매개변수로 바꿀 수 있다.
과정
(1) 임포트
from sklearn.neighbors import KNeighborsClassifier
: sklearn에 있는 k-Nearest Neighbors 알고리즘을 사용하겠다.
(2) 임포트한 KNeighborsClassifier클래스의 객체를 만든다.
(3) 훈련 : 데이터 기준을 찾기 위해 객체를 학습시킨다.
fit()메서드 : 사이킷런 모델을 훈련할 때 사용하는 메서드. 처음 두 매개변수로 훈련에 사용할 특성과 정답 데이터 전달
(4) 정확도 : 객체 훈련이 잘 되었는지 평가
score()메서드 : 훈련된 사이킷런 모델의 성능 측정. 처음 두 매개변수로 특성과 정답 데이터를 전달. 정답과 비교하여 올바르게 예측한 개수의 비율을 반환.
(5) 예측 : 새로운 데이터의 정답 예측.
predict()메서드 : 사이킷런 모델을 훈련하고 예측할 때 사용하는 메서드. 특성 데이터 하나만 매개변수로 받는다.
코드
# 머신러닝 프로그램
# (1) 임포트
from sklearn.neighbors import KNeighborsClassifier
# (2) 객체 만들기
kn = KNeighborsClassifier()
# (3) 훈련
kn.fit(fish_data, fish_target)
# (4) 평가
kn.score(fish_data, fish_target)
# k-Nearest Neighbors Algorithm
# (5) 예측
kn.predict([30, 600])
추가 과정
(1) _fit_X 속성에는 fish_data를 모두 가지고 있음.
(2) _y 속성에는 fish_target을 모두 가지고 있음.
(3) n_neighbors 매개변수로 참고 데이터 개수 바꾸기
# 추가 코드
# (1) fish_data
print(kn._fit_X)
# (2) fish_target
print(kn._y)
# (3) n_neighbors
kn10 = KNeighborsClassifier(n_neighbors = 10) # 참고 데이터를 10개로 한 kn10모델
kn10.fit(fish_data, fish_target)
kn10.score(fish_data, fish_target) # 값은 1
'인공지능' 카테고리의 다른 글
[YOLOv8] helmet detection project4 _ 최종 (0) | 2024.06.09 |
---|---|
[Colab] 꿀팁 및 주의사항 (1) | 2024.06.07 |
[colab] 런타임 연결 유지 (0) | 2024.06.06 |
[YOLOv8] helmet detection project1 (0) | 2024.05.15 |
[Python] 머신러닝 : split input data, test data (0) | 2023.02.07 |
- Total
- Today
- Yesterday
- streamlistener
- 다인승
- 터틀그래픽 명령어
- 에러발생
- 터틀그래픽예제
- YOLO
- 오븐시계
- UnsupportedClassVersionError
- springboot
- Kkma
- tweepy
- gradleload오류
- SPRING오류해결
- baekjoon
- yolov8
- 10828번
- 사람수세기
- 사람검출
- 다인승탑승
- 파이썬
- JAVA오류해결
- randrange
- 백준
- 문제풀이
- Turtle Graphic
- python공부
- database연결
- randint
- 터틀그래픽
- konlpy
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |