kang's study
2일차 : 올바른 훈련 데이터 본문
데이터 분리
머신러닝
1) 지도학습 :
입력과 타겟이 있는 데이터를 갖고 학습
★ 사이킷런은 데이터를 행:샘플, 열:특성으로 구성할 것으로 기대한다.
2) 비지도학습 :
입력 있는 데이터만 갖고 학습
3) 강화학습 :
행동의 결과를 개선해 나가는 학습 (ex. 알파고) -> 핸즈온 머신러닝
데이터 준비
In [2]:
# 도미 데이터
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, 972.0, 950.0]
In [3]:
# 빙어 데이터
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]
In [4]:
length = bream_length + smelt_length
weight = bream_weight + smelt_weight
In [5]:
fish_data = [[l,w] for l, w in zip(length, weight)]
fish_target = [1]*35 + [0]*14
print(fish_data)
print(fish_target)
훈련데이터와 테스트데이터
In [6]:
train_input = fish_data[:35]
train_target = fish_target[:35]
test_input = fish_data[35:]
test_target = fish_target[35:]
테스트 세트에서 평가하기
In [7]:
from sklearn.neighbors import KNeighborsClassifier
kn = KNeighborsClassifier()
kn = kn.fit(train_input, train_target) # 훈련
kn.score(test_input, test_target) # 예측
Out[7]:
샘플링 편향 문제
올바른 훈련 데이터를 위해 도미와 빙어가 섞여 있어야 한다.
벡터에서 원소의 개수를 차원이라 부르거나
배열에서 각 축을 차원이라고 부르기도 한다. 혼동하지 말자

In [8]:
import numpy as np
input_arr = np.array(fish_data)
target_arr = np.array(fish_target)
print(input_arr[:5])
print(input_arr.shape) # (샘플수, 특성수)
In [9]:
np.random.seed(1234) # for tutorial : radom 난수 고정
index = np.arange(49)
np.random.shuffle(index)
print(index)
In [10]:
train_input = input_arr[index[:35]]
train_target = target_arr[index[:35]]
test_input = input_arr[index[35:]]
test_target = target_arr[index[35:]]
In [11]:
import matplotlib.pyplot as plt
plt.scatter(train_input[:,0], train_input[:,1])
# [:,0]은 모두 열의 첫번째 성분(length), [:,1]은 두번째 성분(weight)
plt.scatter(test_input[:,0], test_input[:,1])
plt.xlabel('length')
plt.ylabel('weight')
plt.show()
In [12]:
kn = kn.fit(train_input, train_target) # 모델
kn.score(test_input, test_target)
Out[12]:
출처 : 박해선, 『혼자공부하는머신러닝+딥러닝』, 한빛미디어(2021), p66-83
'[학습 공간] > [혼공머신러닝]' 카테고리의 다른 글
6일차 ① : 다중회귀_특성공학 (0) | 2022.03.02 |
---|---|
5일차 : 선형회귀와 다항회귀 (0) | 2022.03.02 |
4일차 : k-최근접 이웃 회귀 (0) | 2022.03.02 |
3일차 : 데이터 전처리(Data preprocessing) (0) | 2022.03.02 |
1일차 : 머신러닝 시작 (0) | 2022.03.02 |
Comments