
🟣 넘파이 'column_stack()' 함수
✔︎ column_stack() : 전달받은 리스트를 일렬로 세운 다음 차례대로 나란히 연결한다.

✔︎ 연결할 리스트는 파이썬 튜플로 전달한다.
🟣 튜플(tuple)
✔︎ 리스트와 비슷하다. --> 리스트처럼 원소에 순서가 있다.
✔︎ 한 번 만들어진 튜플은 수정할 수 없다.
✔︎ 튜플을 사용하면 함수로 전달한 값이 바뀌지 않기에 매개변수 값으로 많이 사용한다.
✔︎ 넘파이 배열의 크기는 파이썬의 튜플로 표현한다.
✔︎ 튜플의 원소가 하나면 원소 뒤에 콤마를 추가한다.
🟣 넘파이 'np.ones()' , 'np.zeros()'
✔︎ 각각 원하는 개수의 1과 0을 채운 배열을 만든다.

🟣 넘파이 'np.concatenate()'
✔︎ 배열들을 하나로 합치다.(연결하다.)
✔︎ numpy.ndarray를 자유롭게 합칠 수 있다.

🟣 사이킷런으로 훈련 세트와 테스트 세트 나누기 - 'train_test_split()'함수
✔︎ train_test_split() : 전달되는 리스트나 배열을 비율에 맞게 훈련 세트와 테스트 세트로 나눈다.
✔︎ train_test_split() 함수는 기본적으로 25%를 테스트 세트로 떼어낸다.

✔︎ 입력 데이터 = train_input, test_input
✔︎ 타깃 데이터 = train_target, test_target
✔︎ 랜덤 시드 = 42

✔︎ 훈련 데이터, 테스트 데이터 = 36, 13
✔︎ 입력 데이터 = 2개의 열이 있는 2차원 배열
✔︎ 타깃 데이터 = 1차원 배열
🟣 train_test_split() 메소드의 'stratify'파라미터
✔︎ 분류 문제를 다룰 때 매우 중요하게 활용되는 파라미터 값
✔︎ stratify 값으로는 target 값을 지정한다.
✔︎ stratify값을 target 값으로 지정해주면 target의 class 비율을 유지 한 채로 데이터셋을 split 하게 된다.
✔︎ 만약 이 옵션을 지정해주지 않고 classification 문제를 다룬다면, 성능의 차이가 많이 날 수 있다.

✔︎ 원래 데이터 비율 = 2.5 : 1 / 테스트 세트의 비율 = 3.3: 1
✔︎ 샘플이 골고루 섞이지 않음. --> 샘플링 편향이 나타남.
✔︎ stratify을 이용하여 클래스 비율에 맞게 데이터를 나눈다. --> stratify 파라미터 이용
🟣 테스트 데이터로 모델 평가하기
✔︎ (상황)
세모 마크의 데이터의 예측값은 1이었다. 하지만 결과는 0이 나온 상황이다.
왜 1이 아닌 0이 나온 것인가


✔︎ 'kneighbors()' 메소드를 이용하여 가장 가까운 이웃을 찾는다.(기본값 = 5)
✔︎ 이를 그래프에 초록색 다이아 모양으로 표시한다.
✔︎ 그 결과 초록색 다이아 모양을 타깃 데이터로 1이 하나 0이 네개인 것을 확인 가능하다.
✔︎ 기준이 없기에 기준이 필요하다!
🟣 기준 맞추기
✔︎ 위의 문제에 대한 원인
: x축은 범위가 좁고 y축은 범위가 넓다.
--> y축으로 조금만 멀어져도 거리가 아주 큰 값으로 계산된다.
🟣 범위 지정하기 : 'xlim() , ylim()'
✔︎ xlim() , ylim() : 맷플롯립에서 x축 범위와 y축 범위를 지정

✔︎ x축, y축 범위을 동일하게 맞춤.
🟣 스케일(scale)
✔︎ 특성의 단위가 다르다. = 스케일이 다르다.
✔︎ 데이터를 표현하는 기준이 다르면 알고리즘이 올바르게 예측할 수 없다. --> 해결법) 데이터 전처리(data preprocessing)
🟣 데이터 전처리(data preprocessing) : 표준점수(standard score)(z 점수)
✔︎ 표준점수
: 각 특성값이 평균에서 표준편차의 몇 배만큼 떨어져 있는지를 나타낸다.
: 실제 특성값이 크기와 상관없이 동일한 조건으로 비교할 수 있다.

✔︎ np.mean() : 평균 계산
✔︎ np.std() : 표준편차 계산
✔︎ 특성마다 값의 스케일이 다르므로 평균과 표준편차는 각 특성별로 계산해야 한다.
✔︎ axis = 0 : 행을 따라 각 열의 통계 값을 계산한다.

✔︎ 표준점수로 변환
🟣 브로드캐스팅(broadcasting)
✔︎ 브로드캐스팅
: 조건을 만족하면 모양이 다른 배열 간의 연산을 가능하게 해 주는 기능이다.
: 크기가 다른 넘파이 배열에서 자동으로 사칙연산을 모든 행이나 열로 확장하여 수행하는 기능이다.
✔︎ 넘파이 배열 사이에서 일어난다.
🟣 전처리 데이터로 모델 훈련하기
✔︎ 특성의 단위가 다르다. = 스케일이 다르다.

✔︎ 훈련 세트의 값의 스케일을 변환해주었기에 범위가 달라졌다.
✔︎ 따라서 샘플 데이터(세모 모양 마크) 또한 스케일을 변환해주어야 한다.

✔︎ 이 그래프는 표준편차로 변환하기 전의 산점도와 거의 동일하다. 다른 점은 축의 범위가 변했다는 것이다.
✔︎ 즉, 훈련 데이터의 두 특성이 비슷한 범위를 차지하고 있다.

✔︎ 데이터 훈련시키기
🟣 모델 평가하기
✔︎ !주의! : 훈련 세트의 기준으로 테스트 세트를 변환해야 같은 스케일로 산점도를 그릴 수 있다.

훈련 세트를 변환한 방식 그대로 테스트 세트를 변환해야한다.
'📁 ETC > 혼공머신' 카테고리의 다른 글
| REVIEW) 회귀분석 (0) | 2024.07.10 |
|---|---|
| REVIEW) 회귀 알고리즘과 모델 규제 (1) | 2024.03.22 |
| REVIEW) Numpy_넘파이 (0) | 2024.03.17 |
| REVIEW) KNN (0) | 2024.03.16 |