- 사이킷런 패키지를 이용하려면 각 특성의 리스트를 세로 방향으로 늘어뜨린 2차원 리스트를 만들어야한다.
사이킷런은 입력데이터 배열이 행: 샘플, 열: 특성으로 구성되어 있다.
[[32, 34],
[34, 33],
...
[36, 44]]
이는 reshape(-1, 1)로 리스트를 2차원 배열로 바꿔줄 수 있다.
- zip() 함수 : 나열된 리스트에서 원소를 하나씩 꺼내주는 함수
👇🏻 1차원 배열을 2차원 리스트로 반환하기 👇🏻
fish_data = [[ l,w ] for l,w in zip(length, weight)]
→ 여기서 length와 weight가 1차원 배열, fish_data는 2차원 배열
→ predict에 값을 넣어줄때도, kn.predict([[ 30, 600 ]]) 이런식으로 리스트의 리스트(2차원배열)로 넣어주어야한다.
- column_stack() 함수 → 튜플 형식으로 전달
: 전달받은 리스트를 일렬로 세운 다음 차례대로 나란히 연결한다. (어떻게 보면 열추가 느낌..?)
np.column_stack((fish_length, fish_weight))
- concatenate() 함수 : 첫번째 차원을 따라 배열을 연결하는 함수
fish_target = np.concatenat((np.ones(35), np.zeros(14)))
- 무작위 배열
# random state와 같은 것인듯
np.random.seed(42)
# arrange 사용하면 1씩증가하는 시리즈를 만든다.
index = np.arange(49)
# shuffle함수는 주어진 배열을 무작위로 섞음
np.random.shuffle(index)
- train_set, test_set 나누기 라이브러리
from sklearn.model_selection import train_test_split
train_input, test_input, train_target, test_target
= train_test_split(fish_data, fish_target,
stratify=fish_target, random_state=42)
- 여기서 stratify 매개변수에 타겟 데이터를 전달하면 클래스 비율에 맞게 데이터를 나눈다. (샘플링 편향 방지!!!)