머신러닝/혼자공부하는 머신러닝+딥러닝

2-1. 훈련세트와 테스트세트

전거가감 2024. 1. 8. 14:37
반응형
반응형
# 훈련 데이터 준비
fish_length = [25.4, 26.3, 26.5, 29.0, 29.1, 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, 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]
fish_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, 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]

fish_data = [[l, w] for l, w in zip(fish_length, fish_weight)] # fish_length 와 fish_weight 2차원 리스트로 만들기
fish_target = [1]*35 + [0]*14

from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier()

print("fish_data[4] => ", fish_data[4])
 
print("fish_data[0:5] =>", fish_data[0:5])
 
print("fish_data[:5] =>", fish_data[:5])
 
print("fish_data[44:] =>", fish_data[44:])
 
# 훈련 세트로 입력값 총 0부터 34번째 인덱스까지 사용
train_input = fish_data[:35]

# 훈련 세트로 타겟값 총 0부터 34번째 인덱스까지 사용
train_target = fish_target[:35]

#테스트 세트로 입력값 중 35번째부터 마지막 인덱스까지 사용
test_input = fish_data[35:]

#테스트 세트로 타겟값 중 35번째부터 마지막 인덱스까지 사용
test_target = fish_target[35:]
 
kn.fit(train_input, train_target) # 도미로 학습하고
kn.score(test_input, test_target) # 빙어로 평가하니 0이 나오지
 
import numpy as np
input_arr = np.array(fish_data)
target_arr = np.array(fish_target)

print(input_arr) # 2차원 배열로 변경을 위한 numpy 라이브러리 사용
 
print(input_arr.shape) # 이 명령을 사용하면 (샘플 수, 특성 수)를 출력
 
print(input_arr.shape[1])
 
np.random.seed(42) # 랜덤값 발생을 위한 초기값 설정, 이건 빼는게 맞음
index = np.arange(49) # 49까지 인덱스 생성
#print(index)
np.random.shuffle(index) # 49개 인덱스 섞기
#print(index)

print(input_arr[[1,3]]) # 1번과 3번의 인덱스의 값 출력

train_input = input_arr[index[:35]]   # 0~35번까지의 랜덤한 인덱스로 input_arr에서 꺼내서 train_input에 넣기
train_target = target_arr[index[:35]] # 0~35번까지의 랜덤한 인덱스로 target_arr에서 꺼내서 train_target에 넣기
#print(input_arr[13], train_input[0])
 
test_input = input_arr[index[35:]]   # 35번부터 끝까지의 랜덤한 인덱스로 input_arr에서 꺼내서 test_input에 넣기
test_target = target_arr[index[35:]] # 35번부터 끝까지의 랜덤한 인덱스로 input_arr에서 꺼내서 test_input에 넣기
 
# 섞인값 출력해보기
import matplotlib.pyplot as plt
plt.scatter(train_input[:,0], train_input[:,1]) # train_input[:, 0] => train_input에서 0번째 값 전체
plt.scatter(test_input[:,0], test_input[:,1])   # test_input[:, 0] => train_input에서 0번째 값 전체
plt.xlabel('length')
plt.ylabel('weight')
plt.show() # 파란색이 훈련 세트, 주황색이 평가 세트
 
kn.fit(train_input, train_target)
kn.score(test_input, test_target)
 
kn.predict(test_input) # 정답 예측
 
print(test_target)
반응형