카테고리 없음

chapter 1 도미 이진분류

유방울 2023. 4. 10. 19:35

이진분류

이진 분류 : 머신러닝에서 2개 클래스 중 하나를 고르는 문제

 

matplotlib(맷플롯립) : 파이썬에서 과학계산용 그래프를 그리는 대표적인 패키지

 

scikit-learn : 머신러닝 패키지, 각 특성의 리스트를 세로 방향으로 늘어뜨린 2차원 리스트로 만들어야 함

way : zip(), 리스트 내포 구문

for 문은 zip()함수로 length와 weight 리스트에 원소를 하나씩 거내서 l과 w에 할당함

-> [l,w]가 하나의 원소로 구성된 리스트가 만들어진다

fish_data = [[l,w] for l, w in zip(length, weight)]
fish_data

[[25.4, 242.0],
 [26.3, 290.0],
 [26.5, 340.0],
 [29.0, 363.0],
 [29.0, 430.0],
 [29.7, 450.0],
 [29.7, 500.0],
 [30.0, 390.0],
 [30.0, 450.0],
이하 생략

정답 데이터 만들기

어떤 생선이 도미인지 빙어인지알려주기

도미, 빙어를 1과 0으로 표현

정답이라고 생각하는 것을 1로 표현하면 됨

fish_target = [1] * 35 + [0] * 14
print(fish_target)

k-근접 알고리즘

: 가장 가까운 직선거리에 어떤 데이터가 있는지 살피기

but 데이터가 아주 많으면 사용하기 어려움

데이터가 크면 메모리가 많이 필요, 직선거리를 계산하는데 시간 오래 걸림

: fit() 메서드에 전달한 데이터를 모두 저장하고 있다가 새로운 데이터가 등장하면 가장 가까운 데이터를 참고해 도미인지 비어인지 구분!

: 클래스의 기본값은 5개

n_neighbors 매개변수로 바꿀 수 있음!

from sklearn.neighbors import KNeighborsClassifier

# 클래스의 객체 만들기
kn = KNeighborsClassifier()

# 클래스 훈련 fit()
kn.fit(fish_data, fish_target)

# 모델 평가 score()
kn.score(fish_data, fish_target)
# 길이 30, 무게 600 예측
# 1로 도미라고 예측 성공!
# predict()
kn.predict([[30,600]])

_fit_X 에 fish_data, _fit_y에 fish_target 속성 가지고 있음 !

print(kn._fit_X)
print(kn._fit_y)