[주피터를 이용한 산점도 그리기]
1. 과학 계산용 그래프를 그리는 패키지인 "matpltlib"을 추가한다.
import matplotlib.pyplot as plt
2. 해당 패키지에있는 scatter을 이용하여 산점도를 그린다.
[머신러닝 프로그램 만들기]
1. "k-최근접 이웃 알고리즘"을 사용해 도미와 빙어 데이터를 구분하기
=> 최근접 이웃 알고리즘이란 새로운 데이터가 들어왔을때 일정거리안에 있는 기존의 데이터에서 몇개가 속하는지 계산하여 더 많은 데이터를 가진 그룹에 속하게 하는 알고리즘이다.
참고 블로그 : https://m.blog.naver.com/bestinall/221760380344
사이킷런으로 훈련세트와 테스트 세트 나누기(24.07.31 추가)
1. import해주기
from sklearn.model_selection import train_test_split
2. (매우 중요) 훈련 데이터와 테스트 데이터를 자동으로 나누어준다.+자동으로 섞어준다.\
train_input, test_input, train_target, test_target = train_test_split(
fish_data, fish_target, random_state=42)
2-1 위 코드는 우연히 잘 안섞일수도 있는 문제가 있다. 따라서 다음 코드를 사용하여 골고루 섞어준다.
train_input, test_input, train_target, test_target = train_test_split(
fish_data, fish_target, stratify=fish_target, random_state=42)
k-nn 알고리즘 >> 다른사람이 이미 잘 짜둠>> k-nn()함수 사용하면 매우 유용
1. k-nn 객체를 만들어서 그대로 보내서 사용하기(A알고리즘, B알고리즘, C알고리즘)
2. 훈련 (traing) : fitting
3. 평가:score
4. 예측:predict
이제 사이킷런 패키지에서 k-최근접 이웃 알고리즘을 구현한 클래스인 KNeighborsClassifier를 임포트한다.
! pip install scikit-learn
from sklearn.neighbors import KNeighborsClassifier
1. k-nn 알고리즘을 사용하기 위한 객체 생성
kn=KNeighborsClassifier()#객체 생성
2. 훈련
kn.fit(fish_data, fish_target)#훈련
3. 평가(안해도 good)
kn.score(fish_data)#평가하기 << 원래는 다른 데이터를 주어야하지만 여기서는 원본 데이터를 주었음
0~1 사이라 만점이 1.0이다
4. 예측 predict
kn.predict([[30,600]]) #길이 30, 무게가 600은 무엇일까요?
array[1]은 무엇인가?
=> kn.fit(fish_data, fish_target)#훈련 시킬때 도미는 1, 빙어는 0으로 가정했기때문에
array[1]은 도미이다.
총 코드
import matplotlib.pyplot as plt #matplotlib의 pylot 함수를 plt로 줄여서 사용
from sklearn.neighbors import KNeighborsClassifier
"데이터 준비하기"
#도미 데이터 추가#
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 #목표 데이터 생성 (앞35개는 도미, 뒤 14개는 빙어)
kn=KNeighborsClassifier()#객체 생성
kn.fit(fish_data, fish_target)#훈련
kn.score(fish_data,fish_target)
kn.predict([[30,600]])
plt.scatter(bream_length,bream_weight)
plt.scatter(smelt_length,smelt_weight)
plt.scatter(30,600,marker="*")
plt.xlabel('lenght')
plt.ylabel('weight')
plt.show()
훈련세트와 테스트세트
테스트 세트 : 평가에 사용하는 데이터
훈련 세트 : 훈련에 사용하는 데이터
행렬의 범위에 대한 조건
1번 전체
2번 [0,0]은 제일 왼쪽 위다
3번 [0,1]은 제일 오른쪽 위다
다음 9개를 전부 이해했으면 끝이다
파랑-훈련 세트
주황-테스트 세트
표준점수=원점수-평균점수 / 표준편차
[문법 공부]
1. Numpy 사용하여 제작
2. pandas 의 활용
'SW 교육' 카테고리의 다른 글
[2024.08.05] 데이터 분석 (0) | 2024.08.05 |
---|---|
[2024.08.02] 특성 공학과 규제 (0) | 2024.08.02 |
[2024.08.01] K-최근접 이웃 회귀, 선형 회귀, 다항 회귀, 다중 회귀 (0) | 2024.08.01 |
[2024.07.31] Numpy를 이용한 배열의 처리 , 데이터 전처리 (0) | 2024.07.31 |
[2024.07.29] 주피터 노트북 사용환경 만들기 (0) | 2024.07.29 |