Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- CSS
- useEffect
- 혼공머신
- 에러해결방안
- 알고리즘
- TS
- 초기값 설정하기
- 백준 #코딩테스트 #코테 #알고리즘
- 타입스크립트
- 머신러닝
- reactmemo
- 혼공챌린지
- Redux
- styledcomonents
- REACT
- 구조분해할당
- 리액트
- 백준 #코딩테스트
- typeScript
- 혼자공부하는머신러닝딥러닝
- 딥러닝
- 유니티 #게임개발
- 코딩테스트
- error맛집
- 백준
- js
- 혼자공부하는머신러닝
- 혼공단
- axios
- clipboardapi
Archives
- Today
- Total
좌충우돌 개발자의 길
3강 : 마켓과 머신러닝 본문
기본 용어
- 샘플 : 각각의 데이터들 (ex/ 25.4cm, 500g)
- 특성 : 데이터의 속성 (ex/길이, 무게)
scatter 연속 사용
- scatter 연속 사용시, 하나의 산점도에 중첩하여 나타나게 되어 있음
- 즉, 하나의 그래프에 두개의 데이터가 동시에 들어간다
- 각 데이터마다 색깔을 달리해서 보여준다
smelt_length = [9.8, 10.5, 10.6]
smelt_weight = [9.7, 9.5, 7.2]
plt.scatter(bream_length, bream_weight)
plt.scatter(smelt_length, smelt_weight)
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
- 출력결과
도미와 빙어 데이터 합치기
- 사이킷런이 기대하는 데이터 형태로 바꿔줘야한다.
리스트 내포
- 리스트 안에 for 문이 있는 형태를 리스트 내포라고 한다.
fish_data = [[l, w] for l, w in zip(length, weight)]
→ length와 weight을 zip으로 묶은 다음. length는 l로 weight은 w로 하나씩 꺼낸고 [l, w]의 형태로 만들어줌
정답 준비
- 어떤게 도미이고 어떤게 빙어인지 안알려주면 머신러닝이 제대로 처리 못하기 때문에 뭐가 뭔지 알려주는 코드가 필요하다
fish_target = [1]*35 + [0]*14
→ 찾으려는 데이터를 1로 두고 안찾으려는 데이터는 0으로 둔다 ⇒ 이진분류
→ 여기선 도미가 1 빙어가 0
k-최근접 이웃
- k-최근접 이웃을 구현한 알고리즘을 만들어낼 수도 있지만 이미 구현되어 있는 라이브러리를 사용하자
# k-최근접 이웃을 구현한 것을 import함
from sklearn.neighbors import KNeightborsClassifier
#클래스 객체를 kn으로 저장 (kn을 머신러닝 모델이라고 함)
kn = KNeightborsClassifier()
#fit으로 두 데이터를 머신러닝으로 분간하게 함
kn.fit(fish_data, fish_target)
#얼마만큼 잘 학습되었는지 확인(어느 정도 정확한지)하기 위해 score 사용함
kn.score(fish_data, fish_target)
- fit 메소드 : 사이킷런에 있는 다른 클래스에서도 있어서 다른 클래스 사용할 때 사용 가능
- socre 메소드 결과로 1.0나오면 백퍼센트 다 맞춘 거임
새로운 생선 예측하기
#predict 메소드를 사용하여 예측하기
kn.predict([[30,600]]
#결과값으로 1일 출력됨 -> 1은 도미
array([1])
- 주의점 : kn.fit이 2차원으로 리스트가 작성되어 있기 때문에 predict도 2차원 리스트로 작성해야한다
- K-최근접 이웃은 주위에 바라볼 샘플 5개들(이웃)을 보고 예측하는 방식이다.
주위에 바라볼 샘플의 개수 늘리기
- 무조건 도미
#샘플개수 늘리는 방법 (n_neighbors라는 매개변수를 이용해서 늘리기)
#49개는 샘플의 전체 개수와 동일하므로 전체 샘플을 다 바라보게 된다
#그래서 전체 샘플의 다수는 다 도미이기에 무조건 도미가 나올 수 밖에 없음
kn49 = KNeightborsClassifier(n_neighbors=49)
kn49.fit(fish_data, fish_target_
kn49.score(fish_data, fish_target)
#결과값
0.7142857142857143
#도미의 수를 전체로 나눈 경우
print(35/49)
#결과값
0.7142857142857143
'STUDYING > 머신러닝&딥러닝' 카테고리의 다른 글
5강 : 데이터 전처리 (0) | 2021.07.14 |
---|---|
4강 : 훈련 세트와 테스트 세트 (0) | 2021.07.14 |
2강 : colab 사용하기 (0) | 2021.07.14 |
1강 : 인공머신? 머신러닝? 딥러닝? (0) | 2021.07.14 |
[WEEK1] 혼자서 공부하는 머신러닝 + 딥러닝 1주차 (0) | 2021.07.11 |