Python을 이용한 차원 축소 실습 (1)
우수과제 1 : 최혜빈
1. PCA의 과정
import numpy as np
import numpy.linalg as lin
import matplotlib.pyplot as plt
import pandas as pd
import random
# 기본 모듈들을 불러와 줍니다x1 = [95, 91, 66, 94, 68, 63, 12, 73, 93, 51, 13, 70, 63, 63, 97, 56, 67, 96, 75, 6]
x2 = [56, 27, 25, 1, 9, 80, 92, 69, 6, 25, 83, 82, 54, 97, 66, 93, 76, 59, 94, 9]
x3 = [57, 34, 9, 79, 4, 77, 100, 42, 6, 96, 61, 66, 9, 25, 84, 46, 16, 63, 53, 30]
# 설명변수 x1, x2, x3의 값이 이렇게 있네요X = np.stack((x1,x2,x3),axis=0)
# 설명변수들을 하나의 행렬로 만들어 줍니다X = pd.DataFrame(X.T,columns=['x1','x2','x3'])Xx1
x2
x3
0
95
56
57
1
91
27
34
2
66
25
9
3
94
1
79
4
68
9
4
5
63
80
77
6
12
92
100
7
73
69
42
8
93
6
6
9
51
25
96
10
13
83
61
11
70
82
66
12
63
54
9
13
63
97
25
14
97
66
84
15
56
93
46
16
67
76
16
17
96
59
63
18
75
94
53
19
6
9
30
먼저 PCA를 시작하기 전에 항상!!!!!! 데이터를 scaling 해주어야 해요
를 참고하시면 도움이 될거에요
2. 공분산 행렬 구하기
를 참고하면 도움이 됩니다.
3. 고유값과 고유벡터 구하기
4. 고유값 분해의 곱으로 원래 공분산 행렬을 구하
를 참고해서 행렬끼리 곱하시면 됩니다.
5. 고유 벡터 축으로 값을 변환
2. PCA 구현
3. Sklearn과 비교
4. MNIST data에 적용
pixel0
pixel1
pixel2
pixel3
pixel4
pixel5
pixel6
pixel7
pixel8
pixel9
...
pixel774
pixel775
pixel776
pixel777
pixel778
pixel779
pixel780
pixel781
pixel782
pixel783
0
0
0
0
0
0
0
0
0
0
0
...
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
...
0
0
0
0
0
0
0
0
0
0
2
0
0
0
0
0
0
0
0
0
0
...
0
0
0
0
0
0
0
0
0
0
3
0
0
0
0
0
0
0
0
0
0
...
0
0
0
0
0
0
0
0
0
0
4
0
0
0
0
0
0
0
0
0
0
...
0
0
0
0
0
0
0
0
0
0
ML 기법 적용
train_test_split을 이용해 train test 비율을 0.8, 0.2로 분리하기
PCA를 이용하여 mnist 차원축소 후 학습
먼저 주성분 개수를 정하기 위해
Elbow point : 곡선의 기울기가 급격히 감소하는 지점
Kaiser’s Rule : 고유값 1 이상의 주성분들
누적설명률이 70%~80% 이상인 지 이 세가지 확인!


먼저 randomforest 모델을 사용했습니다.
SVM모델
Last updated
Was this helpful?