이진분류
이진 분류 : 머신러닝에서 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)