일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- 정확도
- 회귀모델
- 알고리즘기초
- 데이터
- sklearn
- tensorflow
- MariaDB
- HeidiSQL
- Deep Learning
- 크롤링(crawling)
- 해석
- pythone
- 데이터 가공
- keras
- python
- 훈련
- 예측
- pandas
- SQL예제
- 데이터 수집
- 데이터전처리
- 시각화
- 파이썬
- 데이터 분석
- 딥러닝
- 선형회기모델
- 머신러닝
- 데이터베이스
- Database
- python기초
- Today
- Total
코딩헤딩
[ML(머신러닝)] 머신러닝 기초 3-2 <정규화> 본문
https://coding-heading.tistory.com/84
[ML(머신러닝)] 머신러닝 기초 3-2 <훈련 및 테스트 분류(train_test_split)>
https://coding-heading.tistory.com/83 [ML(머신러닝)] 머신러닝 기초 3-1 - 정의된 변수 이름은 없음 - 훈련데이터 : 훈련(fit)에 사용되는 데이터 : (훈련 독립변수) train_input, train-x, X_train : (훈련 종속변수) tra
coding-heading.tistory.com
위 글과 이어집니다.
<현재까지 수행 순서>
1. 데이터 수집
2. 독립변수 2차원과 종속변수 1차원 데이터로 취합
3. 훈련, 검증, 테스트 데이터로 섞으면서 분리 -----------3번 후 정규화 진----------
4. 훈련, 검증, 테스트 데이터 중에 독립변수에 대해서만 정규화 전처리 수행
------------------▲ 데이터 전처리---------------------
------------------▼ 항상 동일---------------------
5. 훈련모델 생성
6. 모델 훈련 시키기
7. 훈련 및 검증 정확도 확인
8. 하이퍼파라미터 튜닝
9. 예측
앞 글에서 가장 가까운 이웃 5개를 보여주는 산점도의 각 축의 스케일이 다르기 때문에
이 문제를 해결하기 위해서는 정규화 작업이 필요했다.
* 정규화 -> 표준점수화 하기
- 표준점수 = (각 데이터 - 데이터 전체 평균) / 데이터 전체 표준편차
- 표준점수 : 각 데이터가 원점(0)에서 표준편차만큼 얼마나 떨어져 있는지를 나타내는 값
* 데이터 전체 평균 구하기 / 데이터 전체 표준편차 구하기
mean = np.mean(train_input, axis=0)
mean
std = np.std(train_input, axis=0)
std
결과
mean : array([ 27.02352941, 445.60294118])
std : array([ 10.0816099 , 319.21122132])
* 정규화(표준점수) 처리하기
train_scaled = (train_input - mean) /std
train_scaled
* 이웃을 포함하여 산정도 그리기
plt.scatter(train_scaled[:,0], train_scaled[:,1], c="red", label="bream")
plt.scatter(new[0], new[1], marker="^", c="green", label="pred")
plt.scatter(train_scaled[indexes, 0], train_scaled[indexes, 1], c="blue", label="nei")
plt.xlabel("lenght")
plt.ylabel("weight")
plt.legend()
plt.show()
* 모델 생성하기 / 모델 훈련하기
kn = KNeighborsClassifier()
kn.fit(train_scaled, train_target)
* 훈련 데이터 검증하기
train_score = kn.score(train_scaled, train_target)
train_score
* 테스트 데이터로 검증하기
test_scaled = (test_input - mean) / std
test_score = kn.score(test_scaled, test_target)
test_score
결과 : 1.0
- 검증 또는 테스트 데이터를 스케일링 정규화 처리
- 이떄는 훈련에서 사용한 mean과 std를 그대로 사용해야 함
* 예측하기
kn.predict([new])
결과 : array([1.])
* 예측에 사용된 이웃 확인하고 시각화 / 이웃을 포함하여 산정도 그리기
dist, indexes = kn.kneighbors([new])
plt.scatter(train_scaled[:,0], train_scaled[:,1], c="red", label="bream")
plt.scatter(new[0], new[1], marker="^", c="green", label="pred")
plt.scatter(train_scaled[indexes, 0], train_scaled[indexes, 1], c="blue", label="nei")
plt.xlabel("lenght")
plt.ylabel("weight")
plt.legend()
plt.show()